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单片机中会经常被用到。

相关推荐
结城明日奈是我老婆9 分钟前
stm32的TIM和PWM学习笔记
笔记·stm32·学习
嵌入式小站25 分钟前
STM32 可移植教程 01:VSCode 环境搭建 + 点亮 LED(实战篇)
vscode·stm32·嵌入式硬件
guygg8828 分钟前
STM32正交编码器接口指南
stm32·单片机·嵌入式硬件
lin135380675731 小时前
AH810L输入 48~54V 转 5V/100mA 完整方案
嵌入式硬件·物联网
星夜夏空991 小时前
STM32单片机学习(36) —— RTC
stm32·单片机·学习
森利威尔电子-1 小时前
森利威尔 SL3042 | 9V-120V 宽压输入 1.25-50V 可调输出 峰值 10A 电源芯片
单片机·嵌入式硬件·电源芯片·降压恒压芯片
金线银线还是铜线?1 小时前
国产微能量收集PMIC芯片MF9005/MF9006如何选型?
嵌入式硬件·物联网·太阳能
Szime11 小时前
高速 ADC 国产替代选型:通信、雷达、仪器仪表项目要看哪些参数?
单片机·嵌入式硬件·fpga开发
灯琰112 小时前
# STM32L051K6U6 IAP Bootloader 开发踩坑实录
stm32
菜鸟的学习日记、13 小时前
GPIO的几种模式——以STM32为例
stm32·单片机·嵌入式硬件·gpio