STM32 SysTick小结

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

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);
   /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值