STM32之HAL开发——系统定时器(SysTick)

系统定时器(SysTick)介绍

     SysTick—系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。

    因为 SysTick 是属于 CM3 内核的外设,所以所有基于 CM3 内核的单片机都具有这个系统定时器,使得软件在 CM3 单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。
 

寄存器介绍

    SysTick—系统定时器有 4 个寄存器,简要介绍如下。在使用 SysTick 产生定时的时候,只需要配置前三个寄存器,最后一个校准寄存器不需要使用。
CTRL控制以及状态寄存器使用方法
LOAD重装载数值寄存器
VAL当前数值寄存器

系统定时器(SysTick)使用

CubeMX配置流程

1.配置好RCC时钟
2.配置好时钟来源,时钟频率
3.SYS配置  
4.配置SYS时钟频率

工程代码介绍

使用系统定时器实现,Delay的功能
//时钟初始化配置
void SysTick_Init(void)
{
    /* SystemFrequency / 1000    1ms中断一次
     * SystemFrequency / 100000     10us中断一次
     * SystemFrequency / 1000000 1us中断一次
     */
    if (HAL_SYSTICK_Config(SystemCoreClock / 1000))
    { 
        /* Capture error */ 
        while (1);
    }
}
//延时函数
void Delay_us(__IO u32 nTime)
{ 
    TimingDelay = nTime;    

    while(TimingDelay != 0);
}
//中断调用函数
void TimingDelay_Decrement(void)
{
    if (TimingDelay != 0x00)
    { 
        TimingDelay--;
    }
}
//中断函数
void SysTick_Handler(void)
{
  HAL_IncTick();
    TimingDelay_Decrement();
}

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STMHAL的嘀嗒定时器SystickSystick是一个24位的向下递减的计数器,它的值每当时钟源到来一个时钟,就会减1。一般情况下,我们将Systick的时钟源设置为系统时钟HCLK,也就是80MHZ。这意味着每过1/80M秒,Systick里的计数器就会减1。 当Systick的重装载数值寄存器的值递减为0时,系统定时器就会产生一次中断。此后,CPU会自动重新装载计数器的值,并且循环逐渐递减。这就是Systick的工作原理。 在使用STM32HAL库函数进行延时时,我们可以使用函数HAL_Delay()实现毫秒级的延时。但有时候我们需要更精确的微秒级延时。为了实现微秒级延时,我们可以使用STM32L433的通用定时器TIM6。 除了Systick定时器以外,STM32L433还有6个定时器:TIM1、TIM2、TIM6、TIM7、TIM15、TIM16。其中,TIM6和TIM7是两个16位的自装载基本定时器,它们只能用于定时功能。而TIM1、TIM2、TIM15、TIM16是通用高级定时器,除了定时功能以外还能作为PWM输出。 要在STM32HAL中使用Systick定时器,我们需要调用函数HAL_Init()进行初始化配置,使能Systick。在函数HAL_RCC_ClockConfig中,我们可以看到将全局变量SystemCoreClock设置为80MHZ,并调用HAL_InitTick(),这样就将Systick的时钟源设置为80MHZ了。 通过以上介绍,我们可以了解到STM32HAL中的嘀嗒定时器Systick,它是一个24位的向下递减的计数器,用于实现精确的延时功能。同时,我们还了解到STM32L433还有其他的定时器可供使用,如TIM6和TIM7用于实现微秒级的延时功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值