STM32的C语言软件延时函数

STM32的延时方法很多,其中采用定时器延时,可以得到较为精确的延时,但是有时对延时精度要求不高的场合,采用软件延时,也是必须的。特别是在RTOS系统中,使用SysTick的普通计数模式对延迟进行管理,如果需要执行毫秒级延时,会引起系统调度。此时要想不会引起任务调度,就会用到C语言软件延时函数。

实现方法如下:
假设CPU主频为72MHz,时钟周期为1/72MHz=13.88纳秒。当延时10微秒,需要执行的空指令个数为10微秒/13.8纳秒=724个;当延时1毫妙,需要执行72027个周期,相当于延时0.993972.6毫妙。

//函数功能:当time=10,需要执行738个周期,相当于延时10.25微妙
void delay_us(u16 time)

{

u16 i=0;

while(time--)

{

i=10; //自己定义

while(i--) ;

}

}

//函数功能:当time=1,需要执行72027个周期,相当于延时0.993972.6毫妙
void delay_ms(u16 time)

{

u16 i=0;

while(time--)

{

i=12000; //自己定义

while(i--) ;

}

}

C语言软件延时函数,不会引起软件延时调度,在进入系统之前可能需要这种延时,因此,还是需要的。这使用方法,在51单片机中会经常被用到。

相关推荐
不脱发的程序猿14 分钟前
单片机超频怎么搞?
单片机·嵌入式硬件·单片机超频
hahaha60161 小时前
uart16550详细说明
stm32·单片机·嵌入式硬件
Invinciblenuonuo1 小时前
STM32八股【9】-----volatile关键字
stm32·单片机·嵌入式硬件
深圳市青牛科技实业有限公司 小芋圆1 小时前
CS4334:一款高性能的立体声音频数模转换器
科技·嵌入式硬件·音视频·智能家居·新能源·工控主板
赵谨言2 小时前
基于单片机路灯自动控制仪仿真设计
经验分享·单片机·毕业设计
Joshua.X2 小时前
PWM讲解+STM32任意频率、占空比、脉宽生成函数介绍
stm32·单片机·嵌入式硬件·pwm·嵌入式开发·控制·嵌入式软件
YOYO--小天3 小时前
RK3588 ADB使用
linux·嵌入式硬件·adb
小智学长 | 嵌入式7 小时前
单片机-STM32部分:17、数码管
stm32·单片机·嵌入式硬件
百里东风7 小时前
STM32外设DA实战-DAC + DMA 输出正弦波
stm32·单片机·嵌入式硬件
赵谨言11 小时前
基于单片机的防盗报警器设计与实现
经验分享·单片机·毕业设计