打印
[STM32F1]

USB接口插上USB-HID设备时,从BOOT跳转后卡死的问题。

[复制链接]
539|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cry1109|  楼主 | 2020-5-18 09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        cubeMX配置的USB-Host+FreeRTOS。        如果USB接口空闲(什么都不接)的话,可以正常跳转,跳转后再插入hid设备,也可以正常通信。如果先把hid设备插入板子上的usb接口,然后再上电,虽然从boot成功跳转至app,而且FreeRTOS都已经初始化成功了,但是在开启任务调度后,马上卡死。如果不加boot,hid设备插入板子上的usb接口再上电启动后,就不会卡死。
        求大佬支支招,搞了几天,都没能解决这个问题。



使用特权

评论回复
沙发
cry1109|  楼主 | 2020-5-18 09:35 | 只看该作者
boot里面usb-hos为msc类。尝试过增大usb任务堆栈以及优先级,依然会卡死。

使用特权

评论回复
板凳
cry1109|  楼主 | 2020-5-19 13:30 | 只看该作者
本帖最后由 cry1109 于 2020-5-19 13:47 编辑

问题已解决。
void USB_Disable(void)
{
    __HAL_RCC_USB_OTG_FS_CLK_DISABLE();
    HAL_NVIC_DisableIRQ(OTG_FS_IRQn);
}

void USB_Enable(void)
{
    __HAL_RCC_USB_OTG_FS_CLK_ENABLE();
    HAL_NVIC_EnableIRQ(OTG_FS_IRQn);
}
        MX_USB_HOST_Init();
        USB_Enable();
添加两个USB时钟、中断使能及关闭函数。在初始化FreeRTOS之前先调用USB_Disable()关闭USB时钟和中断;cubeMX配置的有个默认任务,在这个任务里初始化USB后再调用USB_Enable()使能USB时钟和中断,就不会卡死了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

172

帖子

3

粉丝