keil的debug功能

一.窗口介绍

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

二.功能

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 查看内部寄存器

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

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

2.4 逻辑分析仪

功能就是可以看pwm等等波形,先展示效果,看下图
在这里插入图片描述
接下来展示怎么开启,在下图中先打开魔术棒。
在这里插入图片描述
接着点debug,然后先勾上下图红圈位置,选上它就可以使用逻辑分析仪进行debug,但是之后如果想使用正常的逻辑调试需要勾回黄圈位置,然后再进行蓝圈第一步,SARMCM3.DLL和-REMAP,之后在写蓝圈第二步,DARMSTM.DLL和-pSTM32F103ZE,因为我的板子是战舰版STM32F103ZE,如果是C8就写上
-pSTM32F103C8
在这里插入图片描述
之后点击ok
在这里插入图片描述
之后点击程序编译下载以后,点击下图的进行debug
在这里插入图片描述
之后运行下图功能
在这里插入图片描述
之后下2张图该功能
在这里插入图片描述
在这里插入图片描述
之后可以输入需要看的引脚型号——PORTx.n x为端口号 n为引脚号,然后enter键就生成
在这里插入图片描述
之后选上Bit位选完了以后close
在这里插入图片描述
然后在下图中点红色位置就是持续运行波形,波形回一直运转,把绿色滑块拉到黑色处,他会回到之前的位置,可以静态观察波形
在这里插入图片描述
在下面有四张图,第一张图里面c已经等于1了,程序从上面执行下来,第二张图的while就可以解开,逻辑分析仪就可以运行到这里,而第三张图片c等于0,代码从上面运行下来,刚刚开始并没有触发它,所以第四张图就只能走到这里,不能再往下了,后面按键按下触发也无效。

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值