Stm32学习笔记(五)Systick定时器

目录

前言

一、SysTick_Init()

二、设置节拍程序

三、加入延时函数


前言

在之前直接操作I/O口的输出来控制LED实现流水灯的时候,让LED灯以一定的时间间隔来变化,比如0.5秒变化一个LED灯。但之前没有刻意地要求这个时间间隔很精确,所以采用了软件跑空循环来延时的方式,这样虽然很简单,但是精度会比较低。这次通过Systick定时器来实现精确定时,控制LED灯交替闪烁。

一、SysTick_Init()

SysTick定时器,又称系统滴答定时器,是24位自动重载定时器,与8051的带有自动重载定时方式有些类似,不过SysTick定时器是向下计数而且自带中断函数的。

初始化SysTick:

void SysTick_Init(void)
{
	/* SystemFrequency / 1000    1ms中断一次
	 * SystemFrequency / 100000	 10us中断一次
	 * SystemFrequency / 1000000 1us中断一次
	 */
	if (SysTick_Config(SystemCoreClock / 1000000))
	{ 
		/* Capture error */ 
		while (1);
	}
	/* 关闭系统滴答定时器:初始化先不用开启,等需要延时时才开启定时器  */
	SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
}

这段代码使用了 SysTick_Config 函数来配置 SysTick 定时器,使其每 1 微秒产生一次中断。SystemCoreClock 是系统时钟频率&#

你可能感兴趣的:(stm32入门笔记,stm32,学习,笔记)