2019-07-21 04:17发布
warship 发表于 2018-7-28 10:35 先说结论,STM32的中断控制是分级管理的,CM3内核中的NVIC是顶层,对每个通道都设有1BIT的中断挂起位, 但 ...
最多设置5个标签!
STM32的外部线中断共19条,而对于NVIC来说,实际上只有10个通道,具体如下:
内核值(IRQn) 助记符 备注
6 EXTI0_IRQn PX0(即PA0-PG0口线)
7 EXTI1_IRQn PX1口线
8 EXTI2_IRQn PX2口线
9 EXTI3_IRQn PX3口线
10 EXTI4_IRQn PX4口线
23 EXTI5_9_IRQn PX5-PX9口线
40 EXTI15_10_IRQn PX10-PX15口线
1 PVD_IRQn 电压监测
41 RTC_IRQn RTC闹钟
42 USB_IRQn USB唤醒
为进一步加深理解,我们从中断控制的角度来看一下串口1
虽然说只是一个串口,从中断控制的角度来看,也算是NVIC一个比较典型的下级机构,
对于NVIC来说,串口1只分配到了一个中断通道USART1_IRQn,编号值为37
但USART1的中断源是非常多的,
常用的有:
RXNE接收缓冲区非空中断
TC发送完成中断
TXE发送缓冲区空中断
其它的还有IDLE中断、CTS中断、错误中断等等,总计不下十种。
但这些,NVIC都是一概不管的,对NVIC只能算一个中断!!!。
具体各类小中断的细分都是由串口1的外设来实现,具体实现套路是:
每一种小中断必有相应的屏蔽位(有时候称为中断允许位xxIE, 一般在控制寄存器CR中),
另外必有相应的标志位(名称如RXNE、TC、TXE等,一般在状态寄存器中),相当于挂起位,在满足触发条件时由硬件置位,并一直保持(随便等待调阅监控)
虽然内核只有一个通道,但是外设可以对这个通道的响应有具体的标志位。
一周热门 更多>