原创 STM32 System Tick.

2008-7-17 01:03 7477 8 9 分类: MCU/ 嵌入式

时钟始终是数字系统的心脏,而操作系统的心脏system tick(也称系统滴答)则是由承载它的硬件(CPU)提供。通常system tick“跳动”比系统硬件的时钟“跳动”要慢得多,硬件时钟可以是几MHz,几十MHz,几百MHz,甚至上GHz。而systick仅仅是两到三位数的量级。另外硬件的时钟是物理上的电信号,而systick则是系统的逻辑信号,前者用硬件实现,后者则由CPU的逻辑产生。


STM32为支持操作系统所特有的systick中断功能,为操作系统在STM32上的移植铺平了道路。systick是STM32的核cortexM3所拥有的。对其操作只要通过它的4个寄存器组(图1)来进行就行了。


点击开大图


           图1、CortexM3 systick  寄存器组(选自The.Definitive.Guide.to.the.ARM.Cortex.M3)。


systickCSR 控制及状态寄存器


systickRVR 重载计数值寄存器


systickCVR 当前计数值寄存器


systickCALVR 校准寄存器


关于寄存器的功能和位作用参看The.Definitive.Guide.to.the.ARM.Cortex.M3一书,第13章。


systickCSR 中有三个控制位bit0使能sysTick计数器,bit1使能systick中断,bit2为sysTick计数器的输入源选择位。


systick定时器实际上就是个倒数计数器,倒数计数所选的输入时钟,每次都从预置值开始倒数计数,一直计数到0,如果此时systick中断使能位置位了的话就会产生一个systick的系统中断,程序自动跳转到SysTickHandler处执行,你在SysTickHandler内实现操作系统所需的时间片调度函数(对于uCOS则可直接调用OSTimeTick()函数)。


使用ST的函数库使用systick的方法


1、调用SysTick_CounterCmd() 失能SysTick计数器
      调用SysTick_ITConfig ()     失能SysTick中断


2、调用SysTick_CLKSourceConfig() 设置SysTick时钟源。


3、调用SysTick_SetReload() 设置SysTick重装载值。


4、调用SysTick_ITConfig ()     使能SysTick中断


5、调用SysTick_CounterCmd() 开启SysTick计数器


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户432338 2013-5-8 15:22

不错~
相关推荐阅读
用户1284802 2008-07-17 16:02
STM32的优先级寄存器。
CortexM3的内核使用一个8bit的寄存器来进行优先级分组。组里面又分为连续的高低两个位组部分:抢占优先级位组(preempt priority level 从MSB开始),子优先级位组(subp...
我要评论
1
8
关闭 站长推荐上一条 /3 下一条