万网网站价格,asp做留言板网站,百度上做优化,枣庄网站建设价格STM32的延时方法很多#xff0c;其中采用定时器延时#xff0c;可以得到较为精确的延时#xff0c;但是有时对延时精度要求不高的场合#xff0c;采用软件延时#xff0c;也是必须的。特别是在RTOS系统中#xff0c;使用SysTick的普通计数模式对延迟进行管理#xff0c;…STM32的延时方法很多其中采用定时器延时可以得到较为精确的延时但是有时对延时精度要求不高的场合采用软件延时也是必须的。特别是在RTOS系统中使用SysTick的普通计数模式对延迟进行管理如果需要执行毫秒级延时会引起系统调度。此时要想不会引起任务调度就会用到C语言软件延时函数。
实现方法如下 假设CPU主频为72MHz,时钟周期为1/72MHz13.88纳秒。当延时10微秒,需要执行的空指令个数为10微秒/13.8纳秒724个当延时1毫妙,需要执行72027个周期,相当于延时0.993972.6毫妙。
//函数功能:当time10,需要执行738个周期,相当于延时10.25微妙 void delay_us(u16 time) { u16 i0; while(time--) { i10; //自己定义 while(i--) ; } }
//函数功能:当time1,需要执行72027个周期,相当于延时0.993972.6毫妙 void delay_ms(u16 time) { u16 i0; while(time--) { i12000; //自己定义 while(i--) ; } } C语言软件延时函数不会引起软件延时调度在进入系统之前可能需要这种延时因此还是需要的。这使用方法在51单片机中会经常被用到。