day4,stm32,EXTI外部中断

1,中断的定义

中断执行流程

NVIC 就是STM32中用来管理中断,分配优先级的,NVIC的中断优先级总共有16个等级,可以设置抢占优先级,和响应优先级

灰色部分为内核中断,其他部分就是stm32外设中断。

NVIC嵌套中断向量控制器

NVIC是一个内核外设,是CPU的小助手,用来管理中断优先级和中断,

n的意思是一个外设同时占用多个中断通道,所以有n条线,NVIC只有一个输出口,NVIC根据每个中断的优先级分配中断的先后顺序。之后右边这个输出口告诉CPU,你该处理哪个中断。

分为抢占优先级和响应优先级

区别,响应优先级紧急的病人可以插队提前看病

这种绝定是不是可以中断嵌套的优先级,就叫抢占优先级(比如来了非常紧急的病人而医生还在看病,那么可以直接去看病不管前面在看病的那个人)

4位二进制可以表示0到15的数,对应16个优先级,这个优先级的值越小,优先级越高,0就是最高优先级。这4位可以进行切分,分为高 n位优先级和低4-n位优先级,抢占优先级和响应优先级都相同的按中断号排队 (中断号就是上面那个中断表的序号)

有上面的5种分组方式04,13.22.31.40

分组0就是0位的抢占等级,取值只能为0,4位的响应等级,取值可以为0-15

分组1是1位的抢占等级,取值是0-1,3位的响应等级,取值是0-7

分组方式是我们自己选择的,我们在配置优先级的时候,就要注意抢占优先级和响应优先级的取值范围,

EXTI外部中断(引脚电平变化,申请中断)

GPIO_Pin相同的不能同时触发中断,比如PA1,PB1,PC1,这几个GPIO_Pin是一样的不能同时触发中断。只能选择一个

外部中断总共加起来一共有20个中断线路,16个GPIO_Pin是主要功能,其他4个是用来“蹭网”的(外部中断有个功能,就是从低功耗的停止模式下唤醒stm32)对于PVD电源电压监测,当电源从电压过低恢复时,就需要PVD借助一下外部中断退出停止模式,对于RTC闹钟来说就是为了省电,RTC定一个闹钟之后,STM32会进入停止模式,等到闹钟响应的时候再唤醒,这也需要借助外部中断,其他几个也是类似的。

最后外部中断的触发响应方式可以是中断响应和事件响应

中断响应就是申请中断,让CPU执行中断

事件响应,当外部中断检测到引脚变化时,正常流程是选择触发中断,但在STM32中,也可以选择触发一个事件,如果选择触发事件,那外部中断的信号就不会通向CPU了;而是通向其他外设,用来触发其他外设的操作,比如触发ADC转换,触发DMA等

总结,中断响应式正常流程,引脚电平变化触发中断,事件响应不会触发中断,而是触发其他外设,属于外设之间的联合工作。

外部中断的基本结构

AFIO就是一个数据选择器,它可以在前面3个GPIO外设的16个引脚里选择其中一个链接到后面的EXTI通道里,这就是所有的GPIO口都能够触发中断但相同的GPIO_Pin不能够同时触发中断的原因。

然后通过AFIO选择之后16个通道,就接到了EXTI边沿检测及控制电路上,同时,下面4个“蹭网”

的外设也是并列进来的,这些加起来,就组成了EXTI的20个输入信号。

然后经过EXTI的电路之后,分为两种输出,其中,上面的这些,接到了NVIC,是用来触发中断。

本来20路输出,应该有20路中断输出,但是可能ST公司觉得这个20个输出太多了,比较占用NVIC的通道资源,所以把其中外中断的9-5和15-10,给分到一个通道里,也就是说,外部中断的9-5会触发同一个中断函数,15-10也会触发同一个中断函数,所有需要再根据标志位来区分到底哪个中断进来,下面这里有20条输出线路到了其他外设,这就是用来触发其他外设操作的,也就是我们上面所说的事件响应。

AFIO复用IO口和EXTI的内部电路

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值