【芯片】Systick

时间

单位名称 标准符号 常见简写 与秒(s)的换算关系 相邻单位间的换算关系
s 1 s = 1 s(基本单位) 1 s = 10³ ms(1 秒 = 1000 毫秒)
毫秒 ms 1 ms = 10⁻³ s = 0.001 s 1 ms = 10³ μs(1 毫秒 = 1000 微秒)
微秒 μs us 1 μs = 10⁻⁶ s = 0.000001 s 1 μs = 10³ ns(1 微秒 = 1000 纳秒)
纳秒 ns 1 ns = 10⁻⁹ s = 0.000000001 s 1 ns = 10⁻³ μs(1 纳秒 = 0.001 微秒)

SysTick:系统滴答定时器

SysTick 本身是相对计数器,要让它精准映射现实时间,需解决时钟源精度误差补偿问题

1、选择稳定的时钟源(核心前提)

  • 内部 RC 振荡器:成本低、无需外部元件,但精度差(漂移可达 1%~5%),导致 SysTick 的计数周期与现实时间偏差较大(如 100MHz RC 时钟实际可能只有 99MHz,1ms 定时会变成 1.01ms)。
  • 外部晶振(XTAL):精度高(漂移通常 < 10ppm,即百万分之十),是工业 / 汽车电子中 SysTick 映射现实时间的首选。

2. 精准计算重载值(RELOAD)

根据时钟源频率和目标现实时间,严格按照公式计算重载值,避免整数截断误差。

例如:若 HCLK=48MHz,要实现500μs定时:

  • 单个计数周期:1/48MHz ≈ 20.8333ns
  • 所需计数次数:500μs / 20.8333ns = 24000
  • 重载值配置:RELOAD = 23999(无截断误差,精准匹配)

问题1、SysTick 有哪些典型应用?

  1. 操作系统任务调度:为 RTOS(如 FreeRTOS、uCOS)提供系统节拍(tick),实现任务时间片轮转和延时管理
  2. 精确延时函数:实现 ms/us 级阻塞或非阻塞延时(如 HAL_Delay ())
  3. 系统运行时间统计:记录系统启动以来的 tick 数,用于性能分析和日志时间戳
  4. 软件定时器:基于 SysTick 中断实现多个定时任务管理

问题2、RTOS 为什么选择 SysTick 作为系统时钟?

  • 可移植性:所有 Cortex-M 内核都集成 SysTick,无需额外配置
  • 低功耗:内核自带,不占用额外外设资源
  • 统一接口:提供标准的 tick 中断,简化 RTOS 移植
  • 系统级支持:与 NVIC 紧密集成,支持任务上下文切
全部评论
牛呀,学到了!!!
点赞 回复 分享
发布于 昨天 11:18 广东

相关推荐

点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务