
本人使用STM32F105R8开发一款带USB功能的仪表,遇到一个奇怪的现象。请教一下各位前辈。我是使用IAR,ST-link仿真。1、程序首次下载全速运行可以成功,USB成功识别并可以进行通信。 2、后停止运行重新下载再运行USB就识别不到了,程序停在USB中断中出不来。 3、随后再停止,重新下载运行就又可以。就是反复出现一次可以一次不行。4、程序中有个TIM5定时出发ADC转换的功能,如果关掉TIM5,则程序就都可以运行,不会出现上述情况。 这样的现象我一直想不通时哪里出问题。 请各位前辈指导下,谢谢! |
STM32F105 USB HID RCC設定
stm32 USB的CDC类传输掉数据
STM32F105 USB接收数据不断进入中断,出现“死机”现象
关于STM32CubeMX配置的USB例程电脑无法识别问题
STM32F407 USB-HS-OTG是否不外接PHY可以做虚拟串口?
如何做一个USB从机键盘用stm32f407
用STM32F4 Cube MX生成的USB Device C代码的BUG
USB Device + FatFS + SDIO 模拟U盘意外只读问题
USB Device + FatFS + SDIO 问题
STM32H7配置成USB DEVICE时,连接电脑时不进入中断
我USB中断是最高级别的,但是一次可以一次不行又该怎么解释咧?感觉像仿真导致的
仿真不会对程序本身造成影响,仿真有其自己的寄存器
然而我将下载进去不行的那次,产生的hex文件用ST Visual Programmer 下载是可以运行。说明程序本身应该是没有问题。
我认为不行的那次是因为没下载进去造成的。
或在调试低功耗模式的程序时,往往碰到重新下载程序失
败、调试器不能停止CPU运行等问题。
例如:定时器,DMA模块,ADC的连续转换模式等
这个问题的根源是:
调试器需要在RAM执行一段程序,对Flash进行擦写操作,如果不
停止这些自动运行的模块,它们会干扰程序在RAM中的执行,致
使下载失败。
低功耗是通过停止CPU的时钟而实现,JTAG调试是通过与CPU的
通信实现,停止了CPU的时钟致使调试器会失去与CPU的通信。
解决办法:
1. 退出调试状态时或main()开始时执行DeInit(),或
2. 下载程序或进入调试前,手工做硬件复位,或
3. 进入main()后,推迟启动自动运行的模块,或
4. 进入main()后,通过外设复位寄存器执行外设
复位并推迟启动相应外设