加载中
加载中
表情图片
评为精选
鼓励
加载中...
分享
加载中...
文件下载
加载中...
修改排序
加载中...
所有教程由网友发布,仅供参考,请谨慎采纳。科创不对教程的科学性、准确性、可靠性负责。
Keil5不复位调试+USB虚拟串口随笔
全桥整流2025/06/03原创 秋名山最速传说 IP:广东

前言:有时候会用到不复位调试功能,在这里记录一下,省得每次都要谷歌翻资料。使用的程序功能是USB虚拟串口上传数据。


正文:

1、USB功能依赖较为复杂,这里直接使用CubeMX生成初始化代码。使用48M内部RC时钟。

image.png

配置外设。

image.png

使用CubeMX生成的USB库,并选择虚拟串口。

image.png

还有些配置烧录口文件路径等操作都大同小异,这里就不写了。


2、生成代码&编写关键业务代码&编译烧录

C
...... #include "usbd_cdc_if.h" ...... uint8_t text[100]; int i=0; int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USB_DEVICE_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { sprintf((char *)text,"%d\r\n",i++); CDC_Transmit_FS(text,sizeof(text)); HAL_Delay(1); if(i==10000) while(1);//计数到10000就锁死 /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ }


3、更改烧录器配置,防止Debug破坏现场

image.png

image.png

image.png


4、进入Debug,我们可以看到代码行不允许打断点也不知道运行到哪行。

image.png

使用下面指令加载编译生成的.axf 文件到 MDK 中,该文件包含 bin 代码和调试相关的各种符号信息,以定位 C 源码,输入完滚动下鼠标刷新页面。

Plain Text
LOAD %L INCREMENTAL

image.png

现在和正常的Debug一样了点击Run然后Stop,可以看到程序停在了While(1)中且虚拟串口无输出,和预期现象一致,通过这个方法可以实现MCU不复位调试。

image.png


5、如果需要重新烧录要恢复Keil和烧录器的配置。


结束语:喵


END



来自:电子信息 / 电子技术动手实践:实验报导严肃内容:教程/课程
0
2
新版本公告
~~空空如也

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
全桥整流
进士 学者 机友 笔友
文章
33
回复
293
学术分
1
2020/01/26注册,1时45分前活动

秋名山最速传说! 邮箱:331924204@XXXXXX

主体类型:个人
所属领域:无
认证方式:身份证号
IP归属地:广东
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的