当前位置: 首页 > news >正文

keil的debug功能

文章目录

  • 一.窗口介绍
  • 二.功能
    • 2.1 debug断点调试和窗口变量
    • 2.2 四个花括号功能
      • 2.2.1 进去函数和下一步功能
      • 2.2.2 跳过函数和跳过该行代码功能
      • 2.2.3 函数内部跳出功能
      • 2.2.4 执行到光标处
    • 2.3 查看内部寄存器

一.窗口介绍

在这里插入图片描述
在这里插入图片描述

二.功能

2.1 debug断点调试和窗口变量

先打开下图debug断点调试程序功能
在这里插入图片描述
在下面2张图中,之后我们可以给程序的某行设置断点
在这里插入图片描述
在这里插入图片描述
也可以把鼠标放到下图这里点击就可以设置
在这里插入图片描述
在下图中这个按键会执行到断点去,就是程序只执行到断点处,方便我们调试,就可以看程序有没有问题,如果执行了到断点处,程序没反应,则证明该程序出问题,则修改该处代码,假如在这个断点的上面设置了一个whle循环,如果没有触发某个条件,则会一直执行不到断点处,则证明上面的程序出现问题。
在这里插入图片描述
现在的程序如下列,,如果我断点打到b=1处,点击运行,则它一直没有运行到b=1,是因为按键没有按下。

uint8_t a;
uint8_t b;
int main(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_5);//按键初始化RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);GPIO_InitTypeDef GPIO_Key_InitStructure;GPIO_Key_InitStructure.GPIO_Mode=GPIO_Mode_IPD;GPIO_Key_InitStructure.GPIO_Pin=GPIO_Pin_4;GPIO_Key_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOE,&GPIO_Key_InitStructure);while(a!=1){if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)==0)//按键按下{Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)==0);Delay_ms(20);a=1;//按键按下a才赋值为1}}b=1;while (1){				}
}

此时看不见程序执行到哪里,程序一直在疯狂运行中,我们可以点击红圈右边的×,则可以看见执行到哪里了。
在这里插入图片描述
此时下图红圈箭头则代表程序运行到这里来
在这里插入图片描述
此时我按下按键则程序运行出去到断点处
在这里插入图片描述
此时我们打开一个观察窗口,它可以输入变量,我们可以观察变量结果,如下图,我们输入b,然后在一次打一个断点,则程序往下走以后则b会变成1,因为,运行到此行只是说上面的程序执行完了,这行并未执行,所以第一个断点b并不会等于1,需要在下面空一行,打个新断点才会执行,记得每次改程序需要出去重新编译改程序下载进去。
在这里插入图片描述
之后如果想变量显示十六进制就勾上下图选项,想显示十进制就取消下图选项
在这里插入图片描述

2.2 四个花括号功能

2.2.1 进去函数和下一步功能

在下图中,先使用断点执行程序到该处,然后在点击下图按钮,该按钮是进入该函数,此外如果此行程序是一个变量什么的,点这个就相对于执行到下一步。
在这里插入图片描述

2.2.2 跳过函数和跳过该行代码功能

在下面两张图中,就是跳过该函数功能,还是一样,先执行断点,之后在点击,如果是变量的话就是跳过此行代码。
在这里插入图片描述
在这里插入图片描述

2.2.3 函数内部跳出功能

在下面2张图中,我们进入了该函数内部,如果想跳出去,则可以点击该功能。
在这里插入图片描述
在这里插入图片描述

2.2.4 执行到光标处

先使用鼠标点到某行代码,然后点击该功能,则代码会运行到光标处。
在这里插入图片描述
在这里插入图片描述

2.3 查看内部寄存器

下面两张图片,使用该功能可以查看芯片内部某个功能寄存器的数值

在这里插入图片描述
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • shell脚本定时任务通知到钉钉
  • 学习threejs,绘制二维线
  • vue2项目实现国际化(若依框架示例)
  • Java 全栈开发中的最佳实践:从前端到后端的完整流程
  • Swing模拟银行柜台系统
  • Dify 中的讯飞星火平台工具源码分析
  • 【嵌入式硬件】续流二极管
  • 流量特征随机ua修改
  • Python 学习之虚拟环境
  • 一元运算符(自增自减)
  • 力扣P1706全排列问题 很好的引入暴力 递归 回溯 dfs
  • Docker 的安装部署与基本使用
  • 使用 from __future__ import annotations 语句来允许在类型注释中使用尚未定义的类名
  • 用 Pygame 实现一个乒乓球游戏
  • 数字IC设计\FPGA 职位经典笔试面试整理--语法篇 Verilog System Verilog(部分)
  • 【node学习】协程
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 30天自制操作系统-2
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • CSS魔法堂:Absolute Positioning就这个样
  • exif信息对照
  • FineReport中如何实现自动滚屏效果
  • input实现文字超出省略号功能
  • java 多线程基础, 我觉得还是有必要看看的
  • Java 最常见的 200+ 面试题:面试必备
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • QQ浏览器x5内核的兼容性问题
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 前端工程化(Gulp、Webpack)-webpack
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何进阶一名有竞争力的程序员?
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • UI设计初学者应该如何入门?
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $.proxy和$.extend
  • (2)空速传感器
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (区间dp) (经典例题) 石子合并
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (转)四层和七层负载均衡的区别
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .net 微服务 服务保护 自动重试 Polly
  • @Slf4j idea标红Cannot resolve symbol ‘log‘
  • [AIGC] Spring Interceptor 拦截器详解
  • [Ariticle] 厚黑之道 一 小狐狸听故事
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [BZOJ2281][SDOI2011]黑白棋(K-Nim博弈)
  • [BZOJ4016][FJOI2014]最短路径树问题