问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STM32:外部中断信号控制LED灯开关状态

创作时间:
作者:
@小白创作中心

STM32:外部中断信号控制LED灯开关状态

引用
CSDN
1.
https://m.blog.csdn.net/2401_84429880/article/details/144353704

例题:[1]将KEY2,即PC13设置为外部中断输入,上升沿触发。在中断服务函数中,切换LED2灯的开关状态;
[2]将KEY3,即PB1设置为外部中断输入,下降沿触发。在中断服务函数中,切换LED1灯的开关状态
思路:了解外部中断基本知识(编写中断服务函数)---参数配置(中断初始化配置)---编写代码---烧入开发板
一、了解外部中断基本知识(编写中断服务函数)
[1]什么是外部中断呢?
三步骤了解外部中断的一生(。・∀・)ノ
首先,名字来源:由于中断请求来自GPIO端口的引脚,所以称之为【外部中断】;
其次,还是双重身份,有个‘洋名’:【EXTI】
最后,它是STM32芯片实时处理外部事件的一种机制。
[2]如何触发外部中断?(让它可以控制LED灯开关状态)
答案:要将按键依据条件设置成可触发模式【选择上升沿触发、下降沿触发或双边沿触发】,即中断初始化,并使能相关【NVIC】(嵌套向量中断控制器)通道。依照例题详细配置在第二段[参数配置]
(注意!不能配置成高电平触发或低电平触发)
[3]编写中断服务函数
(1)外部中断回调函数(原型):
void HAL_GPIO_EXTI_Callback[回调](uint16_tGPIO_PIN) ;GPIO_PIN:发生中断引脚号
【在编写时候,通过回调函数来执行我们自定义的操作】
(2)电平翻转函数:
void HAL_GPIO_TogglePin[翻转](GPIOx,GPIO_PIN)
GPIOx:目标端口号; GPIO_PIN:目标引脚号
例:将KEY2,即PC13引脚设置成外部中断输入,上升沿触发(假设已设置),在中断服务函数中,翻转LED2灯(PB8)引脚的电平信号:

  
void HAL_GPIO_EXIT_Callback(uint16_t GPIO_Pin)//运用回调函数执行自定义操作
{
if(GPIO_Pin==GPIO_PIN_13)//判断外部中断的按键是否是PC13(KEY2)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);//是按键PC13,翻转电平PB8(LED2灯)
}
}  

例:将KEY3,即PB1引脚设置成外部中断输入,下降沿触发(假设已设置),在中断服务函数中,翻转LED1灯(PA3)引脚的电平信号:

  
void HAL_GPIO_EXIT_Callback(uint16_t GPIO_Pin)//运用回调函数来执行自定义操作
{
 if(GPIO_Pin==GPIO_PIN_1)//判断外部中断的按键是否是PB1(KEY3)
 {
   HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_3);//是按键PB1,翻转电平PA3(LED1灯)
 }
}  

我们再来了解一下外部中断【中断系统】其他的知识重点吧!O(∩_∩)O
(1)ARM Cortex M3内核支持256个中断,包括16个内核中断和240个外设中断,拥有256个中断优先级别。
(2)STM32中分别有两个优先级概念:抢占优先级、响应优先级(每个中断都需要指定)
(3)STM32的中断通道可能会由多个中断源共用(也就是可能某一个中断服务函数被多个中断源共用),为了辨别是那个中断触发了中断,需要一个判断机制【NVIC】(嵌套向量中断控制器:确定中断优先级、控制中断使能)
二、参数配置(中断初始化配置)【例题版本:STM32L151C8/也可用STM32F103C8(配置一致)】(以下是略快版本[重点除外],超详细配置版本可参考文章【STM32(入门)实现LED2灯循环闪烁】)
例题重点配置(5) 【中断初始化配置】
(1)新建项目
(2)选择版本:
(3)SYS参数配置:

(4)RCC参数配置

(5) 中断初始化配置 :
[1]按照例题,将KEY2(PC13)设置为外部中断输入,上升沿触发,切换LED2灯【最后使能NVIC通道】
设置外部中断输入:点击[PC13]----选择【GPIO_EXTI13】
设置上升沿触发: 点击[GPIO]---选择PC13(Modified)---GPIO mode选择【Rising】(上升沿触发)----点击[GPIO Pull-up//Pull down ]选择【Pull-up】(上拉模式)
切换LED2灯:点击[PB8]----选择Output
使能【NVIC】通道:
[2]按照例题,将KEY3(PB1)设置为外部中断输入,下降沿触发,切换LED1灯【最后使能NVIC通道】
设置外部中断输入:点击[PB1] ---选择【GPIO_EXTI1】
设置下降沿触发:点击[GPIO]---选择PB1(Modified)---GPIO mode选择【Falling】(下降沿触发)---点击[GPIO Pull-up//Pull down]选择【Pull--up】(上拉模式)
切换LED1灯:点击[PA3] ----选择Output
使能【NVIC】通道 :
(6)系统时钟配置
(7)项目管理配置
(8)Code Generator 勾选
(9)配置完成并打开
四、编写代码
(1)运用回调函数,翻转函数 :
(2)运行代码:
五、烧入开发板(所需工具如图)
以上就实现外部中断信号控制LED灯开关状态的步骤啦

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号