当前位置:编程学习 > C/C++ >>

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++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,