1、中断系统
中断系统是管理和执行中断的逻辑结构,外部中断是众多能产生中断的外设之一。
1.中断:
在主程序运行过程中,出现了特定的中断触发条件 (中断源,如对于外部中断来说可以是引脚发生了电平跳变,对于定时器来说,可以是定时时间到了,对于串口通信来说可以是接收到了数据),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行
2. 中断优先级:
当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源。 (这个根据具体需求进行设计,紧急的任务优先级设置高一点,防上紧急的事件被别的中断耽误。)
3.中断嵌套:
当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回(中断嵌套也是为了照顾比较紧急的中断的,这个时候考虑的是抢断优先级)
4.中断执行流程:
5.stm32的中断:
中断通道: 即中断源,能触发中断函数的调用。
68 是 F1 系列系列最多的中断数量,对于一个具体的型号可能没有这么多中断,所以以对应型号的数据手册为准。
NVIC 是用于管理中断 和分配优先级的,优先级总共有16个等级。
2.NVIC 基本结构
1.基本结构
全称: 嵌套中断向量控制器
作用: 统一分配中断优先级和管理中断的。是一个内核外设,是CPU 的小助手。如果将所有中断全部接在 cpu 上,CPU 还得引出很多线进行适配,设计上就很麻烦。NVIC有很多输入口,中断线路都可以接过来。
为了便于理解,可以将CPU 看作是一个医生,NVIC 是一个叫号系统,如果让医生去处理病人的等级进而判断先看谁后看谁非常浪费医生的时间,因此叫号系统会做好这个工作,将病人根据病情分为不同的等级,医生只管看叫号系统筛选出的病人即可。
2.应优先级和抢占优先级
插队:响应优先级
不等上个病人进去就直接进去:抢占优先级3. EXTI(Extern Interrupt)外部中断
EXTI可以监测指定 GPIO 口的电平信号,当其指定的 GPIO 口产生电平变化时, EXTI 将立即向 NVIC 发出中断申请,经过 NVIC 裁决后即可中断 CPU 主程序,使 CPU 执行 EXTI 对应的中断程序。
支持的触发方式:上升沿 / 下降沿 / 双边沿 / 软件触发
支持的 GPIO 口:所有 GPIO 口,但相同的 Pin (例如 PA1 、 PB1 、 PC1 等 )不能 同时触发中断
通道数: 16个GPIO_Pin ,外加 PVD 输出、 RTC 闹钟、 USB 唤醒、以太网 唤醒(一共 20 个)
触发响应方式:中断响应 / 事件响应
外部中断有个功能:从低功耗模式的停止模式下唤醒stm32
例如PVD电源电压检测:当从电源从电压过低恢复时,需要PVD借助外部中断退出停止模式
RTC闹钟:RTC定一个闹钟之后,stm32进入停止模式,等闹钟响再唤醒,也需要外部中断
中断响应:申请中断,让CPU执行中断函数
事件响应:触发一个事件,则中断信号不会通向CPU,而是通向其他外设的操作,例如触发ADC转换、触发DMA等(stm32对外部中断增加的额外的功能)(也就是不会触发中断,而是触发外设操作)
4 旋转编码器(机器触点式)
介绍:
用来测量位置、速度或旋转方向的装置,当其旋转轴旋转时,其输出端可以输出与旋转速度和方向对应的方波信号,读取方波信号的频率和相位信息即可得知旋转轴的速度和方向。
类型: 机械触点式/霍尔传感器式/光栅式