HAL库 STM32CubeMX----外部中断与按键中断

外部中断在这里插入图片描述

外部中断是 STM32 芯片实时处理外部事件的一种机制,由于中断请求来自GPIO端口的引脚,所以称为外部中断。

STM32F103 的 EXTI 控制器支持 19 个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。 STM32F103 的 19 个外部中断为:

  • 线 0~15:对应外部 IO 口的输入中断。
  • 线 16:连接到 PVD 输出。
  • 线 17:连接到 RTC 闹钟事件。
  • 线 18:连接到 USB 唤醒事件。

外部中断的类型

  • 上升沿触发:当GPIO端口的引脚由低电平跳变到高电平时,产生脉冲触发中断响应事件执行(一般配合于下拉电阻)
  • 下降沿触发:当GPIO端口的引脚由高电平跳变到低电平时,产生脉冲触发中断响应事件执行(一般配合与上拉电阻)
  • 双边沿触发:只要端口状态发生边沿变化,即触发中断事件

按键中断

按键按下会产生一个上升沿或者下降沿的触发脉冲,利用单片机的IO口检测输入脉冲,触发外部中断在这里插入图片描述

  • WK_UP引脚初状态与地相连,当按键按下时,左侧3V3高电平导通,端口状态由低到高,上升沿跳变,触发外部中断
  • KEY0、KEY1的引脚PE4、PE3初状态为高,当按键按下时,右侧GND导通,端口状态由高到低,下降沿跳变,触发外部中断

按键中断CubeMX配置(以上图KEY0为例)

  • 将GPIO设置为GPIO_EXTI功能
    在这里插入图片描述
  • 设置中断触发条件:上升沿触发、下降沿触发或双边沿触发:
    在这里插入图片描述
  • 使能中断
    在这里插入图片描述
  • 在stm32f1xx_it.c中找到中断线2中断处理函数
    在这里插入图片描述
    在这里插入图片描述
    在HAL库中,中断运行结束后不会立刻退出,而是会先进入相对应的中断回调函数,处理该函数中的代码之后,才会退出中断,所以在HAL库中我们一般将中断需要处理代码放在中断回调函数中
  • 编写外部中断回调函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
  if(GPIO_Pin==KEY0_GPIO_PIN)
  {
    HAL_GPIO_TogglePin(KEY0_GPIO_Port,KEY0_Pin);
  }
}

按下按键以后进入中断,GPIO状态翻转,LED切换亮灭

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值