STM32 USB开发停止运行后重新下载运行USB识别不到

2019-07-14 13:55发布

本人使用STM32F105R8开发一款带USB功能的仪表,遇到一个奇怪的现象。请教一下各位前辈。我是使用IAR,ST-link仿真。1、程序首次下载全速运行可以成功,USB成功识别并可以进行通信
2、后停止运行重新下载再运行USB就识别不到了,程序停在USB中断中出不来。
3、随后再停止,重新下载运行就又可以。就是反复出现一次可以一次不行。4、程序中有个tiM5定时出发ADC转换的功能,如果关掉TIM5,则程序就都可以运行,不会出现上述情况。
这样的现象我一直想不通时哪里出问题。
请各位前辈指导下,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
TOPCB
1楼-- · 2019-07-15 13:21
楼主看一下USB中断产生的事件源。
yuxiangxyz
2楼-- · 2019-07-15 17:49
帮顶               
阿南科院
3楼-- · 2019-07-15 19:06
在调试那些可以在CPU不干预的时候自动运行的模块时,
或在调试低功耗模式的程序时,往往碰到重新下载程序失
败、调试器不能停止CPU运行等问题。
例如:定时器,DMA模块,ADC的连续转换模式等
这个问题的根源是:
调试器需要在RAM执行一段程序,对Flash进行擦写操作,如果不
停止这些自动运行的模块,它们会干扰程序在RAM中的执行,致
使下载失败。
低功耗是通过停止CPU的时钟而实现,JTAG调试是通过与CPU的
通信实现,停止了CPU的时钟致使调试器会失去与CPU的通信。
解决办法:
1. 退出调试状态时或main()开始时执行DeInit(),或
2. 下载程序或进入调试前,手工做硬件复位,或
3. 进入main()后,推迟启动自动运行的模块,或
4. 进入main()后,通过外设复位寄存器执行外设
复位并推迟启动相应外设
阿南科院
4楼-- · 2019-07-15 20:26
 精彩回答 2  元偷偷看……

一周热门 更多>