由stm32F103zet6嘀嗒定时器引申出的系统中断和外设中断问题。
嘀嗒定时器(SysTick)
在外部中断里使用滴答定时器延时(理论上中断里不可以延时,此处只做研究嘀嗒的工作方式用),直接调用void SysTick_Init(void)函数后在中断中使用延时发现不起作用。(中断配置为只有抢占优先级模式,并且外部中断优先级设为1)
后找到SysTick_Init、SysTick_Config、NVIC_SetPriority函数,最后在NVIC_SetPriority函数中发现写了SCB系统控制寄存器组中SHP系统操作优先级寄存器的第11位(SHP[11]),默认SysTick初始化后是7。之后将该位写0(SCB->SHP[11]=0;),即把嘀嗒的优先级调到了0(最高)。开启后可行。
通过查看NVIC_SetPriority函数发现,配置32的中断优先级有两个寄存器,分别是配置配置系统中断和外设中断的,这二者的中断关系通过查看M3的权威手册
发现是同级的关系,SO在有理论依据的基础上就可以大胆配置了。
外部中断的IO口映像图: