中断及中断服务函数

1.引入
按键点灯的问题一般用轮询的方式去解决。

	轮询天生有缺陷:		1.浪费CPU2.占用总线,Bus is always busy.3.轮询响应时差,响应不及时的。有没有办法不让CPU主动去询问事件是否发生,而是当事件发生																																																																																																																																										             		后,主动去通知CPU去处理。---> 中断机制

2.中断的概念
一般中断定义为打断CPU指令正常执行顺序的事件。

现代CPU架构为了能够及时的响应外部或者内部的一些紧急事件,都支持
中断,并且会提供相应的中断响应机制-->中断机制

3.ARM Cortex-M4中断机制
当NVIC(中断控制器)通过CPU产生了某个事件,此时,CPU就会停止正在做的事情,转而切换处理模式去处理这个事件(去执行中断服务函数)。
M4给不同的中断一个唯一的编号(中断编号:用来区分不同的中断事件)。
当不同的中断事件产生时,CPU会做不同的处理。
中断向量表:一个数组,保存不同的中断事件处理函数的地址。
实际上就是一个函数指针数组
中断编号:就是该数组的下标。

中断处理函数:void Handler(void)CPU被动调用,不是用户主动调用的。是当有紧急事件发生时,CPU才会
被动去执行中断函数。它可以在用户指令,的任何时刻去调用因为中断在
任何时刻都有可能发生。

4.STM32F4xx的中断管理机制
任何中断的产生到CPU的响应,都要经过以下阶段:
1)中断源阶段
中断源是指产生了中断的设备。

	设备要能够产生中断,就必须要有一 根中断请求线(IRQ Line),并
且这根中断请求线必须要连接到中断控制器(NVIC)的中断输入引脚上。

2)NVIC中断控制器阶段
中断控制器是对所有中断输入引脚进行管理和控制。

	可以根据输入的中断请求给CPU内核一个中断信号,通过CPU某某设备
产生了中断,外部硬件在通过INTR发送中断请求信号时,还要向CPU给出一
个8位的中断编号。CPU在响应这个中断请求的时候,同时读取到了这个由
外部硬件给出的中断编号,然后以这个中断编号为下标就会去对应的中断
向量表中找到对应的元素,将元素中的值(地址)取出来后,跳转过去执行
这个函数(中断处理函数)。

CPU响应中断汇编实现:

MRS R0,IPSR			;将中断编号给到R0
MOV R1,#0x00000000	    ;中断向量表的基址
LDR R2,[R1,R0,LSL #2]	;R2 <-- R1 + (R0 << 2)
MOV PC,R2				;跳转到中断服务函数中去执行

一个设备产生了中断首先要经过中断源这一级,而中断源可以屏蔽或者使能中断的,即使外部设备产生了中断,中断源也可以不向上一级中断控制器发送中断请求信号。
中断控制器(NVIC)它也可以控制中断,当NVIC收到中断源发起的中断请求信号之后,也可以选择ENABLE(使能)/DISABLE(禁止)这个中断,意思是NVIC收到请求后,但是不报告给CPU。
5.STM32F4xx外部中断
外部中断(EXTI:EXTernal Interrupt)是指GPIO的外部电路上产生的中断。
比如:在GPIO口的外部电路上产生了一个上升沿(或者下降沿)将可能会导致一个外部中断的产生。
F407一共有23个外部中断。记为:EXTI0/EXT01…EXTI22

EXTI0的产生来源于所有编号为0的GPIO引脚:PA0/PB0.....PI0	
EXTI1的产生来源于所有编号为1的GPIO引脚:PA1/PB1.....PI1.....
EXTI15的产生来源于所有编号为15的GPIO引脚:PA15/PB15.....PI15

GPIO外部信号输入(高跳变/低跳变):

	GPIO控制器(GPIO控制器应该要配置成输入模式SYSCFG选择器(选择由哪个GPIO产生EXTI)EXTI外部中断控制器(边沿触发选择/外内部中断/屏蔽和使能)NVIC中断控制器CPU停止正常执行顺序-->1.获取NVIC报告的中断编号-->2.去中断向量表中以此编号为下标去中断处理函数的地址-->3.根据此地址跳转过去执行中断处理函数(处理中断)

6.外部中断代码实现

	KEY0-->PA0-->EXTI0-->NVIC->CPU->EXTI0_IRQHandlerKEY1-->PE2-->EXTI2-->NVIC->CPU->EXTI2_IRQHandlerKEY2-->PE3	......KEY3-->PE4	......

1)配置GPIO控制器

a.	使能GPIO分组时钟
void RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph,FunctionalState NewState)
b.初始化GPIO(输入模式)
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef *GPIO_InitStruct)

2)配置SYSCFG选择器
SYSCFG选择器也是一个外设,需要使能时钟:

a.使能SYSCFG选择器时钟(SYSCFG选择器处于APB2总线上)
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
b.初始化SYSCFG选择器(选择由哪个GPIO产生EXTI)
void SYSCFG_EXTILineConfig(uint8_t EXTI_PortSourceGPIOx, uint8_t EXTI_PinSourcex)
比如:配置PA0产生外部中断0							SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource0);

3)初始化EXTI外部中断控制器

a.使能EXTI外部中断控制器
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
b.初始化外部中断控制器
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)

4)配置NVIC控制器

void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)

按照上述流程就可以配置好外部中断,当配置好外部中断之后,此时如果满足产生外部中断的条件,触发外部中断,CPU就会自动去调用对应的中断处理函数。
因此,在配置完中断后,应该要编写对应的中断处理函数,以供CPU在产生中断之后调用。

//中断服务函数
void xxx_IRQHandler(void)
{//获取中断的中断标志位//根据中断标志位可以得知是否产生了中断//用户代码去处理中断//清除中断标志位
}
a.	获取中断标志位ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line)@EXTI_Line:指定外部中断线返回值:SET		表示获取的外部中断已经产生RESET	表示获取的外部中断未产			
b.	清除中断标志位void EXTI_ClearFlag(uint32_t EXTI_Line)void EXTI_ClearITPendingBit(uint32_t EXTI_Line)

下附,外部中断处理逻辑图
外部中断处理逻辑图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16129.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海睿思分享 | 类chatgpt模型在信息抽取领域的应用

大语言模型&#xff08;LLM&#xff0c;Large Language Model&#xff09;是指能够处理海量数据、拥有百亿级参数的深度学习模型&#xff0c;它已成为⼈⼯智能领域中的新热点。2022 年 11 ⽉ 30 号 ChatGPT 发布&#xff0c;其卓越的性能表现给整个⾏业带来了巨⼤的冲击。⼈们不…

拉伯证券|人心动了?刚刚,A股、港股大涨!

昨日A股传言较多&#xff0c;引发波动。上一年10月底11月初&#xff0c;也有类似情况。换个视点看&#xff0c;这说明人心开端动了&#xff0c;至于怎样个“思变”法&#xff0c;市场可能现已给出了答案&#xff01; 今天上午&#xff0c;A股大涨&#xff0c;北向资金净流入110…

全球行情_全球股市中心

全球股市指数指数自动更新&#xff0c;报价单位均为当地货币&#xff0c;行情时间均为北京时间 圣保罗 布宜诺斯艾利斯 冰岛 斯德哥尔摩 赫尔辛基 奥斯陆 哥本哈根 莫斯科 布鲁塞尔 都柏林 阿姆斯。环球行情中心 13 136 088% 注行情统一显示为红跌绿涨。“指南针行情网”是北京…

反常识—股票暴跌收益会更高

反常识—股票暴跌收益会更高 这节课我们来学习一下股票。先来了解一下什么是股票&#xff1f; 股票是公司的所有权凭证。持有股票的人是公司的股东&#xff0c;拥有公司的一部分。可以说你持有一家公司的股票&#xff0c;你就是这家公司的老板。持有股票比例最多的人&#xf…

9 大指标分析 Solana 的熊市危机

Daniel, 2023 年 1 月 Solana 是一个去中心化的区块链网络&#xff0c;由 Solana 实验室设计并在2020年推出&#xff0c;具有快速、可扩展和安全的特点。 由于其快速的交易速度和低交易费用&#xff0c;Solana 在 2020 年和 2021 年获得了极大的关注&#xff0c;这使得它对去中…

九龙证券|美国散户疯狂抄底,嗅到了什么?华尔街最新警告

当地时间周五&#xff0c;美股三大指数低开后经历“过山车”行情&#xff0c;虽然盘中一度转涨&#xff0c;但午后再度回落。截至收盘&#xff0c;道指跌0.38%&#xff0c;报收33926.01点&#xff1b;纳指跌1.59%&#xff0c;收于12006.95点&#xff1b;标普500指数跌1.04%&…

九龙证券|一夜暴跌36%,美股走势分化,标普指数创近2月最差周度表现

当地时间2月10日&#xff0c;美股三大指数收盘涨跌纷歧。道指涨0.5%&#xff0c;标普500指数涨0.22%&#xff0c;纳指跌0.61%。 受国际油价明显上升影响&#xff0c;动力板块领涨&#xff0c;埃克森美孚、康菲石油涨超4%。大型科技股走低&#xff0c;特斯拉、英伟达跌约5%。热门…

表单验证:名称、电话号码、邮箱

表单验证&#xff1a;名称、手机号码、邮箱 文章目录 目录前言一、名称验证的正则表达式二、电话号码验证的正则表达式三、邮箱验证的正则表达式总结 前言 在大部分web项目中都离不开表单验证&#xff0c;这里就简单介绍几个常见的验证内容&#xff0c;后续慢慢更新 一、名称表…

【智能手表方案推荐】基于中科蓝讯BT8958B2 的 Smart Watch 方案介绍

目录 ►场景应用图 ►产品实体图 ►展示板照片 ►方案方块图 ►核心技术优势 ►方案规格 随着人们对于智能手表功能性需求的提高&#xff0c;智能手表的应用方向需要不仅能满足于日常生活中可替代手机为用户提供方便的场景&#xff0c;如蓝牙通话&#xff0c;还需要对人体…

智能手表UX开发的4条基本经验

为了提高您智能手表 UX开发的效率&#xff0c;请仔细考虑动画、响应性、便利性和严格测试。 随着智能手表持续主导可穿戴设备市场&#xff0c;记住以下这一点很重要&#xff1a;用户体验&#xff08;UX&#xff09;是否在硬件和软件栈之间同步优化。随着触觉和基于表冠的输入成…

基于BearPi套件开发的智能儿童手表系统

一、 介绍 本项目是基于BearPi套件开发的智能儿童手表系统&#xff0c;该系统通过与GSM模块&#xff08;型号&#xff1a;SIM808&#xff09;的通信来实现通话和定位功能。 智能儿童手表系统可以通过云和手机建立连接&#xff0c;同步时间和获取天气信息&#xff0c;通过手机…

独立版企微魔盒企业微信系统V7.5开源版 带安装教程

下载&#xff1a;D立版企微魔盒企业微信系统V7.5开源版带安装教程-小程序文档类资源-CSDN下载 更新日志&#xff1a; 1.部分功能适配新版企业微信第三方应用API&#xff1b; 2.解决企业微信第三方API调整后扫码显示企业未入驻&#xff0c;授权第三方企业id不正确的问题&#…

弹性魔盒应用

这是标准盒子的应用 弹性盒的应用 采用flex布局的元素一般叫做容器内的内容称为项目或者元素 水平方向的是主轴(main axis),垂直方向的是交叉轴(cross axis![在这里插入图片描述]() 容器属性:flex-flow、flex-direction、flex-wrap、justify-content、align-items、alig…

火线魔盒服务器不稳定,火线魔盒怎么使用?火线魔盒使用教程

您可能感兴趣的话题&#xff1a; 火线魔盒 核心提示&#xff1a;火线魔盒是大家非常喜欢的CF辅助工具&#xff0c;由于其功能强大&#xff0c;封号机率极小受到大家的喜爱&#xff0c;对于新手来说不知道如何使用火线魔盒&#xff0c;我们就来介绍一下火线魔盒使用方法。 火线魔…

战舰少女r魔盒服务器维护,战舰少女r魔盒官方

战舰少女R魔盒官方是一款军事化类型的战舰对战角色扮演手机游戏&#xff0c;玩家们将在这里体验到更过瘾更刺激的海战玩法&#xff0c;收集不同的战舰进行战斗&#xff0c;每个战舰都代表了不同的舰娘&#xff0c;满满的二次元感觉&#xff0c;为了新的荣誉&#xff0c;不断征服…

ChatGPT会砸了谷歌的饭碗吗?(附彩蛋)

按&#xff1a;本来早上准备好了文章《ChatGPT创始人自述成功的13个法宝》&#xff0c;但是微信公众号无法发表&#xff0c;所以只能发到刘教链的知识星球&#xff08;链接&#xff1a;https://t.zsxq.com/0arpqby2N【链接】&#xff0c;或点击本文左下角“查看原文” &#xf…

GPT-4真的发布了,ChatGPT Plus用户可试用

GPT-4 真的发布了&#xff0c;GPT-4 真的发布了&#xff0c;该模型在多个方面都实现了飞跃式的提升&#xff0c;按官方的介绍是GPT-4 是 OpenAI 最先进的系统&#xff0c;可产生更安全、更有用的响应结果。 由于 GPT-4 具有更广泛的常识和解决问题的能力&#xff0c;所以它能更…

一周 AIGC 丨千人签名“AI 不扩散条约”,ChatGPT 正在大规模封号

ChatGPT 诞生之后带给人类的震撼还在继续&#xff0c;甚至有人评价它是硅基生命开启的标志。马斯克也认为&#xff0c;人类只是硅基生命的开启程序。也许未来有一天&#xff0c;正如《异星灾变》中的场景&#xff0c;人类被机器人接管。面对强人工智能的崛起&#xff0c;马斯克…

AI教父Hinton最新采访万字实录:ChatGPT和AI的过去现在与未来

杰弗里辛顿&#xff08;Geoffrey Hinton&#xff09;被公认是人工智能的教父&#xff0c;数十年前他就支持和推动了机器学习&#xff0c;随着像ChatGPT这样的聊天机器人引起广泛关注&#xff0c;CBS的主持人于2023年3月初在多伦多的Vector研究所采访了Hinton。 全长40分钟的采访…

飞浆AI studio人工智能课程学习(1)-大模型时代优质Prompt

文章目录 大模型时代&优质PromptAl生成技术价值概览开始构建你的优质prompt 近十年深度学习模型主要更迭为什么大模型能够有如此强大的表现力大模型与Prompt例1&#xff1a; 画一幅画&#xff0c;呆萌的小猫躺在大泡泡中例2&#xff1a;请生成一张统计图&#xff0c;内容为…