STM32
直播中

名士流

8年用户 868经验值
私信 关注
[问答]

STM32F103C8T6在bootloader使用了USB中断后,app区再使用usb中断,直接不会跳转到app区,怎么解决?

主控是STM32F103C8T6,程序是我移植的之前写bootloader和APP的代码,是使用的串口IAP(在串口上使用一点问题没有)。我现在遇到的情况是在boot loader使用了USB中断后,app区再使用usb中断,直接不会跳转到app区。请大家帮忙看看,给点建议!!
我查看了中断向量的设置问题,也没有找到出现问题的原因


最后我还做了个点灯,我只要在app这边不初始化USB的一些东西,都能正常跳转到app,灯也正常,只要初始化了USB就跳转失败



回帖(2)

段晓雯

2024-5-21 15:44:51
你在准备跳转前,加上这两行试试:
__HAL_RCC_USB_FORCE_RESET()  ;

__HAL_RCC_USB_RELEASE_RESET() ;
举报

杨帆

2024-5-21 17:18:17
根据您的描述,问题似乎出在使用USB中断时,导致无法正常跳转到APP区域。以下是一些建议来解决这个问题:

1. 确保在bootloader和APP区域都正确配置了中断向量表。检查两个区域的中断向量表是否正确设置,以确保在USB中断触发时能够正确跳转到相应的中断处理函数。

2. 在APP区域初始化USB时,确保正确地配置了USB寄存器和中断。检查USB时钟、电源、控制寄存器等是否正确设置。此外,确保在APP区域使用USB中断之前,已经正确地关闭了bootloader区域的USB中断。

3. 在APP区域使用USB中断之前,确保已经正确地初始化了USB设备。这包括配置USB控制器、设置端点、配置USB设备描述符等。

4. 检查APP区域的USB中断处理函数是否正确实现了。确保在中断处理函数中正确处理了USB事件,如数据传输、设备枚举等。

5. 如果可能,请尝试使用STM32CubeMX工具生成USB配置代码,以确保USB配置正确。

6. 在调试过程中,使用调试器逐步跟踪代码执行,检查在USB中断触发时,程序是否正确跳转到APP区域。同时,检查中断向量表和中断处理函数是否正确执行。

7. 如果问题仍然存在,可以尝试在APP区域使用其他类型的中断(如定时器中断、ADC中断等),以排除是否是USB中断本身的问题。

8. 最后,查阅STM32F103C8T6的数据手册和参考手册,以获取更多关于USB中断和配置的详细信息。

希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助您。
举报

更多回帖

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