首页
学习
活动
专区
圈层
工具
发布

linux中的sleep函数和delay函数

对于做过单片机程序的朋友来说,delay是很常见的函数,通常就是while或者for循环,进行空指令的执行,由于单片机的晶振固定,一个机器周期的时间是固定的,执行多少个空指令, 就可以完成多少个机器周期时长的延时...其实在linux中的delay函数,道理是一样的,都是通过cpu执行空指令来达到延时的目的,但是对于操作系统这种多线程进行的方式来说,在需要延时的时候,可以通过将进程挂起的方式来实现延时。...sleep和delay的区别 最明显也最重要的区别就是,在执行delay的时候,是执行了空指令,虽说是空的,但是还是会占用硬件资源,cpu要进行运算。...delay可以精确到us。...当我们在设置一个芯片的各种引脚时序的时候,间隔较短且要求更准确,就需要delay。

4.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    利用IAR Timeline工具测试delay函数执行时间

    对于我们程序猿这一类人来说,delay函数貌似是我们最熟悉不过的了。...当然,随着我们编程经验的逐渐提高,像这种纯软件方式的延时函数是不提倡使用的,毕竟它一直霸占着CPU总线,不过在我们初入门的时候delay函数还是随处可见的,神马各种学习板开发板的demo例程里,模拟IIC...,SPI等总线、时序驱动某些外设等等,delay函数成为了我们初入嵌入式软件编程大门所见到的第一类延时函数了(起码对我而言是这样的,所以觉着特亲切),但是想如果精确地知道delay的时间就是个麻烦事了。...void delay(void) { uint8 i=0; while((i++)!...函数的执行周期,在前面我们又设定了CPU的频率(96MHz),所以可以算出来delay执行的时间T = 1190*1/96 us = 12.40us。

    1.3K30

    STM32delay函数应用与说明

    STM32delay函数应用应用与说明 Cortex M4内核编程手册有关时钟系统的内容 定时函数的实现 delay_init 函数 delay_us 函数 对与32中的delay函数有很多中形式可以使用...定时函数的实现 delay_init 函数 该函数用来初始化2个重要参数:fac_us以及fac_ms;tongshi ba SysTick的时钟源选择位外部时钟,在不加入系统的时候,延时初始化函数的代码如下...: // 初始化延时函数 //SYSTICK的时钟固定为HCLK时钟的1/8 static uint8_t fac_us=0; void delay_init(uint8_t SYSCLK) {...//nus:0~190887435(最大值即 2^32/fac_us@fac_us=22.5) void delay_us(uint32_t nus) { uint32_t ticks...told,tnow,tcnt=0; uint32_t reload=SysTick->LOAD; //LOAD 的值 ticks=nus*fac_us; //需要的节拍数 delay_osschedlock

    1.3K20
    领券