STM32F103学习2:使用J-LINK在MDK中烧录程序
在上一篇博文中,使用了USB转串口的方式通过串口烧录了程序。但是在实际调试程序过程中,从调试效率的角度考虑,往往会用到JTAG接口在线烧录和调试程序。
一、首先,我们安装一下J-LINK v8的驱动,并设置好MDK中使用J-LINK的选项
1.下载并安装j-link 4.34版本的驱动程序,4.5以上版本在淘宝上买到的“兼容版”j-link上无法使用。
2.下面这篇文章详细描述了,在MDK中使用J-LINK烧录程序和debug设置哪些必要的选项。在这里不复述了
http://blog.csdn.net/zhzht19861011/article/details/5924218
3.连接J-LINK与开发板后,上电,在MDK中单击LOAD按钮烧录程序
4.出现了下载失败的问题,提示是:"No Cortex-M Device found in JTAG chain"或“Emulator has been changed or re-enumerated!”
根据关键词找到这篇文章:
http://no001.blog.51cto.com/1142339/857117
发现有可能是程序中关闭了JTAG管脚,卖家在说明文档中也提到了这个问题
在程序中屏蔽了这句后,先使用串口将程序烧进芯片。再用JTAG烧录程序就成功了。
为什么会这样呢?我们一起看一下改动过的这句:
// AFIO->MAPR = (0x00FFFFFF & AFIO->MAPR)|0x04000000; //关闭JTAG
在stm32f103的器件手册中第83页查到AFIO->MAPR为复用重映射和调试I/O配置寄存器,
赋值0x040000000后即为100 关闭二者
而屏蔽这句之后,系统复位后默认可以开启JTAG模式
下一篇博文将会尝试控制的I/O管脚和stm32库文件等,继续熟悉器件