所有教程由网友发布,仅供参考,请谨慎采纳。科创不对教程的科学性、准确性、可靠性负责。
Keil5不复位调试+USB虚拟串口随笔
全桥整流2025/06/03原创 秋名山最速传说 IP:广东

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


正文:

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

image.png

配置外设。

image.png

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

image.png

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


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

......
#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 源码,输入完滚动下鼠标刷新页面。

LOAD %L INCREMENTAL

image.png

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

image.png


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


结束语:喵


END



来自:电子信息 / 电子技术动手实践:实验报导严肃内容:教程/课程
0
2
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也

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

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

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

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

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的