EXIT外部中断

中断系统

中断

在主程序运行中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行

中断优先级

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

中断嵌套

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

STM32的中断

68个可屏蔽中断通道,包含EXIT、TIM、ADC、USART、SPI、I2C、RTC等多个外设。使用NVIC统一管理中断,每个中断通道都拥有16个可编程的优先等级,可对优先级进行分组,进一步设置抢占优先级和响应优先级。STM32F103C8T6的中断向量表在参考手册9.1.2节。

NVIC

嵌套向量中断控制器(Nested Vectored Interrupt Controller),这是用来统一分配和管理中断的

这里涉及到中断的外设非常的多,如果每个中断都接在CPU上,那么会很麻烦,内核外设NVIC就能减轻CPU的负担。比如CPU是负责看病的医生,那么NVIC就是叫号系统,在一般情况下,病人(中断源)会根据优先级来看病,但有时候会有更紧急的病人(抢占优先级高),这时候哪怕已经有病人在看病,也要暂停来给更紧急的病人看病。

响应优先级

当有多个中断源向CPU申请中断时,那么会处理响应优先级更高的中断。

抢占优先级

 当抢占优先级更高的中断源响应时,即使CPU正在处理其他中断,CPU也要先去处理抢占优先级更高的中断,假如这时候有抢占优先级更高的中断响应时,会处理那个中断,这样就形成了中断嵌套。在通讯过程中如果没有即使响应中断,那么这次的数据会被下一次的数据覆盖掉。

NVIC优先级分组

EXIT外部中断

EXIT(Extern Interrupt)简介

EXTI基本结构

 中断引脚只能选择16个,例如GPIOA1和GPIOB0可以作为外部中断触发的引脚,但是GPIOA1和GPIOB1不能同时作为外部中断的引脚。EXTI的通道5~9和10~15被分配到了两个通道,也就是说5~9引脚会触发同一个中断函数,使用这些引脚的时候要判断中断源。

EXTI框图

触发方式

上升沿触发:低电平到高电平触发

下降沿触发:高电平到低电平触发

软件触发:在程序特定位置触发中断

双边沿触发:上升和下降沿均可触发

工作过程

边沿检测电路检测引脚电平变化,软件也可以触发中断最后可以选择进入上面的NVIC中,也可已选择下面来触发其他外设工作。

AFIO选择

另外四个EXTI线的连接方式如下:

● EXTI线16连接到PVD输出

● EXTI线17连接到RTC闹钟事件

● EXTI线18连接到USB唤醒事件

● EXTI线19连接到以太网唤醒事件(只适用于互联型产品)

AFIO是外设,使用前要先开启相应时钟

相关寄存器

中断屏蔽寄存器

 事件屏蔽寄存器

 上升沿触发选择寄存器

下降沿触发选择寄存器 

软件中断事件寄存器

 挂起寄存器

函数分析

EXTI函数

EXTI_DeInit

 该函数是把EXTI寄存器恢复成上电状态

EXTI_Init

EXIT_InitTypeDef结构体

 

 EXTI_StructurtInit

 EXTI_GenerateSWInterrupt

NVIC函数

NVIC_PriorityGroupConfig

这是进行中断优先级的分组

配置的参数是中断优先级的分组

 

 

NVIC_Init 

配置NVIC的函数也是结构体指针的方式

NVIC_InitTypeDef结构体

第一是通道的选择,在IRQn_Type结构体里面有很多条件编译,这里要根据自己芯片型号来选择参数。第二个是配置抢占优先级,第三个变量是响应优先级。 最后一个是使能。

中断函数

中断函数的向量表在启动文件里面,中断函数都是以IRQHandler结尾,根据自己配置的中断通道来选择中断函数。

程序实例

硬件配置

先开启GPIOB和复用IO的时钟,将14引脚配置成上拉输入模式,选择GPIOB为通道14,再配置线路和中断有限级

主函数

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值