STM32
直播中

倪山骋

7年用户 1010经验值
私信 关注
[问答]

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


void  HardFault_Handler(void)
{
  while (1)
  {

   
  }
}






回帖(1)

康根

2024-4-15 14:57:44
是因为变量 PrintBuff 没有做内存对齐。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分