STM32 BASEPRI的作用和官方文档描述不准确的地方
BASEPRI的作用
简而言之,BASEPRI与PRIMASK和FAULTMASK都是用来屏蔽中断的,《Cortex-M3权威指南》有下面的描述:
注:图中的“最多9位”和其他的文档不一致,其他的文档中BASEPRI是8位的。
红色方框所圈即是BASEPRI所能屏蔽的中断范围。STM32官方文档《Cortex®-M4 programming manual》也有相关的说明,如下:
从上图可以看出当BASEPRI设置为非零值时,处理器不会处理“优先级值”大于或等于BASEPRI的异常,即屏蔽“优先级值”>=BASEPRI的异常。BASEPRI的位域和中断优先级寄存器中的优先级位域一致。
官方文档描述不准确的地方
根据以上的结论,有以下的例子:
但实验发现优先级为:0b00100000的中断也会被屏蔽,这个实验现象与STM32的官方文档上的描述不符,让人十分疑惑。
经过多次实验,提出了一个大胆猜想,即BASEPRI屏蔽中断还和优先级组有关。优先级组的官方文档描述如下: