IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 外部中断简述 -> 正文阅读

[嵌入式]外部中断简述

介绍

STM32F103的中断控制器支持19个外部中断/事件请求

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

外部IO口的输入中断

总结步骤

第一步:开启AFIO时钟
第二步:设置IO口与中断线的映射关系。
第三步:初始化线上中断,设置触发条件等。
第四步:配置中断分组(NVIC),并使能中断。
第五步:编写中断服务函数。
第六步:清除中断标志位

  • 开启AFIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //②使能 AFIO 时钟
  • 映射关系。

每个中断都设有状态位,每个中断/事件都有独立的触发和屏蔽设置。
可以看出,STM32供IO口使用的中断线只有16个,但是STM32的IO口却远远不止 16个,
GPIOx.0 ~ GPIOx.15( x=A,B,C,D,E,F,G) 分别对应中断线0~15。
每条中断线最多对应7个IO口,但每次只能连接到1个IO口上,这样就需要通过配置映射关系来决定对应的中断线配置到哪个GPIO 上。

映射函数

GPIO_EXTILineConfig()

设置好中断线映射之后, 那么到底来自这个 IO 口的中断是通过什么方式触发的呢? 接下来我们就要设置该中断线上中断的初始化参数了。

  • 初始化外部中断
中断初始化参数

EXTI_InitTypeDef EXTI_InitStructure;  //创建初始化参数的结构体变量
EXTI_InitStructure.EXTI_Line=EXTI_Line4; // 对应的中断线,EXTI_Line0 ~ EXTI_Line15
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //选择模式:中断 EXTI_Mode_Interrupt 或者事件 EXTI_Mode_Event。
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; // 外部中断的触发方式,下降沿/上升沿
EXTI_InitStructure.EXTI_LineCmd = ENABLE; //开启中断使能
EXTI_Init(&EXTI_InitStructure); //初始化参数的所有结构体变量值 给 初始化参数EXTI 寄存器

我们设置好中断线和 GPIO 映射关系,又设置好了中断的触发模式等初始化参数。

  • 还要设置 NVIC 中断优先级。
NVIC 中断优先级

NVIC_InitTypeDef NVIC_InitStructure;  //创建中断优先级参数的结构体变量
NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //对应的外部中断向量
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级 2,
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; //响应优先级 2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断
NVIC_Init(&NVIC_InitStructure); //中断优先级参数的所有结构体变量值 给 中断优先级寄存器

只有7个中断向量,外部中断线0 ~ 4分别对应EXTI0_IRQn ~ EXTI4_IRQn中断向量。

外部中断线 5 ~ 9 共用一个 EXTI9_5_IRQn中断向量,外部中断线10~15 共用一个 EXTI15_10_IRQn中断向量

7个中断向量
EXTI0_IRQn;
EXTI1_IRQn;
EXTI2_IRQn;
EXTI3_IRQn;
EXTI4_IRQn;
EXTI9_5_IRQn;
EXTI15_10_IRQn;

7个中断向量,也就是只能使用7个中断服务函数

EXTI0_IRQHandler()
EXTI1_IRQHandler()
EXTI2_IRQHandler()
EXTI3_IRQHandler()
EXTI4_IRQHandler()
EXTI9_5_IRQHandler()
EXTI15_10_IRQHandler()
  • 最后清除中断标志位函数
EXTI_ClearITPendingBit()
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-11 12:35:13  更:2021-08-11 12:35:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:18:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码