关于用SysTick配置延迟函数的设置

先看下流程框图:我们可以注意到SysTick是在Nvic中的一个外设定时器(内核外设)

为什么要用SysTick来设置延时函数?

那么SysTick包括什么,怎么配置寄存器

什么是SysTick定时器

SysTick:系统定时器,和普通定时器类似,它也可以定时,但是却是有特殊用途。它有24bits,定时器最大数值是2^24,并且计数时是向下递减计数,每次递减1,递减一次的时间是1/SYSCLK,一般来说SYSCLK为72MHz。当寄存器中的值减少到0时,会产生一个中断信号,进而执行相应的中断服务函数

SysTick寄存器

与SysTick相关的寄存器有4个:

  • CTRL控制及状态寄存器
  • LOAD重装载数值寄存器
  • VALUE当前数值寄存器
  • CALIB校准数值寄存器

但是一般使用情况下,只使用到前三个寄存器。最后一个校准数值寄存器不经常使用

SysTick实战

给load寄存器设置最大倒计数值,然后通过给val寄存器重启,这样load的最大计数值会赋给val,如果没有给val清零,那么计数值会是val寄存器里面的残值。

这张图展示了 SysTick 定时器的内部结构逻辑:LOAD 寄存器并不会直接赋值给 VAL,而是在执行 VAL = 0 时,控制逻辑触发"重装"(RESET),将 LOAD 的值加载进 VAL 并开始递减。COUNTFLAG 则在 VAL 从 1 递减到 0 时被置位,表示一次倒计时完成

代码

我们可以看到给CRTL寄存器,配置时钟源,CLKSOURCE为0使用外部时钟 = HCLK / 8,为1使用内部时钟 = HCLK(系统时钟),然后配合开启时钟enable。

最后当时倒计时解释,SysTick_CTRL_COUNTFLAG_Msk会置为1,跳出循环。

相关推荐
Messy create25 分钟前
【BMS-AFE-温度检测】
stm32·单片机·能源
东莞市永盛电气39 分钟前
三相208V变380V变压器,出海工业设备供电适配方案
python·单片机·嵌入式硬件
Learn-Share_HY2 小时前
[IT Network]如何配置反向路徑過濾器(rp_filter),以解決路由不對稱問題?
linux·嵌入式硬件·物联网·网络协议·tcp/ip·http·iot
深圳市宝华视联3 小时前
医院内网部署手术示教系统注意事项
嵌入式硬件·实时互动·音视频·实时音视频·视频编解码·嵌入式实时数据库
新晨单片机设计3 小时前
S001A-基于STM32单片机超声波视力保护仪【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus
星河单片机3 小时前
STM32驱动Y01-3IN1空气质量模块+OLED显示完整教程
stm32·单片机·嵌入式硬件·空气质量·甲醛检测·二氧化碳检测·tvoc检测
宣宣猪的小花园.3 小时前
【控制算法】PID 不只是三个参数:比例、积分、微分各在解决什么问题
人工智能·嵌入式硬件·机器学习
别催小唐敲代码4 小时前
stm32_mpu6050_滤波教程
stm32·单片机·嵌入式硬件
CPETW4 小时前
USB TO I2C_(Excel)_Scan ---- 1000KHz总线速率测试_A
c语言·开发语言·网络·科技·单片机
单片机仿真设计5 小时前
【proteus仿真】基于 51 单片机距离传感器警报装置设计(仿真图+程序)
单片机·嵌入式硬件·51单片机·proteus·毕设