STM32学习笔记--Systick定时器+delay延时函数

基于正点原子mini开发板、STM32RCT6、库函数

一、Systick定时器介绍

  ARM Cortex-M3 内核的处理器内部包含了一个简单的SysTick 定时器,它是一个24 位的倒计数定时器。
  SysTick:系统定时器,24位到计数定时器,只能递减,存在于内核,嵌套在NVIC(中断向量控制器)中,所有的Cortex-M内核的单片机都具有这个定时器。
⚫ 当计到 0 时它就会从RELOAD 寄存器中自动重装载定时初值。只要不把CTRL 寄存器中的 ENABLE 为清 0,它就永不停息,即使在睡眠模式下也能工作。
⚫ SysTick定时器能产生中断
⚫ Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个复杂的定时器去实现简单的功能,比如在UCOS中,分时复用,需要一个最小的时间戳,一般在STM32+UCOS系统中,都采用Systick做UCOS的心跳时钟。

二、Systick相关寄存器

  4个Systick寄存器:

CTRL SysTick 控制和状态寄存器

LOAD SysTick 自动重装载除值寄存器

VAL SysTick 当前值寄存器

CALIB SysTick 校准值寄存器

1.SysTick 控制和状态寄存器- CTRL
在这里插入图片描述
  对于STM32,外部时钟源是HCLK(AHB总线时钟)的1/8;内核时钟是HCLK时钟。配置函数:

SysTick_CLKSourceConfig();

2.SysTick 重装载数值寄存器- LOAD
在这里插入图片描述
3.SysTick 当前值寄存器- VAL
在这里插入图片描述

三、Systick相关库函数

1.SysTick_Config(uint32_t ticks)

SysTick_Config(uint32_t ticks) //初始化systick,时钟为HCLK,并开启中断
                               //core_cm3.h文件中

 主要的作用:
1)、初始化systick
2)、打开systick
3)、打开systick的中断并设置优先级
4)、返回一个0代表成功或1代表失败

static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
    
  if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */
                                                               
  SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PR
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值