所谓多线程都是模拟的,本质都是单线程,因为cpu同一时刻只能执行一段代码。
模拟的多线程就是任务之间快速切换,看起来像同时执行的样子。
据说最近有多核的单片机,不过成本应该会高很多。
对于模拟的多线程,我知道的有两种方式:
1.基于时间片的轮询系统
我自己就写过这样一个系统,原理就是用systick给系统提供一个时间基准,一般我用10ms。
然后把整体产品功能成不同的任务(线程),并且为每个任务分配一个时间片。
我红色框标注的每个任务调度的时间,1代表10ms,50则代表500ms,每个任务执行的频率可以不同,方便释放cpu资源给更需要的任务。
主函数的循环里一直判断每个任务的状态。
这里我把任务直接封装成结构体,通过函数指针的方式去调用,方便不同的任务集中管理。
如果任务就绪,就执行,等该任务执行完,下一个任务才能执行,所以本质还是轮询。
只是每个任务可以灵活分配调度时间,不重要的任务执行次数少,重要的任务执行次数多,看起来像多线程的效果。
这种方式比传统的while(1)去轮询在程序架构上会好一点,任务管理和调度也灵活很多。
缺点就是任务在执行过程中无法被打断,不能马上切换到别的任务去执行。
文章来源于:电子工程世界 原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关文章
单片机能实现真正的多线程吗?(2023-03-14)
单片机能实现真正的多线程吗?;所谓多线程都是模拟的,本质都是单线程,因为cpu同一时刻只能执行一段代码。
模拟的多线程就是任务之间快速切换,看起来像同时执行的样子。
据说最近有多核的单片机,不过......
想学嵌入式Linux?米尔基于瑞萨RZ/G2L开发板免费送!(2023-06-09)
想学嵌入式Linux?米尔基于瑞萨RZ/G2L开发板免费送!;
学习开发是一个渐进的过程,一般我们从51单片机开始,逐步迁移到STM32微控制器,然后学习使用FreeRTOS操作系统,最终......
51单片机作用、功能、厂商单品详解(2024-03-20)
全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率为12M。
51单片机......
STM32单片机编程方式及工作原理(2023-07-03)
进行开发。
FreeRTOS:FreeRTOS是一款开源的实时操作系统,可以与STM32单片机进行集成,实现多任务和多线程编程,提高程序的可靠性和并发性。
RT-Thread:RT-Thread是一款实时操作系统,同样......
想学嵌入式LINUX?米尔基于瑞萨RZ/G2L开发板免费送!(2023-06-09)
/G2L核心板。
学习嵌入式系统开发是一个渐进的过程,一般我们从51单片机开始,逐步迁移到STM32微控制器,然后学习使用FreeRTOS操作系统,最终进入嵌入式Linux领域。以下......
想学嵌入式Linux?领免费的瑞萨RZ/G2L开发板!(2023-06-12 09:36)
想学嵌入式Linux?领免费的瑞萨RZ/G2L开发板!;导语:刚入门嵌入式,选入门级RZ/G2L开发板,采用邮票孔形式封装了RZ/G2L核心板。学习嵌入式系统开发是一个渐进的过程,一般我们从51单片机......
单片机开发中的内存溢出的状况(2024-07-15)
馈的不是结构体占有的字节数了,而是一个指针占有的字节数(在32位单片机上是4个字节)。于是又导致了规划的内存空间长度比实际数据长度短,然后又溢出了。
”多线程”合作
遇到的bug是前......
单片机是否为嵌入式技术,单片机和嵌入式学哪个(2023-01-06)
。
这层关系一定要先搞清楚。
那嵌入式除了单片机以外,还有分为以下几个主流方向:
1.单片机开发工程师
需要掌握的东西大概如下:
①学习C语言、汇编
②学习51、STM32单片机
③学习常用Usart......
单片机如何使用?51单片机C语言编程实例有哪些?(2023-01-04)
单片机如何使用?51单片机C语言编程实例有哪些?;单片机如何使用,我们要知道单片机在哪里使用?
单片机是很多电子产品的核心器件,它具有一定的逻辑判断和事件处理能力的芯片。
可以对单片机......
一.单片机概述(2024-08-09)
外设、智能仪器仪表、通讯设备、家用电器等。特别适合于嵌入式微型机应用系统。
单片机开发系统有单片单板机和仿真器。实现单片机应用系统的硬、软件开发。
单片机
单片机的历史及发展概况
第一阶段(1974......