我想要使用H7的两个USB外设,分别使用USBX主机库读写U盘,使用USBX从机库CDC与电脑通信。
用安富莱V7板已经分别跑通。
但是为自己的板子使用stm32cubeMX生成模板工程时却无法正常运行,调度时会进硬件中断。(附件有cubeMX文件)
stm32_mx.zip
(6.04 KB, 下载次数: 1)
在自动生成的tx_application_define()函数中有如下代码段,分别对USBX主机系统和USBX设备系统进行初始化,注释掉其中之一,系统都可以正常运行并闪灯(我的测试任务)。但是二者的初始化API都调用,系统调度发生时就会进硬错误。
[C] 纯文本查看 复制代码 if (tx_byte_pool_create(&ux_host_app_byte_pool, "Ux HApp memory pool", ux_host_byte_pool_buffer, UX_HOST_APP_MEM_POOL_SIZE) != TX_SUCCESS)
{
/* USER CODE BEGIN UX_Byte_Pool_Error */
// 注意内存池名需要修改,host与device使用的内存池默认是同名的,会出现错误
/* USER CODE END UX_Byte_Pool_Error */
}
else
{
/* USER CODE BEGIN UX_HOST_Byte_Pool_Success */
/* USER CODE END UX_HOST_Byte_Pool_Success */
memory_ptr = (VOID *)&ux_host_app_byte_pool;
status = MX_USBX_Host_Init(memory_ptr);
if (status != UX_SUCCESS)
{
/* USER CODE BEGIN MX_USBX_Host_Init_Error */
while(1)
{
}
/* USER CODE END MX_USBX_Host_Init_Error */
}
/* USER CODE BEGIN MX_USBX_Host_Init_Success */
/* USER CODE END MX_USBX_Host_Init_Success */
}
if (tx_byte_pool_create(&ux_device_app_byte_pool, "Ux DApp memory pool", ux_device_byte_pool_buffer, UX_DEVICE_APP_MEM_POOL_SIZE) != TX_SUCCESS)
{
/* USER CODE BEGIN UX_Device_Byte_Pool_Error */
/* USER CODE END UX_Device_Byte_Pool_Error */
}
else
{
/* USER CODE BEGIN UX_Device_Byte_Pool_Success */
/* USER CODE END UX_Device_Byte_Pool_Success */
memory_ptr = (VOID *)&ux_device_app_byte_pool;
status = MX_USBX_Device_Init(memory_ptr);
if (status != UX_SUCCESS)
{
/* USER CODE BEGIN MX_USBX_Device_Init_Error */
while(1)
{
}
/* USER CODE END MX_USBX_Device_Init_Error */
}
/* USER CODE BEGIN MX_USBX_Device_Init_Success */
/* USER CODE END MX_USBX_Device_Init_Success */
}
|