你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 USB HOST PRINTER 类枚举成功,发送数据失败,求教

[复制链接]
hrg4daf34 提问时间:2019-2-13 18:38 /
我用cubeMX 生成了一个USB HOST CDC 类工程,然后移植成打印机类,连接打印机后枚举能成功(用DEBUG调试信息和USB协议分析仪查看结果)。但是使用
if(Appli_state == APPLICATION_READY)
   USBH_CDC_Transmit(&hUsbHostFS, PrintBuff, len);
发送数据时,DUBUG 跟踪发现运行到如下语句(红色)时,程序进入到HardFault_Handle(蓝色)处死循环。请教高人是什么原因造成了硬故障?怎么解决?
硬件使用的是阿波罗F7 开发板。


HAL_StatusTypeDef USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src, uint8_t ch_ep_num, uint16_t len, uint8_t dma)
{
  uint32_t USBx_BASE = (uint32_t)USBx;
  uint32_t *pSrc = (uint32_t *)src;
  uint32_t count32b, i;

  if (dma == 0U)
  {
    count32b =  ((uint32_t)len + 3U) / 4U;
    for (i = 0U; i < count32b; i++)
    {
      USBx_DFIFO((uint32_t)ch_ep_num) = *((__packed uint32_t *)pSrc);
      pSrc++;
    }
  }


void  HardFault_Handler(void)
{
  while (1)
  {

   
  }
}






收藏 评论3 发布时间:2019-2-13 18:38

举报

3个回答
hrg4daf34 回答时间:2019-2-18 10:37:56
找到原因了,分享给大家:是因为变量 PrintBuff 没有做内存对齐。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

hrg4daf34 回答时间:2019-2-16 10:45:02
经试验,把MDK优化等级设为0,打印数据正常了。但是还是不知道原因,请大家指教。
kuailebing 回答时间:2020-3-26 21:23:20
感谢!我搞了两天,代码重新改了3遍,HID,CUSTOM HID, CDC, MSC都进行了重写都不行,结果和你说的一模一样对齐问题,实在感谢你的分享!
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版