首页 > 其他 > 详细

关于嵌入式学习随笔->5《Systick定时器》

时间:2019-02-25 00:09:15      阅读:258      评论:0      收藏:0      [点我收藏+]

1、什么是Systick定时器?

---》Systick定时器是一个简单的滴答定时器,对于ST的M3、M4、M7内核芯片,都有滴答定时器。

---》Systick滴答定时器常常用来做延迟,或者时时操作系统的心跳时钟。这样可以节省MCU的资源,不用另外浪费一个定时器。比如UCOS系统中,分时复用,需要一个最小的时间戳,一般在STM32+UCOS系统中,都采用Systick滴答定时器做UCOS的心跳时钟。

---》Systick定时器就是一个系统滴答定时器,一个24位的倒计数定时器,记到0时,将从RELOAD寄存器中自动装载定时器初值。只要不把它在Systick控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。

---》Systick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。

---》Systick中断的优先级也可以设置。

2、Systick相关寄存器

4个Systick寄存器在HAL库中(core_cm7.h//core_cm4.h)定义位:

  1 typedef struct
  2 {
  3   __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
  4   __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */
  5   __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */
  6   __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */
  7 } SysTick_Type;

CTRL-------------Systick控制和状态寄存器

技术分享图片

LOAD-------------Systick自动重装载除值寄存器

技术分享图片

VAL----------------Systick当前值寄存器

技术分享图片

CALIB-------------Systick校准值寄存器

技术分享图片

对于STM32,外部时钟源是HCLK(AHB总线时钟)的1/8,内核时钟是HCLK时钟。

配置函数为:

  1 HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource);//Sysick时钟源选择
  1 Systick_Config(uint32_t ticks);//初始化Systick时钟为HCLK并开启中断
Systick中断服务函数为:
  1 void SysTick_Handler(void);

关于嵌入式学习随笔->5《Systick定时器》

原文:https://www.cnblogs.com/vcan123/p/10428760.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!