如何使用外部中断并在按下用户按钮时打开LED

控制/MCU

1822人已加入

描述

了解如何使用外部中断并在按下用户按钮时打开 LED。

使用 STM32CubeIDE 将连接到用户按钮的 GPIO 配置为具有下降沿触发的外部中断 (EXTI)

了解如何配置中断控制器:NVIC

通过按下打开 LED 的按钮来验证功能是否正确

2.2在STM32CubeIDE中创建工程↑

主面板中的文件>新建>STM32 项目。
 

微控制器



在此示例中,使用了 NUCLEO-L476RG 板。
 

在板选择器中选择 NUCLEO-L476RG 。
 

微控制器


 

保存项目

2.3配置GPIO↑

将 LED 引脚配置为 GPIO_Output(NucleoFL476RG 上的 PA5)。对于其他板,请查看其用户手册。

微控制器

微控制器

将按钮引脚配置为 GPIO_EXTI(NucleoL467RG 上的 PC13)。对于其他板,请查看其用户手册。

微控制器

微控制器

检查 GPIO 配置

为 EXTI 启用中断

微控制器

2.4生成工程并编辑main.c↑

生成代码的最简单方法是保存当前项目:Ctrl + S
 

代码已生成,因此您可以在项目资源管理器的屏幕左侧看到它
 

微控制器

2.4.1 HAL库工作流程总结

HAL 库提供对 STM32 外设(如 EXTI)的高级访问。
HAL_EXTI0_IRQHandler 和 EXTI0_IRQHandler 位于 stm32l4xx_it.c 文件中。
您必须在 main.c 中定义回调函数:HAL_GPIO_EXTI_Callback。
.

600px

2.4.2配置中断

创建一个函数来处理 EXTI 中断:

EXTI 的 HAL 回调函数:void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

要打开 LED,我们需要使用函数:HAL_GPIO_WritePin

将函数放入 main.c

在/* USER CODE BEGIN 4 */和/* USER CODE END 4 */标签 之间插入您的代码

/ *用户代码开始4 * / void  HAL_GPIO_EXTI_Callback ( uint16_t  GPIO_Pin ) {  if( GPIO_Pin  ==  GPIO_PIN_13 )  {    _ }else{ __NOP (); } } /* 用户代码结束 4 */              

2.5编译烧录↑

单击构建按钮
 

单击调试按钮(逐步运行)
 

或者在运行按钮上(执行)
 

=> 当您按下电路板上的蓝色按钮时,LED 必须亮起。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分