【江科大】STM32:中断系统(理论)

这篇具有很好参考价值的文章主要介绍了【江科大】STM32:中断系统(理论)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

中断系统

为什么要使用中断

如果没有中断系统,系统就需要不断去查询程序运行是否有异常和异常事件的产生, 比如串口通信,数据没有接收到被覆盖。没有定时器中断,主程序只能靠Delay函数,才能实现定时功能。
有的话,就不用管这些,只需要放心去做自己的事情。有中断就去处理。

中断优先级

当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源.

中断嵌套

当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回

中断的执行流程

【江科大】STM32:中断系统(理论),STM32学习,stm32,单片机,嵌入式硬件,arm开发

STM32的中断系统

68个可屏蔽中断通道,8个中断源,F1系列最多的中断数量,包含EXTI(外部中断)、TIM(定时器)、ADC(模数转换器)、USART(串口)、SPI、I2C、RTC(实施时钟)等多个外设

如何管理这些中断

NVIC(嵌套向量中断控制器)
使用NVIC统一管理中断,每个中断通道都拥有16个可编程的优先等级,可对优先级进行分组,进一步设置抢占优先级和响应优先级。
【江科大】STM32:中断系统(理论),STM32学习,stm32,单片机,嵌入式硬件,arm开发

STM32的中断非常多,如果全都接在CPU,CPU旧的引出很多线来适配,设计起来很麻烦,并且如果出现很多中断同时申请,就会产生拥堵。毕竟CPU是用来运算的。
因此出于以上原因,中断分配就会放到别的地方,NVIC就出现了
NVIC由很多输入口,不管有多少中断线路,都能接过来。
但是只有一个输出口,因此根据每个中断优先级分配中断的先后顺序。
下图就是NVIC的结构:

NVIC的结构【江科大】STM32:中断系统(理论),STM32学习,stm32,单片机,嵌入式硬件,arm开发

白8.:通过这个输出口就告诉CPU,该处理哪个中断,而CPU不管什么顺序来的,只管处理

NVIC优先级分组

  • NVIC的中断优先级由优先级寄存器的4位(0~15)决定,这4位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级
  • 抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队
    【江科大】STM32:中断系统(理论),STM32学习,stm32,单片机,嵌入式硬件,arm开发

优先级

NVIC的中断优先级由优先级寄存器的4位(0~15)决定,这4位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级
抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队(0是最高优先级)

窗口看门狗(WWDG):

看门狗功能:检测程序运行状态
PVD电源电压检测:如果供电不足,PVD会申请中断。

外部中断模块的特性:(EXIT)

对于STM32来说,想要获取的信号是外部驱动的换开的突发信号,比如旋转编码器的输出信号,我可能很久不拧他,这时也不要STM32做什么,但是我一拧就会有很多脉冲波形需要STM32来接收,这个信号是突发的,外部驱动,stm32只能被动接受,且很快,只要晚一点读取就会错过很多波形。因此就考虑外部中断,有脉冲过来,STM32立即进去中断函数处理,没有脉冲,32就专心做其他事情。
比如红外遥控接收头的输出,接收到遥控输出,就会输出一段波形,转瞬即逝,所以需要外部中断读取,
最后还有按键。也是外部驱动突发事件,但是不推荐外部中断,因为不好处理抖动和松手检测的问题。输出也不是转瞬即逝。定时器中断读取。

下图是一些常用的中断类型

【江科大】STM32:中断系统(理论),STM32学习,stm32,单片机,嵌入式硬件,arm开发
【江科大】STM32:中断系统(理论),STM32学习,stm32,单片机,嵌入式硬件,arm开发
了解中断向量表主要是为了,了解中断函数的作用原理。

中断向量表的作用:

程序中的中断函数,它的地址都是由编译器来分配的,是不固定的。
为了让硬件能够跳转到一个不固定的中断函数里,
就需要内存中定义一个地址的列表这个列表地址是固定的,
中断发生后,就跳到这个固定位置。,然后在这个固定位置由编译器,再加上一条跳转到中断函数的代码。这样中断跳转就可以跳转到任意位置了。
中断地址的列表又叫中断向量表,相当于中断跳转的一个跳板。
使用C语言就不用管。

EXTI(Extern Interrupt)外部中断

  • EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序
  • 支持的触发方式:上升沿/下降沿/双边沿/软件触发
  • 支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断
  • 通道数:16个GPIO_Pin,外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒
  • 触发响应方式:
    中断响应(电平引脚发生变化,发生中断)/事件响应(触发事件,那么外部信号就不会通信CPU,而是通向其他外设,用来触发其他外设的操作,如触发ADC转换,DMA等)(不会触发中断,而是触发别的外设操作。)
    【江科大】STM32:中断系统(理论),STM32学习,stm32,单片机,嵌入式硬件,arm开发
    由于引脚可能存在冲突,因此需要利用AFIO来打开你想要的I/O口的你想使用的,STM32硬件设计时设计好的功能。

AFIO(复用I/O口)

功能:AFIO复用IO口,AFIO主要用于引脚复用功能的选择和重定义
在STM32中,AFIO主要完成两个任务:复用功能引脚重映射、中断引脚选择

//AFIO的配置全会被清除
void GPIO_AFIODeInit(void);
//锁定某个配置好的引脚,防止意外更改
void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
//可以进行引脚重映射,第一个参数时重映射方式,第二个时新的状态
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
//配置AFIO的数据选择器
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
//和以太网有关
void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface);

【江科大】STM32:中断系统(理论),STM32学习,stm32,单片机,嵌入式硬件,arm开发
【江科大】STM32:中断系统(理论),STM32学习,stm32,单片机,嵌入式硬件,arm开发
上面就是关于STM32中断部分的一些理论笔记。文章来源地址https://www.toymoban.com/news/detail-818564.html

到了这里,关于【江科大】STM32:中断系统(理论)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32单片机开关控制LED灯(中断方式)(proteus电路图)

      补充一点:拼多多上面LED额定电流20mA,额定电压2V,额定电阻100欧姆,后边这个是STM32 如果只是用面包板做实验,输入输出都不是很多,就直接用灌电流的方式把LED直接接到STM32了,即使是设计产品,如果能够直接接,那么肯定也是不会浪费钱去买额外的原件的,所以只有

    2024年02月11日
    浏览(44)
  • 江科大stm32视频学习笔记——TIM定时中断&定时器外部时钟

    目录 一、TIM(Timer)定时器简介  1.1 定时器类型 摘要 1.1.1 基本定时器 1.1.2 通用定时器 1.1.3 高级定时器  1.2 定时中断基本结构 1.2.1 结构框图 1.2.2 时序图 二、定时器定时中断定时器外部时钟 2.1 内部时钟闹钟代码 2.1.1 Timer.c 2.1.2 Buzzer.c加入间隔发声函数 2.1.3 main.c 2.1.4 实验视频

    2024年01月23日
    浏览(64)
  • STM32单片机(五)第二节:EXTI外部中断练习2(旋转编码器计次)

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月11日
    浏览(45)
  • STM32系列单片机“中断触发时间、最小中断周期、指令周期、平均执行速度、和单条指令执行时间”的问题研究

    查阅相关资料书籍和博客总结了一下知识点,以便学习巩固复习。 在学习《ARM Cortex-M3与Cortex-M4权威指南(第3版)》 这本书具体说明了触发中断需要多长时间。 在权威指南的第74页提到, Cortex-M3和Cortex-M4的中断等待非常小,只有12个周期 。也就是说触发中断后,需要12个时钟

    2024年04月10日
    浏览(41)
  • STM32F103RCT6开发板M3单片机教程06--定时器中断

    除非特别说明,本章节描述的模块应用于整个 STM32F103xx 微控制器系列,因为我们使用是 STM32F103RCT6开发板是mini最小系统板。 本教程使用是( 光明谷SUN_STM32mini开发板 )   首先了解一下是STM32F10X定时器(Timer)   注: 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101

    2024年02月04日
    浏览(67)
  • STM32单片机(六)TIM定时器 -> 第二节:TIM定时中断练习(定时器定时中断和定时器外部时钟)

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月09日
    浏览(41)
  • 7、江科大stm32视频学习笔记——中断的应用:对射式红外传感器计次&旋转编码器计次

    目录 1、标志位函数 2、 初始化的中断的步骤 3、对射式红外传感器计次 (1)接线图 (2)CountSensor.c (3)main.c 4、旋转编码器计次 (1)接线图(旋转编码器接在PB1、PB0引脚) (2)Encoder.c (3)main.c 5、建议 //在 主程序 中查看标志位和清楚标志位,用以下两个函数,能不能

    2024年02月11日
    浏览(47)
  • STM32单片机学习3--STM32控制键盘

    单片机型号:STM32F103C8T6 开发环境:Keil5 4种输入模式 上拉输入模式:在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为1,高电平(与Vdd相连的为上拉电阻); 下拉输入模式:在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为0,低电平(与Vss相连的为下拉电

    2024年02月10日
    浏览(60)
  • STM32单片机(五)第二节:EXTI外部中断练习(对射式红外传感器计次和旋转编码器计次)

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月09日
    浏览(47)
  • STM32单片机学习4--STM32控制八段码

    数码管:实际上是多个LED按照一定顺序排列,并加上遮罩所构成的元件。 八段码一般会引出9个引脚,其中7个引脚显示数字(或某些字母),1个显示小数点,1个作为片选端。 根据连接方式的不同,数码管分为 共阳 和 共阴 。 共阳在这端输出低电平时点亮,高电平时会熄灭

    2024年01月23日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包