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)
{
}
}
找到原因了,分享给大家:是因为变量 PrintBuff 没有做内存对齐。 经试验,把MDK优化等级设为0,打印数据正常了。但是还是不知道原因,请大家指教。 :handshake感谢!我搞了两天,代码重新改了3遍,HID,CUSTOM HID, CDC, MSC都进行了重写都不行,结果和你说的一模一样对齐问题:'(,实在感谢你的分享!
页:
[1]