平台环境
- win10 64位
- Keil MDK5
- STM32F103RB
问题描述
STM32CubeMX 生成STM32代码下载后,J-Link 无法调试
问题排查
- 硬件是正常的,晶振、BOOT引脚,电平正常
- 电源供电可靠。
- 下载之前的程序,是可以的。
- 因此,是生成的代码引起的。
开始怀疑
SWD引脚被占用?发现根本没有配置
最后,在检查代码时发现问题,原来没有配置SWD的情况下,把SWD给禁用了。
void HAL_MspInit(void)
{
/* USER CODE BEGIN MspInit 0 */
/* USER CODE END MspInit 0 */
__HAL_RCC_AFIO_CLK_ENABLE();
__HAL_RCC_PWR_CLK_ENABLE();
/* System interrupt init*/
/** DISABLE: JTAG-DP Disabled and SW-DP Disabled
*/
__HAL_AFIO_REMAP_SWJ_DISABLE(); /* 问题点:默认没配置SWD,禁用了! */
/* USER CODE BEGIN MspInit 1 */
/* USER CODE END MspInit 1 */
}
问题解决
1、配置下SWD的引脚。
2、注释掉 __HAL_AFIO_REMAP_SWJ_DISABLE();
总结:
1、认真分析问题,问题总有答案
2、做嵌入式软件,要时不时的注意基本经验的积累,提高效率。