我是靠谱客的博主 自觉小海豚,最近开发中收集的这篇文章主要介绍P4 STM32的中断系统与外部中断基础,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一,STM32的中断系统

1.ARM Cortex M3内核支持256个中断,包括16个内核中断240个外设中断,拥有256个中断优先级别。
2.STM32的中断通道可能会由多个中断源共用。这就意味着,某一个中断服务函数也可能被多个中断源所共用。所以,在中断服务函数的入口处,需要有一个判断机制,用以辨别是那个中断触发了中断。
3.STM32中有2个优先级的概念: 抢占优先级和响应优先级,每个中断都需要指定这两种优先级。
4.Cortex M3内核中有一个称为嵌套向量中断控制器(NVIC)的设备,对中断进行统一的协调和控制。其中最主要的工作就是控制中断使能和确定中断优先级。

二,STM32的外部中断

1.外部中断EXTI是STM32芯片实时处理外部事件的一种机制,由于中断请求来自GPIO端口的引脚,所以称为外部中断。
2.STM32芯片有16个外部中断源EXTI0~EXTI15,分别对应着7个中断向量,也就是对应着7个中断服务函数。
 EXTIO、EXTI1、EXTI2、EXTI3、EXTI4:专用
 EXTI5~EXTI9:共用
 EXTI10~EXTI15:共用
3.EXTI0的连接引脚是:PAO~PGO,即每个端口组的0号引脚。以此类推。
在这里插入图片描述

4.外部中断触发条件:上升沿触发、下降沿触发或双边沿触发。注意:不能配置成高电平触发和低电平触发。
5.外部中断的程序设计思路
 1)传统STM32外部中断设计步骤
  【1】将GPIO初始化为输入端口。
  【2】配置相关I/O引脚与中断线的映射关系。
  【3】设置该O引脚对应的中断触发条件。
  【4】配置NVIC,并使能中断。
  【5】编写中断服务函数。
 2)基于STM32CubeMX的外部中断设计步骤
  【1】在STM32CubeMX中指定引脚,配置中断初始化参数。
  【2】重写该IO引脚对应的中断回调函数。
例:将PC13引脚设置成外部中断,下降沿触发,在中断服务函数中,翻转PB9引脚的电平信号。
 1)中断初始化
  将GPIO设置为:GPIO_EXTI功能。
  设置中断触发条件:上升沿、下降沿、上升沿或下降沿
  使能相关的NVIC通道。
在这里插入图片描述
 2)中断服务函数的编写
在这里插入图片描述

三,实训:外部中断信号控制LED灯开关

  利用STM32CubeMX和Keil5进行STM32应用开发,完成以下的功能。
  【1】将KEY2,即PA8设置为外部中断输入,下降沿触发。在中断服务函数中,切换LED1(PB3)的开关状态。
  【2】将KEY4,即PA9设置为外部中断输入,上升沿触发。在中断服务函数中,切换LED2(PB4)的开关状态。

1.在STM32CubeMX中的一些定义

1)定义相关引脚,将GPIO设置为GPIO_EXTI功能
在这里插入图片描述

2)配置引脚参数——设置中断触发条件(上升沿,下降沿,上升沿或下降沿)
在这里插入图片描述
在这里插入图片描述

3)使能中断通道
在这里插入图片描述

2.使用MDK进行代码编写

 1)重写回调函数
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

 2)关键代码(可以放在main.c中的任意处)

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_8)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_3);
}
if(GPIO_Pin == GPIO_PIN_9)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_4);
}
}

最后

以上就是自觉小海豚为你收集整理的P4 STM32的中断系统与外部中断基础的全部内容,希望文章能够帮你解决P4 STM32的中断系统与外部中断基础所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部