hrg4daf34 发表于 2019-2-13 18:38:33

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

我用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++;
    }
}


voidHardFault_Handler(void)
{
while (1)
{
   
}
}





hrg4daf34 发表于 2019-2-18 10:37:56

找到原因了,分享给大家:是因为变量 PrintBuff 没有做内存对齐。

hrg4daf34 发表于 2019-2-16 10:45:02

经试验,把MDK优化等级设为0,打印数据正常了。但是还是不知道原因,请大家指教。

kuailebing 发表于 2020-3-26 21:23:20

:handshake感谢!我搞了两天,代码重新改了3遍,HID,CUSTOM HID, CDC, MSC都进行了重写都不行,结果和你说的一模一样对齐问题:'(,实在感谢你的分享!
页: [1]
查看完整版本: STM32 USB HOST PRINTER 类枚举成功,发送数据失败,求教