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 查看内部寄存器
下面两张图片,使用该功能可以查看芯片内部某个功能寄存器的数值