前置条件
- 已创建STM32工程
- 已完成GPIO口驱动代码,本文以推挽输出为例,演示如何通过逻辑分析仪观察GPIOE的GPIO_Pin_5的toggle操作
代码示例
1. main.c
// main.c
int main(void) {
Led_Init(); //GPIO初始化配置
while (1) {
Led_On(); // GPIO电平置高
Delay_MS(1000);
Led_Off(); // GPIO电平置低
Delay_MS(1000);
}
}
2. led.h
// led.h
#include "stm32f10x.h"
int Led_Init(void);
int Led_On(void);
int Led_Off(void);
3. led.c
// led.c
#include "led.h"
int Led_Init(void) {
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOE, &GPIO_InitStructure);
return 0;
}
int Led_On(void) {
GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_RESET);
return 0;
}
int Led_Off(void) {
GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_SET);
return 0;
}
调试仿真
-
原始配置
-
应修改为
PS:3、4两处应该修改为所选STM32芯片的类型
-
点击Debug按钮,启动调试
-
打开逻辑分析仪
-
点击[Setup],在弹出窗口中添加PE5为观察端口
PS:注意端口号输入格式,PE5 为 PORTE.5
-
调试的同时观察波形
-
调试说明
- 左1:Step,普通单步调试,遇到函数时会进入函数内部逐行执行
- 左2:Step Over,单步调试,遇到函数时不会进入函数内部,直接返回执行结果
- 左3: Setp Out,跳出当前正在执行的函数,直接返回执行结果,非强制退出,只是函数体内剩余的代码行不再单步调试
- 左4:Run to Cursor Line,跳转到光标所在代码行,指C语言代码行
声明
商业开发请购买正版软件和服务。