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

相关推荐
电子小白12313 小时前
第13期PCB layout工程师初级培训-1-EDA软件的通用设置
笔记·嵌入式硬件·学习·pcb·layout
清风66666613 小时前
基于单片机的多传感器智能云梯逃生控制器设计
单片机·嵌入式硬件·毕业设计·智能家居·课程设计
小何code13 小时前
STM32入门教程,第10课(上),OLED显示屏
stm32·单片机·嵌入式硬件
来自晴朗的明天13 小时前
高速画板-USB模块的PCB设计5-USB2.0/3.0布局布线要求
单片机·嵌入式硬件·硬件工程
早日退休!!!15 小时前
ARM Cortex-M核 【保存上下文&恢复上下文】
arm开发·单片机·嵌入式硬件
来自晴朗的明天16 小时前
差分控多少Ω阻抗
单片机·嵌入式硬件·硬件工程
SystickInt17 小时前
mosbus复习总结(20260110)
stm32
点灯小铭17 小时前
基于单片机的多功能智能婴儿车设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
π同学18 小时前
基于RT-Thread的STM32开发第十一讲——编码器模式
stm32·rt_thread·双相编码器
码农小韩20 小时前
基于Linux的C++学习——动态数组容器vector
linux·c语言·开发语言·数据结构·c++·单片机·学习