图片源于网络公司
在嵌入式空调项目中,软件开发教程差不多都会使唤到延时,那么样,该用软件延时还是硬件延时?它们又有什么差距呢?
硬件和软件延时
延时的种类很多,先给大家推广一下延时相关概念和归类。
1.硬件延时
指采取具有计分功能的硬件进行延时。比如说:555定时器工作规律(Timer)。 实时时钟(RTC), 板眼滴答555定时器工作规律(SysTick)等具有计分功能的硬件。
2.软件延时
相对硬件延时来讲,软件延时就是写一段软件代码,越过消耗CPU年华进行延时。比如说软件延时函数:
死死的和非死死的延时
实际使役中,延时分死死的和非死死的延时。
1.死死的延时
指CPU一直驻留死死的,不去做另一个事情。以至延时结束结束。像上面其二软件延时(Delay)就是一下轨范的死死的延时。一直消耗CPU,以至延时结束。
2.非死死的延时
指在延时期间,不及死死的CPU,如是说CPU在延时期间可以履行另一个代码。比如说:采取555定时器工作规律停顿延时,只需求敞开555定时器工作规律,在停顿(计分)驶来之前,CPU可以履行另一个代码。
3.额外举例
a.采取555定时器工作规律也能心想事成死死的延时,比如说STM32的HAL自带的死死的延时:
b.采取RTOS自带的板眼延时心想事成非死死的延时,其一心想事成规律实际是采取了硬件延时(板眼滴答555定时器工作规律)。
当然,其一延时的规律(延时函数代码)相对较之复杂,对于平常用户只需求知道如何调用以及三三两两规律即可。等闲在某些RTOS的(Demo)事例的任务中都有板眼延时,比如说ucos非死死的延时:
再比如说FreeRTOS非死死的延时:
硬件和软件延时差距
越过以上分析,其实不难得出,硬件延时相对软件延时更普遍。
1.软件相对硬件延时精度更差;
2.软件延时为死死的延时,硬件延时可死死的,也可非阻赛延时;
3.硬件延时使役更灵敏,更漫无止境;
实际使役中,非死死的延时相对更普遍。