wenyangzeng 发表于 2015-1-12 21:22:19

STM32F072-Nucleo开发板故障排除一例

本帖最后由 wenyangzeng 于 2015-1-12 22:37 编辑

    在使用STM32F072-Nucleo开发板调试过程中,原本好好的开发板,在下载完成一个项目并正常进入硬件仿真后,欲退出仿真环境修改代码时出现了问题,调试窗口出现一段提示:

                                    图1
   退出KEIL5后再重新进入KEIL5,发现已经无法再对开发板下载代码了:


                                    图2


                                 图3
    难道开发板就这样无疾而终?不死心,检查开发板相关跳线、USB连接线、USB驱动程序,均正常。
    换一个思路查原因:由于STM32F072-Nucleo开发板的代码下载和仿真是使用SWD的2线方式进行,查阅STM32F072数据手册可知,PA13是SWD-DIO,PA14是SWD-SCK,我在这个项目中凑巧使用PA14做输出功能用。这样当代码下载后进入仿真运行后,PA14便配置成输出模式,此时片子的SWD功能将失去。这时当欲退出仿真环境时就出现图1所示故障提示。紧接着当你想重新下载代码时,由于PA14的SCK功能丧失,就出现图2图3无法下载代码的故障提示了。可以判定:该开发板硬件方面无故障,只是SWD引脚被设置成输出所致,只要改回初始状态即可。问题是你现在已无法对它下载代码改回初值了。    经过不断摸索,终于找到解决方法,操作如下:


             图4

   重新编译项目,改回PA14的配置,在下载之前,按住开发板上的“RESET”键不放,在点击下载键的瞬间松开”RESET“键,代码终于顺利下载。由于STM32F072在nRESET从低电平恢复到高电平时,系统会有一段延时后才开始代码运行,此时PA14还处于初始状态,在这个期间仍有SWD功能。有惊无险:这片STM32F072-Nucleo开发板就这样起死回生了。(图4)
       在此将这段虚惊共享给各位,愿各位少走弯路。另外经过实验,PA13同样不要配置成输出模式,切记!除非你的板子代码下载后就出厂,刚好可以让客户无法从SWD端读代码了。









slotg 发表于 2015-1-12 21:47:05

不错的经验,感谢分享

dsjsjf 发表于 2015-1-12 21:59:25

经常这样玩

我们都是天才 发表于 2015-1-12 22:05:26

好人啊~楼主

zhous 发表于 2015-1-12 22:07:10

如果确实要用到PA13和PA14,可以在IO初始化前,加一小段延时就可以解决

lkl0305 发表于 2015-1-12 22:32:10

总结很到位啊

wenyangzeng 发表于 2015-1-12 22:39:25

zhous 发表于 2015-1-12 22:07
如果确实要用到PA13和PA14,可以在IO初始化前,加一小段延时就可以解决

回复5楼:加延时只能解决代码下载的问题,但是你如果要仿真就会挂了。

harvardx 发表于 2015-1-13 00:05:04

哈哈 好经验 想想芯片的设计者不会就这样把芯片完全由软件来决定功能了.所以总有个逻辑,充当后门, 让我们可以重新来过

党国特派员 发表于 2015-1-13 09:30:57

页: [1]
查看完整版本: STM32F072-Nucleo开发板故障排除一例