我用cubeMX 生成了一个USB HOST CDC 类工程,然后移植成打印机类,连接打印机后枚举能成功(用DEBUG调试信息和USB协议分析仪查看结果)。但是使用
if(Appli_state == APPLICA
tiON_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)
{
}
}