《STM32单片机开发应用教程(HAL库版)—基于国信长天嵌入式竞赛实训平台(CT117E-M4)》第四章4.2 sysTICK系统定时器

写在前面——
  《STM32单片机开发应用教程(HAL库版)—基于国信长天嵌入式竞赛实训平台(CT117E-M4)》第四章4.2 sysTICK系统定时器,本节讲述syTIK系统定时器原理,以及其使用方法
官方例程下载:https://pan.baidu.com/s/1QC5BnDgY1m1me6-ihQ_OUQ?pwd=nqb1
提取码:nqb1

4.2 sysTICK系统定时器

4.2.1. 实验任务

1. 参考官方例程HAL_03_SYSTICK,掌握延迟函数HAL_Delay,实现流水灯。
2. 功能拓展:使用全局变量uwTick,实现自定义计时。

4.2.2. sysTICK系统定时器原理

1. sysTICK功能解析

   sysTICK系统定时器在CPU核内部实现的,跟MCU外设无关,因此无需外部电路连接。只要是ARM Cortex-M系列内核的MCU都包含这个定时器。使用内核的sysTICK定时器来实现延时,可以不占用系统定时器,节约资源。
  sysTICK 一般用于 HAL 库的毫秒级延时函数HAL_Delay(),可以实现精准的延时计时。该函数已经封装好了,直接调用即可。
  但是,在按键长/短按等实例中,需要精确的计时,这就要使用到sysTICK定时器。
简单说, sysTICK就是一个24bit、倒计时(递减计数)、自动重装载定时器,倒计时结束会产生一个中断。
在这里插入图片描述
  设:VAL中的数值为 80,脉冲频率为 80MHz,则VAL由 80 减到 0 所需要的时间为 ,并且当减到 0 时会触发中断(相当于 1us 定时器),同时 LOAD 的值也会重新载入到VAL中。
  在 STM32CubeMX 中配置好时钟树后,时钟频率会输入到 Cortex System timer内核时钟 。而 sysTICK又属于内核,故给到 sysTICK的脉冲频率来自于此。
在这里插入图片描述

2. sysTICK —HAL_Delay函数代码解析

  精准的1ms定时在SysTick_Config()中,从此函数逐渐深入到 core_cm4.h 中就有详细的SysTICK配置。
在这里插入图片描述
  LOAD寄存器 和 VAL寄存器 的值都在此函数中配置好了。
  这样,执行我们编程的函数时,内核还会不断的产生1ms中断(只是我们看不见),该中断服务函数SysTick_Handler在stm32g4xx.it.c中。
在这里插入图片描述
  其中,HAL_IncTick()在stm32g4xx_hal.c中定义:
在这里插入图片描述
  其中,uwTick是一个全局变量(非常重要的变量),uwTickFreq 的值为1(可跳转深入查看)。也就是说,通过中断服务函数SysTi

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是春老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值