标题: STM32之SYSTICK TIME滴答时钟寄存器简表 [打印本页]

作者: xuwei    时间: 2015-6-23 14:23
标题: STM32之SYSTICK TIME滴答时钟寄存器简表
SYSTICK TIME寄存器简表
本文当由个人编制,方便查阅使用,王均伟2011/7/14天津第四项目部宿舍
在看中断的时候跳出来一个滴答时钟,这里被中文文档搞得一头雾水,所以写这个文档以资效验之用。
该处理器具有24位的系统定时器,SysTick的原理是递减到0,然后重新加载寄存器中的数据一次循环如果你不停止他的话。
1.SysTick control and status (STK_CTRL)控制和状态寄存器
  
第31位~17位为保留位必须为0,第15~3位亦然
16位:COUNTFLAG位表示如果自最后一次读取计数器计数为0,返回1,就是如果24位计数器减到0了,那么此位被写1,反之为0。
2位 CLKSOURCE: 时钟选择位,如果选择0表示AHB分频后的时钟8分频后作为SYSTICK的时钟,如果=1,表示直接把AHB分频后的时钟作为SYSTICK的时钟,这里看中文文档时差点被他搞混了,他只说了个内核时钟,和外部参考时钟,初学者知道个屁啊,所谓辞藻华丽,实际上初学者根本不理解,所以要参考E文文档的。
0: AHB/8所谓的参考时钟
1: Processor clock (AHB)所谓的内核时钟
1位 TICKINT: SysTick的异常请求启用
0: Counting down to zero does not assert the SysTick exception request
1: Counting down to zero to asserts the SysTick exception request.
0表示如果计数到0,那么不发出异常请求
1表示如果计数到1,那么发出异常请求
注意:如果选择0,那么可以用软件查询COUNTFLAG来判断是否计数到0,
0位 ENABLE: 使能SYSTICK计数器
0表示不使能滴答(sysytick),
1表示使能滴答(systick)
2.
SysTick 24位计数值得加载寄存器(STK_LOAD)
Bits 31:24为保留位必须=0
Bits 23:0:加载计数器的值,一共24位,
当计数器计数值为0,且开启时就会自动加载这个寄存器里的24位数值,知道减到0,然后又加载,一次循环,如果你不关闭的话。
重载值可在0x00000001-0x00FFFFFF范围的任何值。起始值
0是可能的,但没有任何效果,因为SysTick异常请求和COUNTFLAG是
从1数到0时激活。
作为一个连拍式(multi-shot)定时器,它每N+1 个时钟脉冲就触发一次,周而
复始,此处N 1 0x00FFFFFF 之间的任意值。所以,如果每100 个时钟脉冲就请求一次
时钟中断(tick interrupt),那么必须向RELOAD 载入99
如果每次时钟中断后都写入一个新值,
那么可以看作单拍(single shot)模式,因而必须写入实际的倒计数值。例如,如果在400 个时
钟脉冲后想请求一个时钟中断(tick),那么必须向RELOAD 写入400
以上就不在闲言了。
3.
SysTick当前值寄存器(STK_VAL)
Bits 31:24 必须为0,保留位
Bits 23:0 CURRENT[23:0]: 当前计数器的值
就是读取24位计数器的当前值
4.
SysTick校验值寄存器(STK_CALIB)
Bit 31 NOREF: 参考时钟 标志
读为零。表示一个单独提供参考时钟。这个频率
时钟HCLK/ 8。=AHB/8
Bit 30 SKEW: SKEW 标志
读为1时。 1 MS不精确定时校准值是不知道,因为TENMS
不知道。作为一个软件的实时时钟,这会影响SysTick的适用性
Bits 23:0 TENMS[23:0]: 校准值
读为9000。 SysTick的柜台上最大的HCLK/ 8运行时,表示校准值
作为外部时钟。对于72 MHz的HCLK时钟,SysTick的期限为1ms。
如果不知道校准信息,计算所需的校准值
处理器的时钟或外部时钟频率











欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1