您的位置:首页 > 其它

stm32 SysTick定时器LED

2017-08-18 00:00 489 查看
SysTick定时器是一个24位向下计数器的内核外设,每计数一次耗时1/SYSCLK,当重装载寄存器的值减到0时,系统定时器产生中断。

SysTick寄存器:(参考CM3权威指南)

CTRL 控制及状态寄存器



LOAD 重装载数值寄存器



VAL 当前数值寄存器



CALIB 校准数值寄存器





SysTick 属于内核的外设,有关的寄存器定义和库函数都在内核相关的库文件core_cm3.h 中。



调用SysTick_Config(ticks);通过形参ticks设置重装载寄存器的值,设置优先级为最低的15。清空当前计数器的值,设置系统时钟72M,使能中断与SysTick定时器。

SysTick定时器进入一次中断时间计算T=RELOAD * 1/SYSCLK。用一个变量t记录进入中断的次数,则计时时间为t * T。

定时函数:设置为进一次中断用时 1us,将要计时的时间作为全局变量在中断服务函数中递减。计时时间就是timedelay us



另一种定时方法是利用每次SysTick计数到0时CTRL的位16会被置1,而读取该位后会自动清0的特性。



——————————————————————————————————————————————————————————————————————————————————————

SysTick相关函数:

SysTick_CLKSourceConfig() //Systick选择时钟源(FWLIB-misc.c文件中)

SysTick_Config(uint32_t ticks) //初始化Systick(CORE-core_cm3.h文件中)

void SysTick_Handler(void);//中断服务函数

原型如下:



函数1的参数



  SysTick_CLKSource_HCLK_Div8 外部时钟 72/8=9M
  SysTick_CLKSource_HCLK 内部时钟 HCLK=72M

函数2原型

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: