你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32中的Systick定时器

[复制链接]
STMCU小助手 发布时间:2022-12-26 15:00
概述
Systick是一个定时器,Cortex M3,M4的芯片中都有


Systick定时器通常用于实现延时函数,节约MCU资源


Systick定时器就是系统滴答定时器,是一个24位的倒计时定时器,计到0为止


从RELOAD寄存器中自动装载定时初始值


只要不把它在Systick控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作


Systick定时器被捆绑在NVIC中,用于产生SYSTICK异常


Systick中断的优先级可以设置


Systick的寄存器

UE8VEULGH_{8~NJSW7H%H4J.png

CTRL


b8d06822b75b450aadc96ae2a5b42344.png


ENABLE 使能


TICKINT 是否产生中断


CLKSOURCE 时钟源,外部时钟源是HCLK的1/8,内核时钟是HCLK


COUNTFLAG 一个FLAG


LOAD


13c51018a83544a6b8c186d3085a8c2b.png


VAL

f5d2752f8f0744368e0e27e1ea3ab9a9.png

CALIB
不常用


相关函数
Systick_CLKSourceConfig


在固件库中的misc.c文件中(misc.c主要是用于中断管理)


函数实现如下


c1f7c7c21a7d4952b5e37827d1fb46e3.png


SysTick定义如下


core_cm3.h


d2219fc50607476982c97796e852f2a7.png


同一个文件中,查看其结构体类型


d79259569f6341a7be65f53b63d5b2eb.png


查看Systick_CLKSourceConfig函数入口参数的可选项,点击断言


2670cab137b7436eb5f9d8ec4eb02a5d.png

0374df8e75304978925fae0954fbb30b.png


可以看到,可选性分别是
SysTick_CLKSource_HCLK_Div8
SysTick_CLKSource_HCLK


因此:


60b2b379699c487eac5de7c3093976cb.png


内核级别的SysTick_Config
SysTick_Config


core_cm3.h(用于内核级别的函数)


9a0268f3c8f044f09962cb2a3880ccdc.png


入口参数是两个中断之间的时间间隔


924c6c9fd6ae43089fc685b7d9c7107e.png


判断有效性


7af5750df1344f18a659d93f82cc67ab.png


设定装载值


9a1b00fae6bf48fc87aaf0be58efc297.png


设定优先级,且初值为0


00cea5e7db614828884b24fec8b9fce8.png


设置时钟源,开启中断,使能定时器


设定了两个Systick中断之间的间隔,也就是说每过这么多的时间,systick的中断服务函数就要运行一次


一种实现方法
  1. static _IO uint32_t TimingDelay;

  2. void Delay(_IO uint32_t nTime){
  3.     TimeDely = nTime;
  4.     while(TimingDelay != 0);
  5. }

  6. void SysTick_Handler(void){
  7.     if (TimingDelay != 0x00){
  8.         TimingDelay--;
  9.     }
  10. }
复制代码

这样子,每次Systick定时器减1,都需要进入一次中断服务函数,这样会对CPU造成很大的浪费


另一种实现方法
SYSTEM文件下的
delay.c delay.h


9cc4d5830f584688950c35f1e8fe6ea1.png


若使用操作系统,则使能该宏


a05612016e4041d0a257f5060881df9c.png


delay_init函数


1fb145e9ef494c1e9fcc0d14cc7eb2ac.png


delay_us
注意:nus或nms不能大于LOAD的最大值,即2的24次方-1

e4dbb5ee8ee84123923434ac3321f879.png

————————————————
版权声明:CodeForCoffee

收藏 评论0 发布时间:2022-12-26 15:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版