systick系统定时器

systick简介

1:系统定时器,24位,只能递减,存在于内核,嵌套在NVIC中,所有的Cortex-M内核的单片机都具有这个定时器。
2:功能框图
递减计数器和重装载计数器都是24bit的
3:这篇用的是M3内核
4:可以用来做延时,相当于以前的延时函数
在这里插入图片描述

寄存器描述

在这里插入图片描述
在这里插入图片描述
COUNTFLAG:一读这个位,他就清零了

在这里插入图片描述
这个就是配置时钟源,是8分频还是1分频。ENABLE那个1是使能定时器

定时器时间计算

t = reload * ( 1/clk )
Clk = 72M时,t = (72) *(1/ 72 M )= 1US
Clk = 72M时,t = (72000) *(1/ 72 M )= 1MS
时间单位换算: 
1s = 1000ms = 1000 000 us = 1000 000 000ns

一般程序用的都是ms级别,us就一直进入中断

系统代码分析

1:SysTick寄存器结构体

//core_cm3.h
typedef struct
{
   
  __IO uint32_t CTRL;                         /*!< Offset: 0x00  SysTick Control and Status Register 控制和状态寄存器*/
  __IO uint32_t LOAD;                         /*!< Offset: 0x04  SysTick Reload Value Register       */
  __IO uint32_t VAL;                          /*!< Offset: 0x08  SysTick Current Value Register      */
  __I  uint32_t CALIB;                        /*!< Offset: 0x0C  SysTick Calibration Register  较正寄存器,用的很少,基本不需要用     */
} SysTick_Type;

2:SysTick配置库函数

//core_cm3.h
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
    
  //判断ticks的值是否大于2的24次方
  if (ticks > SysTick_LOAD_RELOAD_Msk)  <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

成草

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

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

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

打赏作者

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

抵扣说明:

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

余额充值