文章目录
- 运行环境:
- 1.1 按键外部中断
- 1)按键检测
- 2)外部中断的3中触发方式
- 2.1配置
- 1)原理图
- 2)引脚配置
- 3)中断配置
- 4)RCC和SYS
- 3.1代码分析
- 3.2添加代码
- 1)中断处理函数IRQ中添加电平转换代码
- 2)launch设置
- 5.1实验效果
运行环境:
ubuntu18.04.melodic
宏基暗影骑士笔记本
stm32f427IIH6
stlink
9-24v可调电源
1.1 按键外部中断
1)按键检测
方法一:检测IO口是否为低电平判断按键是否被按下
只有在检测按键的时候,我们按下按键才会被检测到,但处理器可能在干别的事情,所以最好的方法是使用外部中断
2)外部中断的3中触发方式
上升沿中断:当 GPIO 的电平从低电平跳变成高电平时,触发外部中断。
下降沿中断:当 GPIO 的电平从高电平跳变成低电平时,触发外部中断。
上升下降沿中断:当 GPIO 的电平从低电平跳变成高电平和从高电平跳变成低电平时,都能触发外部中断。
2.1配置
1)原理图
自定义的KEY对应PB2
2)引脚配置
配置PB2为外部中断
由于按下按键,变成低电平,所以选择下降沿触发,上拉
3)中断配置
打开2号总线中断,最高优先级
4)RCC和SYS
为每个外设 生成外设初始化.c/.h文件
3.1代码分析
在gpio.c中,
已经打开下降沿触发,上拉
已经打开中断服务函数
在回调函数中编写电平转换代码
3.2添加代码
1)中断处理函数IRQ中添加电平转换代码
make编译,F5烧录调试
2)launch设置
修改成以下内容:可执行文件名是freeRTOS_LED.elf
{ =400x
"configurations": [
{
"showDevDebugOutput": "parsed",
"cwd": "${workspaceRoot}",
"executable": "./build/TIM1.elf",
"name": "Debug STM32",
"request": "launch",
"type": "cortex-debug",
"servertype": "openocd",
"device": "stm32f427",
"configFiles": [
"interface/stlink-v2-1.cfg",
"target/stm32f4x.cfg"
]
}
]
}
5.1实验效果
按下白色按键,灯灭
再按下白色按键,灯亮