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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版