目录
概述
1 问题描述
1.1 情况一
1.2 情况二
1.3 情况三
2 解决方法
2.1 认识Keil Mico Lib
2.2 使能Keil Mico Lib
3 验证
3.1 进入C程序Main验证
3.2 断点验证
3.3 上电重启验证
4 结论
笔者使用的验证代码下载地址:
stm32-freeRTOS-queue资源-CSDN文库
概述
本文主要介绍笔者在使用Keil V5.38 和 ST-Link V3 Debug 项目时,代码不能正常debug的问题,笔者记录了遇见的所有实验现象,并通过测试找到的解决这个问题方法,经过笔者验证,该方法可以完美解决这个问题。
1 问题描述
1.1 情况一
使用Keil V5.38 和 ST-Link V3 Debug STM32项目时,首次点击Debug按钮时,可以正常进入到启动代码中,当并没有跳到C代码的main函数中
再次点击Debug按钮,正常情况下,代码应该全速运行,但实际情况是,其并没有全速运行并停到断点位置:
1.2 情况二
断电重启板卡。发现板卡上的运行指示灯并没有闪烁,说明该代码并没有正常运行,查看串口log,也没有打印的log
1.3 情况三
连续点击3次debug按钮,代码可以全速运行起来
再次上电重启板卡,还是发现板卡上的运行指示灯并没有闪烁,说明该代码并没有正常运行,查看串口log,也没有打印的log。
2 解决方法
要解决这个问题,先认识一下Keil 软件中集成的Mico Lib库。
2.1 认识Keil Mico Lib
Keil Mico lib是一种嵌入式软件库,专门用于Keil MDK(Microcontroller Development Kit)开发环境。它提供了一套丰富的软件组件,用于开发和构建嵌入式系统。
Keil Mico lib提供了许多常用的功能模块,包括操作系统(例如RTOS),通信协议栈(如TCP/IP、USB、CAN),文件系统,设备驱动程序等。这些模块可以帮助开发者快速构建功能强大且高性能的嵌入式系统。
Keil Mico lib还提供了许多示例代码和应用案例,帮助开发者理解和使用库中的功能模块。开发者可以根据自己的需求选择并集成适当的模块,以便快速开发和部署嵌入式应用程序。
2.2 使能Keil Mico Lib
在Target面板下,勾选上MicroLib,这样就能使能Mico Lib,然后重新编译项目。验证其是否能正常Debug。
3 验证
3.1 进入C程序Main验证
编译代码,重新进行Debug,点击Debug按钮后,代码正常跳到main函数中
3.2 断点验证
在函数中添加断点,然后快速运行,验证其是否可以停在断点处:
3.3 上电重启验证
下载代码到板卡中,然后断开板卡电源。重新上电后,验证板卡中的代码是否能够正常运行。打卡串口终端,如果代码正常运行,终端上会打印log:
4 结论
点击debug不能运行时因为MicoLib库没有使能引起的,需要在Keil中使能该库,该库不但会影响调试功能,还导致即使重新上电,代码也不能正常工作的现象。其带来不好的后果还是相当严重的。应该在配置项目时,避免这样的问题。