您的位置:首页 > 其它

STM32F10x_StdPeriph_Lib_V3.5.0库与系统滴答定时器(Systick)

2013-10-02 16:55 597 查看
在V3.5的库中,关于系统滴答的配置是在core_cm3.h文件中,其代码如下:

static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */

SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Cortex-M0 System Interrupts */
SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */
SysTick->CTRL  = /*SysTick_CTRL_CLKSOURCE_Msk |*/
SysTick_CTRL_TICKINT_Msk   |
SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */
return (0);                                                  /* Function successful */
}


关于systick,ST的STM32F10xxx_Reference_Manual文档介绍不多,没有其寄存器的描述说明,只能在Cortex-M3权威指南中找到一些描述。



有四个寄存器,控制寄存器(CTRL)、重装载值寄存器(RELOAD)、当前值寄存器(VAL)、校准值(CALIB).
控制寄存器几个bit的含义是:
第0位:ENABLE,Systick 使能位 (0:关闭Systick功能;1:开启Systick功能)
第1位:TICKINT,Systick 中断使能位 (0:关闭Systick中断;1:开启Systick中断)
第2位:CLKSOURCE,Systick时钟源选择 (0:使用HCLK/8 作为Systick时钟;1:使用HCLK作为Systick时钟)(与具体的芯片实现有关系)
第16位:COUNTFLAG,Systick计数比较标志,如果在上次读取本寄存器后,SysTick 已经数到了0,则该位为1。如果读取该位,该位将自动清零

从上面的代码可以看出,V3.5库默认是使用HCLK作为Systick时钟的。如果用Systick来计时一个比较长的值,可以选择使用HCLK/8作为Systick时钟。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: