笔记5之Systick定时器

本文介绍了一种使用STM32微控制器实现精确延时的方法。通过配置系统滴答定时器(SysTick),实现微秒级延时,并应用于LED闪烁实例中。展示了systick.c与systick.h文件的具体实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
在这里插入图片描述
一次最多计数2的24次方个时钟脉冲
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
systick.c的程序如下

#include "systick.h"
//#include "core_cm3.h"
static __IO u32 Timedelay;
void Systick_Init(void)
{
  if(SysTick_Config(SystemCoreClock/1000000))   //1us中断一次
	{
	while(1);
	}
	SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;   //关闭滴答器
}

void Delay_us(__IO u32 time)
{
	Timedelay=time;
	SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;
	while(Timedelay!=0);
}

void timedelay_decerement(void)
{
   if(Timedelay!=0x00)
	 {
	  Timedelay--;
	 }

}

systick.h的代码如下

#ifndef __SYSTICK_H
#define __SYSTICK_H
#include "stm32f10x.h"
void Systick_Init(void);
void Delay_us(__IO u32 time);
void timedelay_decerement(void);
#endif

mian.c的代码如下

#include "stm32f10x.h"
#include "led.h"
#include "systick.h"
/* 
 * 函数名:main
 * 描述  : 主函数
 * 输入  :无
 * 输出  : 无
 */
int main(void)
{
	LED_GPIO_Config();
	Systick_Init();
  while(1)
	{
		Delay_us(2000000);
		GPIO_ResetBits(GPIOE,GPIO_Pin_5|GPIO_Pin_6);	
		Delay_us(2000000);
		GPIO_SetBits(GPIOE,GPIO_Pin_5|GPIO_Pin_6);	
	}
}

stm32f10x_it.c中的函数如下

void SysTick_Handler(void)
{
	timedelay_decerement();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值