使用STM32Cube生成的工程在使用JLink下载调试时遇到的问题

最近在学习使用STM32Cube这种比较新的方法来写STM32程序,但是在刚开始学的时候就遇到了一个让自己很头疼的问题,在使用JLink下载程序时,程序能够烧写进板子,但是却出现一个莫名其妙的警告。

使用STM32Cube生成的工程在使用JLink下载调试时遇到的问题

并且在使用在线调试功能时,点击全速运行,出现一堆错误。

使用STM32Cube生成的工程在使用JLink下载调试时遇到的问题

 

在网上找了许多的解决方案,也有很多遇到类似问题的,但是试了以后都没有解决,最后自己一步一步的找原因,最后发现在STM32Cube生成的工程中的stm32f1xx_hal_msp.c文件中的第78行有这样一行代码。

/**DISABLE: JTAG-DP Disabled and SW-DP Disabled 
    */
  __HAL_AFIO_REMAP_SWJ_DISABLE();

这行代码将SW-DP关闭了,所以我们在仿真的时候程序运行到这里因为SW-DP被关闭,仿真功能就不能使用了,程序就会执行不下去,所以就报了上面那样的一堆错误。在把这行代码注释掉以后问题得到解决。

 

上面的解决方法是我一步步运行找出来的,归根结底的原因是在用Cube设计时,要将和SW-DP相关的引脚定义成仿真引脚,这样Cube生成的代码就会自动将上面的那行代码改掉。

使用STM32Cube生成的工程在使用JLink下载调试时遇到的问题

 

然后在Pinout里将SYS里面的Debug设置成Serial Wire,这样问题得到解决