之所以要讲这个滴答定时器,是因为它很特殊,stm32的定时器有内部也有外部的,而滴答定时器是在cortex内核里面的,明白滴答定时器,就可以根据这个思路去对stm32有更深的了解,可以说起到一个举一反三的作用吧。
滴答定时器在stm32手册中可以说是一笔带过,只是讲解了寄存器怎么用,很多童鞋可能对这个滴答定时器还是一头雾水,这第一篇先参考cortex-m3的内核手册讲一下滴答定时器在内核的位置。
在内核文件core_cm3.h(内核文件哦(⊙o⊙))中可以看到systick的地址
#define SysTick_BASE (SCS_BASE + 0x0010)
也就是说SysTick的基址是在SCS的基址上加0x0010的偏移,那再搜一下这个SCS的基址。(很多童鞋在stm32没有找到这个SCS,因为它是内核的一部分,在cortex-m3手册中可以查到,SCS是系统控制空间,在SCS 里的还有SysTick、MPU 以及代码调试控制所用的寄存器。)
#define SCS_BASE (0xE000E000)
这样就得出了SysTick的基地址为0xE000E010,这段地址是什么地方,就要看下cortex手册的地址映射
可以看到是在内部私有外设(private peripheral bus-internal)的NVIC段。可能有人会问,NVIC不是中断控制寄存器吗,感觉看数据手册来说,这段叫SCS,更为合理,这段不仅仅有NCIC还有其他的寄存器(之后根据库函数将SCB寄存器可能会更明了)
这就是滴答定时器在内核中的位置,下一篇会结合库函数讲下定时器的地址以及结构体
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』