前不久在研究SYSTICK有关问题阅读相关技术资料时,无意间产生了个小疑惑。
问题是这样的,我们知道SYSTICK定时器是个24位向下计数器,每当发生从1记到0时会让一个名为COUNTFLAG的标志位置1,如果此时SYSTICK的滴答中断请求使能了的话,可以对CPU发起中断请求。
根据我们平常STM32的开发经验,通常各种外设事件发起中断请求时,往往有相应的事件标志跟中断响应关联,在中断服务程序里并将相关事件标志做清零操作,否则它会没完没了地发起中断请求。基于这点,我想这个COUNTFLAG标志应该也是跟SYSTICK中断密切相关,溢出时被置位,在SYSTICK中断服务程序里将其清零。
可是,我们平常的SYSTICK的中断服务程序里根本没看到哪里有对COUNTFLAG标志做清零。ARM Cortex内核手册针对COUNTFLAG标志的描述中涉及它可以清零的地方有两处: