8 系统定时器(Systick)(STM32HAL库)

目录

系统定时器(Systick)

SysTick定时器特性介绍

SysTick定时器的功能

SysTick定时器寄存器介绍

Systick定时器的使用


系统定时器(Systick)

SysTick定时器特性介绍

  • 计数宽度:

24bit来存储数据,2^24=16,777,216

  • 计数器的工作模式

向下递减

  • 计数器的工作周期:

T=1/CLKSource,即1/72Mhz F(频率)=1/T(周期)

  • SysTick系统定时器是属于 Cortex-M内核中的一个外设,内嵌在 NVIC 中。
  • SysTick系统定时器含有一个计数宽度为24bit 的向下递减的自动重装载计数器,计数器每计数一次的时间为 1/CLKSource。一般我们设置CLKSource为系统时钟。以F103为例, CLKSource可以配置为72MHz。
  • 当重装载数值寄存器的值递减到 0 的时候, SysTick系统定时器可以配置产生一次中断,以此循环往复。
  • SysTick系统定时器是属于 Cortex-M内核的外设,所以一般基于 Cortex-M内核的单片机都具有这个系统定时器。这使得软件在 Cortex-M单片机中可以很容易的移植。

SysTick定时器的功能

  • SysTick系统定时器可以用于操作系统,用于产生时基,维持操作系统的心跳。一般操作系统都需要一个时基,进行任务的调度、同步等功能实现。
  • SysTick系统定时器最常用的功能,还是计数。比如用来进行微妙、毫秒延时,以此产生特定时序。

SysTick定时器寄存器介绍

工程讲解(基于CubeMX):

HAL库默认选择Systick作为系统时钟源(时基)

我们可以通过修改分频系数来设置Systick的时钟为9MHZ或者72MHZ

工程生成后,进入工程,CubeMX只是配置了系统时钟为72M

Systick定时器的使用

我们还需要自行配置systick的使用

(1)首先打开cortex.c文件,找到systick重装载寄存器配置函数

然后自定义板级支持包,定义一个毫秒级Systick延时函数

#include "./Systick/bsp_systick.h"

void systick_delay_ms(uint16_t ms)
{
    uint32_t i;
    //当前频率为1/72000000
    HAL_SYSTICK_Config(72000);//1/72000000*72000=1/1000
    
    for(i=0;i<ms;i++)
    {
         while( !((SysTick->CTRL) & (1<<16)) );
    }
    SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

竹烟淮雨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值