【STM32调试案例】实现延时的3中常见方案

本文介绍了三种STM32延时方法:基础延时函数、使用Systick中断和定时器中断。延时函数精度有限,Systick和定时器中断提供更精确的延时控制,适用于嵌入式硬件开发。

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

方案一:基于延时函数的延时

#include <stm32f10x.h>
//1ms延时函数
void delay_nms(u16 time)
{
	u16 i = 0;
	while (time--)
	{
		i = 12000;
		while (i--);
	}
}

示例:delay_nms(1000)//1ms

该方式不能够保证很高的延时精度

方案二:Systick中断延时

在stm32f10x_it.h中声明一个全局变量

extern __IO uint32_t TimingDelay;

在stm32f10x_it.c中定义中断函数

void SysTick_Handler(void)
{
	if (TimingDelay != 0x00)
	{
		TimingDelay--;
	}
}

在main.c中定义以下函数与一个全局变量

void Init_SysTick(void)
{
	if (SysTick_Config(SysTickCoreClock / 1000))//1ms的时基
		while (1);
}
//延时函数
__IO uint32_t TimingDelay;//定义全局变量
void delay_ms(__IO uint32_t nTime)
{
	TimingDelay = nTime;
	while (TimingDelay != 0);
}

关于SysTick_Config()函数可以参略V350库帮助系统

方案三:定时器中断延时

在st

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值