你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 USB开发的疑问

[复制链接]
czcpx 提问时间:2015-7-28 16:10 /
本人使用STM32F105R8开发一款带USB功能的仪表,遇到一个奇怪的现象。请教一下各位前辈。我是使用IAR,ST-link仿真。1、程序首次下载全速运行可以成功,USB成功识别并可以进行通信。
2、后停止运行重新下载再运行USB就识别不到了,程序停在USB中断中出不来。
3、随后再停止,重新下载运行就又可以。就是反复出现一次可以一次不行。4、程序中有个TIM5定时出发ADC转换的功能,如果关掉TIM5,则程序就都可以运行,不会出现上述情况。
这样的现象我一直想不通时哪里出问题。
请各位前辈指导下,谢谢!

收藏 评论11 发布时间:2015-7-28 16:10

举报

11个回答
moyanming2013 回答时间:2015-7-28 16:20:10
感觉是中断的问题,又有相关的一些竞争条件
czcpx 回答时间:2015-7-28 16:45:23
moyanming2013 发表于 2015-7-28 16:20
感觉是中断的问题,又有相关的一些竞争条件

我USB中断是最高级别的,但是一次可以一次不行又该怎么解释咧?感觉像仿真导致的
moyanming2013 回答时间:2015-7-28 18:02:39
czcpx 发表于 2015-7-28 16:45
我USB中断是最高级别的,但是一次可以一次不行又该怎么解释咧?感觉像仿真导致的 ...

仿真不会对程序本身造成影响,仿真有其自己的寄存器
czcpx 回答时间:2015-7-29 08:52:34
moyanming2013 发表于 2015-7-28 18:02
仿真不会对程序本身造成影响,仿真有其自己的寄存器

然而我将下载进去不行的那次,产生的hex文件用ST Visual Programmer 下载是可以运行。说明程序本身应该是没有问题。
moyanming2013 回答时间:2015-7-29 10:50:57
czcpx 发表于 2015-7-29 08:52
然而我将下载进去不行的那次,产生的hex文件用ST Visual Programmer 下载是可以运行。说明程序本身应该是 ...

我认为不行的那次是因为没下载进去造成的。
deanquan 回答时间:2015-7-29 11:19:38
楼主可以查看下USB中断,深入看下停在哪个地方
夏明smile 回答时间:2015-7-29 11:46:56
同求!!
废鱼 回答时间:2015-7-29 15:42:29
楼主看一下USB中断产生的事件源。
chifen 回答时间:2015-7-29 17:08:38
帮顶               
czcpx 回答时间:2015-7-30 15:21:41
在调试那些可以在CPU不干预的时候自动运行的模块时,
或在调试低功耗模式的程序时,往往碰到重新下载程序失
败、调试器不能停止CPU运行等问题。
例如:定时器,DMA模块,ADC的连续转换模式等
这个问题的根源是:
调试器需要在RAM执行一段程序,对Flash进行擦写操作,如果不
停止这些自动运行的模块,它们会干扰程序在RAM中的执行,致
使下载失败。
低功耗是通过停止CPU的时钟而实现,JTAG调试是通过与CPU的
通信实现,停止了CPU的时钟致使调试器会失去与CPU的通信。
解决办法:
1. 退出调试状态时或main()开始时执行DeInit(),或
2. 下载程序或进入调试前,手工做硬件复位,或
3. 进入main()后,推迟启动自动运行的模块,或
4. 进入main()后,通过外设复位寄存器执行外设
复位并推迟启动相应外设
czcpx 回答时间:2015-7-30 15:23:48
感谢大家的回复。我查找资料,感觉可能跟这个有些关系,不过我写了TIM的DeInit,并没有什么卵用。然而找不到有USB的DeInit。问题还是没解决,郁闷。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版