当前位置:   article > 正文

系统滴答定时器

系统滴答定时器
  • SysTick是一个24位定时器,属于Corte-M4内核中的一个外设,类似NVIC。
  • 一个周期定时器,用于提供时间基准,多为操作系统所使用,常用于对时间要求严格的情况。
  • SysTick定时器一次最多可以计数2^24(24bit)个时钟脉冲,这个脉冲计数值保存在当前计数值寄存器STK_VAL(Systick current value register)中,只能向下计数,也就是倒计数,每接收到一个时钟脉冲(CPU主频),STK_VAL的值就会向下-1,当减到0时,硬件会自动将重装载寄存器STK_LOAD(可以设定,和STK_VAL初始值相等)中保存的数值加载到STK_VAL,使其重新计数。并且,系统滴答定时器就产生一次中断,以此循环往复,只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息。

SysTick相关寄存器

寄存器名称

寄存器描述

CTRL

SysTick控制及状态寄存器

LOAD

SysTick重装载数值寄存器

VAL

SysTick当前数值寄存器

CALIB

SysTick校准数值寄存器

不过还是得重相应的代码中去看看,一层一层把它扒开来的去看。

 

这就是它底层的东西了,假如SystemCoreClock为80Mhz,那么TicksNumb = 80000,则 LOAD的值为80000,那么,根据前面说的,VAL的值为 80000,主频为80Mhz,1/80M*80000 = 1ms,所以每1ms进入滴答定时器中。

再看看stm32g4xx_it.c中的SystTick_Handler函数

 

所以那个滴答定时器就会让一个变量每一毫秒+1,也就是uwTick

再看看HAL_Delay函数 

Tickstart = uwTick

假如延时500ms,那么wait = 500

  1. while ((HAL_GetTick() - tickstart) < wait)
  2.   {
  3.   }

这个函数就一直去查当前的滴答值,然后减去刚一进来的滴答值tickstart,现在距离刚进来时到现在过了多久,在main函数中的while(1)里不仅只执行里面的语句,其内核还在干其他的事,就是让uwTick每秒+1 

所以,这个变量(uwTick)还是有点子用,而且可以在主函数中调用。

看看主函数中,因为它包含了stm32g4xx_hal.h头文件,

 而在stm32g4xx_hal.h这个头文件中,ctrl+f,可以看到uwTick这个变量在这声明了

 

下面可以用这个变量来控制LED的闪烁

  1. //led函数
  2. void led_disp(unsigned char ucled)
  3. {
  4. //将所有的灯熄灭
  5. // HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
  6. HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_8
  7. |GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12,GPIO_PIN_SET);
  8. HAL_GPIO_WritePin(GPIOC,ucled<<8,GPIO_PIN_RESET);
  9. HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
  10. HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
  11. }

在主函数定义一个和uwTick类型一样的变量

  1. __IO uint32_t uwTick_Set_Point = 0;
  2. unsigned char i = 0;
  1. void Led_Proc(void)
  2. {
  3. if((uwTick - uwTick_Set_Point) < 500) //0.5s亮灭
  4. return;
  5. uwTick_Set_Point = uwTick;
  6. i++;
  7. if(i % 2)
  8. led_disp(0xff);
  9. else
  10. led_disp(0x00);
  11. }

然后在while(1)中调用。

以上学完之后的个人见解。。(嘿嘿)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/285161
推荐阅读
相关标签
  

闽ICP备14008679号