《《《《《正文》》》》》
《什么是systick?》
这是一个24位的系统节拍定时器system tick timer,SysTick,具有自动重载和溢出中断功能,所有基于Cortex_M3处理器的微控制器都可以由这个定时器获得一定的时间间隔。
它是集成在内核里,并不是外扩的功能模块,因此它具有很高的通用性;
《systick的作用》
在单任务引用程序中,因为其架构就决定了它执行任务的串行性,这就引出一个问题:当某个任务出现问题时,就会牵连到后续的任务,进而导致整个系统崩溃。
要解决这个问题,可以使用实时操作系统(RTOS).因为RTOS以并行的架构处理任务,单一任务的崩溃并不会牵连到整个系统。这样用户出于可靠性的考虑可能就会基于RTOS来设计自己的应用程序。SYSTICK存在的意义就是提供必要的时钟节拍,为RTOS的任务调度提供一个有节奏的“心跳”。
这样存在就可以减低移植的难度;
《寄存器详解》
在《Cortex-M3权威指南》中有下图:
1、COUNTFLAG表示倒计到0时,会置1。
2、CLKSOURCE表示时钟源选择。外部时钟和内核时钟。
3、ENABLE表示使能\关闭systick。
4、RELOAD表示当计数值倒计到0时,则重新载入计数值的数值设置。
5、CURRENT表示写它可以使计数值清零。
他们在库文件中的名称映射;在core_cm3.h文件中:
他们都在SysTick这个结构体中,地址偏移的对应:
-
systick控制及状态寄存器 ==>SysTick->CTRL ==0xE000E010
-
systick重装载数值寄存器 ==>SysTick->LOAD==0xE000E014
-
systick当前数值寄存器 ==>SysTick->VAL==0xE000E018
《《《《《END》》》》》