STM32 SysTick小结
文章目录
SysTick简介
系统定时器,24位,只能递减,存在于内核,嵌套在 NVIC 中。其大部分内容可以查看 STM32F10xxx Cortex-M3编程手册-英文版。
SysTick工作过程
1.计数器在时钟驱动下从初值开始计数直到0。
2.为0时可以产生中断或置位 COUNTFLAG 标志位。
3.如果没有关闭,则初值再次开始计数,如此循环。
计数过程中,计数器的实时值可由 STK_VAL 位得到
SysTick寄存器
STK_CTRL
控制及状态寄存器,只有四个有效位:
COUNTFLAG :如果计数器计到0,此位置1;如果软件读取这个位,这个位会置0;
CLKSOURCE :时钟选择位;0=AHB/8;1=AHB。
TICKINT:中断使能;0=无动作;1=产生中断。
ENABLE : 使能寄存器。
STK_LOAD
重装载寄存器。
RELOAD: 数到0时,被重新装载的值。
STK_VAL
当前数据寄存器;
CURRENT :读取时返回当前倒计时的值。
定时时间的计算
t = reload * (1/clk)
所以Clk = 72M,reload=72 时,t = 1us;
SysTick固件库编程
SysTick寄存器的结构体
结构体在 core_cm3.h 文件中。

SysTick固件库函数
配置函数在 core_cm3.h 文件中
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
//如果传入的重载值大于2^24,则跳出。
if (ticks > SysTick_LOAD_RELOAD_Msk) return (1);
/

本文深入解析STM32的SysTick系统定时器,涵盖其工作原理、寄存器配置、定时时间计算及固件库编程。介绍了SysTick的24位递减计数特性,如何通过STK_CTRL、STK_LOAD和STK_VAL寄存器控制计数过程,以及利用SysTick_Config函数设置中断优先级的方法。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



