【STM32】stm32 SysTick定时器

0x01 SysTick定时器简介

SysTick定时器实际上是一个24位递减定时器

SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常。定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。

SysTick定时器除了能服务于操作系统之外,还能用于其它目的:如作为一个闹铃,用于测量时间等。

0x02 SysTick寄存器配置

有4个寄存器控制SysTick定时器。

  1. SysTick control and status register (STK_CTRL)
  2. SysTick reload value register (STK_LOAD)
  3. SysTick current value register (STK_VAL)
  4. SysTick calibration value register (STK_CALIB)

在这里插入图片描述
1. List item

SysTick配置代码
SysTick配置函数在core_cm3.h里面有定义。(库函数手册里面的函数有的已经失效了)

#include "bsp_systick.h"

unsigned int TimingDelay;  //在头文件声明 extern unsigned int TimingDelay;

void SysTick_Configuration(void)
{
	while (SysTick_Config(72));  //72为重装载值,72*(1/72Mhz)=1us,每隔1us进入异常中断
	SysTick->CTRL &= ~(1<<0);  //暂时初始化后关闭SysTick,使用前开启
}

void Delay_us(unsigned int n)
{
	TimingDelay = n;
	SysTick->CTRL |= (1<<0);  //开启SysTick
	while (TimingDelay);  //当TimingDelay减为0时,延时结束
	SysTick->CTRL &= ~(1<<0);  //关闭SysTick
}

SysTick中断函数

void SysTick_Handler(void)
{
	if (TimingDelay != 0)  //每进一次中断TimingDelay减1,相对于减1us
	TimingDelay--;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值