stm32延时一分钟_STM32的几种延时方法

本文介绍了STM32微控制器使用MDK固件库3.0时,如何实现延时功能。从简单的循环延时到基于SysTick定时器的精确延时方法,包括中断和非中断方式,详细解析了每种延时方法的原理和代码实现。

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

.

STM32

的几种延时方法(基于

MDK

固件库

3.0

,晶振

8M

)

单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时

delay_us( )

毫秒级

delay_ms( )

1.

普通延时法

这个比较简单,

让单片机做一些无关紧要的工作来打发时间,

经常用循环来实现,

不过要做的比较精准还是要下一番功夫。

下面的代码是在网上搜到的,

经测试延

时比较精准。

//

粗延时函数,微秒

void delay_us(u16 time)

{

u16 i=0;

while(time--)

{

i=10;  //

自己定义

while(i--) ;

}

}

//

毫秒级的延时

void delay_ms(u16 time)

{

u16 i=0;

while(time--)

{

i=12000;  //

自己定义

while(i--) ;

}

}

2.SysTick

定时器延时

CM3

内核的处理器,

内部包含了一个

SysTick

定时器,

SysTick

是一个

24

位的

倒计数定时器,

当计到

0

时,

将从

RELOAD

寄存器中自动重装载定时初值。

要不把它在

SysTick

控制及状态寄存器中的使能位清除,就永不停息。

SysTick

STM32

的参考手册里面介绍的很简单,其详细介绍,请参阅《

Cortex-M3

威指南》

这里面也有两种方式实现:

a.

中断方式

如下,定义延时时间

time_delay

SysTick_Config()

定义中断时间段,在中断中

递减

time_delay

,从而实现延时。

volatile unsigned long time_delay; //

延时时间,注意定义为全局变量

//

延时

n_ms

void delay_ms(volatile unsigned long nms)

{

//SYSTICK

分频

--1ms

的系统时钟中断

if (SysTick_Config(SystemFrequency/1000))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值