嵌入式项目软件延迟性能的区别

admin 2023-7-6 654 7/6

天宇软件资讯7月6日消息,在嵌入式项目中,软件开发基本上使用延迟,那么,应该使用软件延迟还是硬件延迟呢?它们有什么区别?

今天就来说说硬件延迟和软件延迟的内容,以及它们的区别。

延迟硬件和软件

延迟的种类很多,先普及延迟的相关概念和分类。

嵌入式项目软件延迟性能的区别
1.硬件延时

使用具有计数功能的硬件进行延时。

例如:定时器(Timer)、 实时时钟(RTC)、 系统滴答定时器(SysTick)等待具有计数功能的硬件。

嵌入式项目软件延迟性能的区别

2.软件延时

与硬件延迟相比,软件延迟是通过消耗CPU时间来编写软件代码的延迟。

例如,软件延迟函数:

void Delay(uint32__t Cnt){ uint32_t i;
while(Cnt--) { for(i=0; i<0x80000; i ); }}

阻塞和非阻塞延迟

在实际应用中,延迟分为阻塞和非阻塞延迟。

1.阻塞延时

直到延迟结束,CPU才停留阻塞,不做其他事情。

就像上面的软件延迟(Delay)一种典型的阻塞延迟,一直消耗CPU,直到延迟结束。

嵌入式项目软件延迟性能的区别
2.非阻塞延迟

CPU在延迟期间不会被阻塞,也就是说,CPU可以在延迟期间执行其他代码。

例如:使用定时器中断延迟,只需打开定时器,CPU就可以在中断(计数)到来之前执行其它代码。

3.额外举例

a.如STM32HAL自带的阻塞延迟,也可以使用定时器实现阻塞延迟:

__weak void HAL_Delay(uint32__t Delay){ uint32_t tickstart = HAL_GetTick(); uint32_t wait = Delay;
/* Add a freq to guarantee minimum wait */ if (wait < HAL_MAX_DELAY) { wait = (uint32__t)(uwTickFreq); }
while ((HAL_GetTick() - tickstart) < wait) { }}

b.硬件延迟(系统滴答定时器)实际上是利用RTOS带来的系统延迟来实现非阻塞延迟的。

当然,这种延迟原理(延迟函数代码)相对复杂。对于普通用户来说,他们只需要知道如何调用和简单的原理。感兴趣的老铁可以自己研究。

通常在某些RTOS中(Demo)例子任务中有系统延迟,如ucos非阻塞延迟:

OSTimeDly(10);

另一个例子是FreeRTOS非阻塞延迟:

vTaskDelay(10);

关于RTOS的延迟,请在这里扩展RTOS中的相对延迟和绝对延迟。请移动到文章《RTOS中相对延迟和绝对延迟的区别》

嵌入式项目软件延迟性能的区别

硬件和软件延迟的区别

通过以上分析,不难得出硬件延迟比软件延迟更常见。

1.软件比硬件延迟精度差;

2.软件延迟为阻塞延迟,硬件延迟可以阻塞,也可以非阻塞延迟;

3.硬件延迟应用更灵活、更广泛;

在实际应用中,硬件延迟和非阻塞延迟相对较为常见。

总结

今天就分享到这里吧,天宇软件资讯是一个软件分享基地,其中包括微信,红包辅助,支付宝,聊讯,微客优品,千喜惠,优乐购,淘卷淘,花惜,有趣超市,逗鱼时刻,惊喜淘,易凡,睛彩,坤米,达信酷,QQ,淘汇购,集市易选,泡泡易选,微信红包辅助,陌陌,钉钉,思语,百盛,苹果微信多开,微信分身,安卓微信多开等社交平台的功能有秒,避雷,埋雷软件,单透,扫尾,秒抢等一些红包强项外挂功能软件分享。喜欢的请关注收藏,谢谢。

- THE END -

admin

7月06日10:52

最后修改:2023年7月6日
0

非特殊说明,本博所有文章均为博主原创。

软件商城
nowmru.com
2024-09-20 07:08:38
软件商城:nowmru.com
软件商城地址:http://nowmru.com
软件商城:nowmru.com
取消

选择聊天工具: