×
单片机 > 单片机程序设计 > 详情

stm32f103 FreeRTOS 滴答时钟配置

发布时间:2020-05-19 发布时间:
|

stm32上的滴答时钟是操作系统运行的基础

stm32的滴答时钟树如下图,SysTick可以选择HCLK(AHB时钟)或HCLK/8作为运行时钟



stm32的滴答定时器是24bit的定时器,对于其配置只有四个寄存器:

STK_CTRL为控制寄存器

STK_LOAD为自动重装载寄存器

STK_VAL当前计数值寄存器(从重装载值向下计数,当该值为0时产生中断)

STK_CALIB为校准寄存器,不常用

控制寄存器STK_CTRL只有4位被用到:

bit0:ENABLE SysTick的使能位,1使能SysTick定时器,0关闭SysTick定时器

bit1:TICKINT SysTick中断使能位,1 当STK_VAL计数为0时会触发SysTick中断,0 当STK_VAL为0时不触发中断

bit2:CLKSOURCE SysTick时钟选择位,1 SysTick的时钟为AHB时钟,0 SysTick时钟为AHB/8

bit16:计数为0的标志位,若STK_VAL计数为0,此标志会被置1



---------------------------------------------------------------------SysTick基础知识分割线-------------------------------------------------------------------------------------------


FreeRTOS的时钟配置代码如下

void delay_init()

{

u32 reload;

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);//选择外部时钟 HCLK 72Mhz

fac_us=SystemCoreClock/1000000; //其他定时使用

reload=SystemCoreClock/1000000; //reload=72

reload*=1000000/configTICK_RATE_HZ; //reload=72*1000000/configTICK_RATE_HZ

fac_ms=1000/configTICK_RATE_HZ; //

 

SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk;   //开启SYSTICK中断

SysTick->LOAD=reload; //重装载值为reload=72*1000000/configTICK_RATE_HZ

 

SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;   //SysTick的使能  

}

由上可知重装载值reload=72*1000000/configTICK_RATE_HZ,配置的Sys_Tick的频率为72M
因此Sys_Tick定时周期为 reload*(1/72M) 秒 = 1/configTICK_RATE_HZ 秒



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析