今天特地实验了一下,对香主 和ijk的发言做个总结 碰到楼主这种问题,还有另外两种处理办法
如果把JTAG引脚映射到GPIO而不能使用JTAG的调试功能后,通常有三种方法可以恢复:
1)boot0=1,boot1=0:启动芯片内置的Bootloader或俗称的ISP功能,把Flash中的内容擦除即可恢复芯片的JTAG调试功能。 2)boot0=1,boot1=0:启动芯片内置的Bootloader或俗称的ISP功能(这句没有写错,确实同1),此时可以通过jtag继续下载程序并调试(IAR4.42+JLINK V6验证通过)。
3)把BOOT0和BOOT1引脚配置成从RAM启动,然后芯片可以在RAM中进行JTAG调试,这时在RAM中运行一个擦除Flash的程序,亦可恢复芯片的JTAG调试功能。不过使用这种办法,最好是事先准备好相应的擦除Flash的程序。
上述第2种方法比较简单。-------------------------------------------------------------------------------- 为防止发生楼主这种情况,建议可以如同ST提供的这个例子程序那样,单独设立一种机制能够打开或关闭JTAG引脚的功能。
比如一种比较好的方法是,在复位后程序刚刚运行起来的时候,等待一个用户的输入事件(如按下了一个按键),再来决定是否把JTAG引脚映射到GPIO(或反之取消先前的jtag映射);这样可以很方便的进行JTAG调试和实时调试之间的切换。 |