花都网站建设设计,做市场推广应该掌握什么技巧,医疗网站如何做优化,分析苏宁易购网站内容建设1.中断概览
在开展红外传感器遮挡计次的实验之前#xff0c;有必要系统性的了解“中断”的基本知识.
中断是指#xff1a;在主程序运行过程中#xff0c;出现了特定的中断触发条件#xff08;中断源#xff09;#xff0c;使得CPU暂停当前正在运行的程序#xff0c;转…1.中断概览
在开展红外传感器遮挡计次的实验之前有必要系统性的了解“中断”的基本知识.
中断是指在主程序运行过程中出现了特定的中断触发条件中断源使得CPU暂停当前正在运行的程序转而去处理中断程序处理完成后又返回原来被暂停的位置继续运行。初看这里会感觉有些奇怪我正在干一件事情你是凭什么让我停下来去干另一件事然后干完之后再返回来去完成我本来在干的事情呢这里就涉及到一个概念叫做“优先级”。
优先级当有多个中断源同时申请中断的时候CPU会根据中断源的轻重缓急进行裁决优先响应更加紧急的中断源。假设场景在幼儿园老师是CPU本来正在上课有个小朋友喊“老师我尿裤裆了”这件事的优先级高于上课于是老师中断了上课优先去处理尿裤裆的小朋友。但如果遇到了优先级更高的事情怎么办例如这个小朋友尿裤裆了但是另一个小朋友拉裤裆了而且拉的是稀的已经流到地上了。
中断嵌套前面这个恶心的例子中小朋友尿裤子是一个中断事件让老师停止了上课但拉裤裆是一个中断优先级更高的事件老师不得不先处理拉裤裆的小朋友。这种在执行中断过程中又来了一个优先级更高的中断的过程叫做中断嵌套。 2.STM32的中断
STM32中包含了68个可屏蔽中断通道•包含EXTI、TIM、ADC、USART、SPI、I2C、RTC等多个外设。这些中断都通过NVIC统一管理先看看内部逻辑结构为什么要用到NVIC 从上图可以看出STM32涉及中断的外设都是先链接到NVIC最后在NVIC中经过优先级排序再决定传哪个中断信号给CPU。这是一种减少CPU运算量的设计方法试想如果一个学校里面连进出门禁、学生请假等等一系列的所有事情都需要校长亲自去管那这个校长就不用做其他事情了。在这里CPU也是同样的让他专注于运算NVIC做他的秘书。
使用NVIC统一管理中断每个中断通道都拥有16个可编程的优先等级可对优先级进行分组进一步设置抢占优先级和响应优先级。
2.1抢占优先级和响应优先级
在上面的图里可以看到NVIC的优先级一共有0-15个等级这里需要注意的是很多教程和书里会有这么一句话“NVIC的中断优先级由优先级寄存器的4位0~15决定”试一试2进制的4位最小和最大可以表示什么十进制数字0000--01111--15。这样就可以理解了总共有0-15共计16个优先级排序在stm32的底层是用4位2进制数来表达这些优先级暂且这么理解。
这4位二进制数可以进行切分分为高n位的抢占优先级和低4-n位的响应优先级抢占优先级高的可以中断嵌套响应优先级高的可以优先排队抢占优先级和响应优先级均相同的按中断号排队。 上面这个表其实很好理解反正总共只有4位二进制数可以用来表达优先级还要在这4位里面分个组一部分用来表达抢占优先级小朋友拉裤裆这事很上头是最优先的一部分用来表达响应优先级小朋友尿裤裆忍一忍没准自己干了不是太上头。
假设我要用这4位二进制中的2位去表达抢占优先级那就是000-111即0-7总共可以容纳八个小朋友拉裤裆用4位二进制中的其余2位去表达响应优先级那也是000-111即0-7总共可以容纳八个小朋友尿裤裆。总之老师一回就只能处理16个小朋友的“惊喜”至于是拉裤裆还是尿裤裆你们自己选。 这样的分组总共有5中就是表格第一列的分组0~分组4.
2.2EXTI
全称是Extern Interrupt外部中断这是专门用于监测外部发起中断的模块。•EXTI可以监测指定GPIO口的电平信号当其指定的GPIO口产生电平变化时EXTI将立即向NVIC发出中断申请经过NVIC裁决后即可中断CPU主程序使CPU执行EXTI对应的中断程序。
支持的触发方式有上升沿/下降沿/双边沿/软件触发。
支持的GPIO口所有GPIO口但相同的Pin不能同时触发中断通道数16个GPIO_Pin外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒
触发响应方式中断响应/事件响应
上面硕了EXTI主要是监测引脚输入的外部中断信号但是STM32引脚那么多到底选择哪个去监测是需要先配置的这里就需要用到AFIO整体的EXTI结构如下图 AFIO的功能是引脚的复用和重定义在中断部分AFIO的主要作用是中断引脚的选择别的先不管。 EXTI的内部逻辑框图如下 这个逻辑比较简单用与门和或门来选择信号配合中间的寄存器来选择中断信号的发送。具体内容可以先不深究知道这东西在哪儿要用回来翻看就是了。