中断系统的概念:
中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行
中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源
中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回
中断执行过程
- 主程序运行
- 中断条件满足,主程序立即暂停
- 由硬件电路自动跳转至中断程序中
- 中断程序执行
- 中断程序执行完毕
- 主程序返回被暂停的地方继续执行
中断嵌套执行过程
- 主程序运行
- 中断条件满足,主程序立即暂停
- 由硬件电路自动跳转至中断程序中
- 中断程序执行
- 更高优先级的中断发生,中断程序立即暂停
- 由硬件电路自动跳转至新的中断程序中
- 新的中断程序执行
- 新的中断程序完毕
- 中断程序返回被暂停的地方继续执行
- 中断程序执行完毕
- 主程序返回被暂停的地方继续执行
STM32中断:
68个可屏蔽中断通道,包含EXTI、TIM、ADC、USART、SPI、I2C、RTC等多个外设(68个为STM32F10X最多中断数量,具体型号中断数量以数据手册为准)***
使用NVIC统一管理中断,每个中断通道都拥有16个可编程的优先等级,可对优先级进行分组,进一步设置抢占优先级和响应优先级****
STM32中断资源:
上图灰色的是内核中断,地址一栏中的是指向中断服务函数的指针存储的地址。
NVIC
NVIC基本结构:
NVIC是一个内核外设
NVIC优先级分组:
NVIC的中断优先级由优先级寄存器的4位(0~15)决定,这4位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级。
抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队。