7.4任务实践STM32F401RE :中断方式检测按键

任务内容:采用中断方式检测按键B1的状态,按键按下后执行如下操作:翻转指示灯LD2的状态

硬件原理:按键B1由引脚PC13控制:按键按下时为下降沿触发方式,释放时为上升沿触发方式。指示灯LD2由引脚PA5控制:PA5输出高电平,开启指示灯;PA5输出低电平,关闭指示灯。

目录

一,proteus 放置器件

1. 新建项目

2. 选择器件

3. 开始连线

二,STM32cubeMX 进行工程文件的预配置

1. 新建工程文件选择

2. 分析题意 设置引脚

3. 配置完成生成工程文件跳转keil5

三,Keil 编写具体实现代码

1. 编写实现的中断函数

2. 开始仿真


一,proteus 放置器件

1. 新建项目

Next-----next----

两次默认下一次即可

  选择创建 firmware project

     Cortex-M4

     STM32F401RE

Finish 完成

2. 选择器件

 我们需要 led灯 按键 电阻

搜索  LED-RED BUTTON RES  双击添加

 

3. 开始连线

分析题意

引脚PC13 控制按键B1

引脚PA5 控制LD2

最终连接如下图所示

3.1你可能会遇到的问题

1).如何放置器件?

点击器件后 在点击合适的位置两下 即可放下  

线与线的连接 建议直线连接 可适当调整器件的位置

2).led灯选择角度位置怎么调?

可以rotate 进行调整角度的问题

3).哪里找GND?

如下图

 proteus器件接好了暂时不需要管这个了  开始进行代码的编写

二,STM32cubeMX 进行工程文件的预配置

1. 新建工程文件选择

2. 分析题意 设置引脚

引脚PC13配置成中断模式检测按键B1(控制按键B1)按键按下时为下降沿触发方式,释放时为上升沿触发方式

 

采用中断方式检测按键B1的状态 需开启中断

引脚PA5 输出高低电平 所以将PA5设置为输出模式

  注意配置NVIC 因为我们使用了EXTI13

3. 配置完成生成工程文件跳转keil5

 注意:要先命名

三,Keil 编写具体实现代码

1. 编写实现的中断函数

在这里的中断 是说按键一旦检测到中断  程序的pc指针 会跳到指定地址 执行我们预先设定好的代码 

在main.c文件中

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

的位置添加代码

/* USER CODE BEGIN 4 */

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

{

    if(GPIO_Pin==GPIO_PIN_13)

{

HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);

}

}

/* USER CODE END 4 */

 

点击ok这样就可以进行编译了

2. 开始仿真

双击板子 进入页面 进入工程文件夹目录 \MDK-ARM\10_23\10_23.hex

选择 刚刚编译生成的hex文件、

 点击按钮开始仿真

按下按键

 实验成功