stm32-M3系统时基定时器
stm32-M3有一个系统时基定时器,其为一个24位递减计数器。系统时基定时器设置初值并使能后,每经过一个系统时钟周期,计数器就减一,当计数器递减到0时,系统时基定时器自动重装载初值,并继续向下计数,同时内部的COUNTFLAG标志会置位,触发中断。
系统时基定时器功能简单,只能提供一个时基定时器,作为滴答时钟。在外部晶振8MHZ,通过PLL9倍频,系统时钟为72MHz,系统时钟定时器的递减频率可以设为9MHz(HCLK/8),在这个条件下,把系统定时器的初值设置为90000,就能够产生10ms的时间基值。如果开启中断,则产生10ms的中断。值得欣慰的是时基定时器的中断并不需要清除中断位,系统会自动清除。
下面通过一个简单的程序,让灯1s跳变一次。
[cpp]
void SysTick_Configuration(void)
{
/* Configure HCLK clock as SysTick clock source */
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //系统时钟8分频
/* SysTick interrupt each 1000 Hz with HCLK equal to 72MHz */
SysTick_SetReload(90000); //周期10ms
/* Enable the SysTick Interrupt */
SysTick_ITConfig(ENABLE); //打开中断
/* Enable the SysTick Counter */
SysTick_CounterCmd(SysTick_Counter_Enable); //允许计数
}
void SysTickHandler(void)
{
num++;
if(num == 100)
{ num = 0; //计数器清0
LED ();//LED跳变函数
}
}
系统时基定时器是一个很方便的定时器,没有TIM定时器那么麻烦,使用起来很方便,可以进行一些简单的定时。
作者:rongdeguoqian
补充:软件开发 , C++ ,