Keil5 调试与仿真
来源:实验课程一
软件仿真
配置:
Debug页面:
-
DARMSTM.DLL:-pSTM32F103ZE -
TARMSTM.DLL:-pSTM32F103ZE
操作:
-
修改Debug配置
-
再次编译
-
进入Debug
-
使用逻辑分析页面添加想要查看波形的引脚。例如,我想查看PE5引脚电平随时间的变化,就需要在配置页面添加以下代码:
1 | (PORTE & 0x00000020) >> 5 |
表达式解析
(PORTE & 0x00000020) >> 5
这段代码的含义是提取并转换 GPIO 引脚 PE5(Port E, Pin 5)当前的电平状态(0 或 1),以便在波形监视工具中清晰显示。
分步拆解:
PORTE:
代表 Port E 端口的寄存器值,其中包含了该端口所有 16 个引脚(Pin 0 ~ Pin 15)的高低电平状态。
& 0x00000020(按位与掩码):
0x00000020 换算成二进制是 0000 … 0010 0000,其第 5 位(从 0 开始数)为 1。
这一步通过“按位与”操作,屏蔽并清零了其他所有引脚的状态,只单独留下 PE5 引脚的原始数据。
>> 5(右移 5 位):
把刚才过滤出来的第 5 位数据向右平移 5 位,将其移动到最低位(第 0 位)。
经过这一步处理后,整个表达式的值就会变成纯粹的 0(代表低电平) 或 1(代表高电平),可以直接被波形工具识别并绘制成高低起伏的方波。
实物仿真
配置:
Debug页面:
操作:
-
修改Debug配置
-
编译
-
烧录
-
按下核心板上的复位键
GPIO 控制输出
来源:实验课程一
配置:
System Core >> GPIO:
GPIO Output Level: Low (根据原理图选择相应的电平)
GPIO mode: Output Push Pull
GPIO pull-up/pull-down(是否启用上/下拉电阻): No pull-up and No pull-down
User label 一般为了好记好使会给改一个好写的名字
main.c文件:P58
1 | int main(void) |
代码说明
uint32_t systick_i;
定义了一个局部变量,类型为 uint32_t。
HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin);
翻转 LED 引脚电平的(TogglePin 可以让 LED 状态取反,使用 WritePin 点亮会使代码繁杂)。
操作:
-
在MX中选择所需引脚,选择
GPIO_Output模式 -
修改配置
参考阅读: 课本第四章P45 寄存器:P54
中断控制器 判断按键
名词翻译:
上升沿:电平由低到高上升为上升沿
下降沿:电平由高到低下降为下降沿
疑问:
为什么不采用轮询方式(在循环中添加电平判断)?
因为这样做会占用大量CPU。
配置:
评论