基于UCOS嵌入式实时操作系统的单任务和多任务LED显示总结----娄...
以UCOSIII为例 嵌入式实时操作系统概述

七.共享资源管理
什么是共享资源
多个任务可能会同时要求占用资源:内存空间、 全局变量、指针、缓冲区、列表、环形缓冲区等。 通过共享资源,任务间通信将会比较简单。
关中断
CPU_CRITICAL_ENTER()CPU_CRITICAL_EXIT() 经常成对地使用。关中断时间越短越好,不然会影 响系统响应外部事件的及时性。当临界段很短时可 以使用关中断方法。
锁调度器
使用OSSchedLock()和OSSchedUnlock(),只有 调度器被锁,中断是使能的,如果在处理临界段时 中断发生,ISR程序就会被执行。
任务调用这个函数后就会被挂起直到期满。这个 函数可以有三种模式:相对延时模式,周期性延时 模式,绝对定时模式。
相对延迟
周期性延迟设置
当参数设置为了OT_OPT_TIME_PERIDSIC 时, OSTimeDly()被设置为周期性延时模式。
周期性延迟
相对延时模式和周期性延时模式看起来是不一样 的,但是它们类似的。它们都可能丢失一个时基当 有高优先级任务被执行很长时间时。
只有任务才允许使用信号量,ISR 是不允许的。
二值信号量
任务要访问共享资源就必须执行一个等待操作。 如果信号量是有效的(信号量计数值大于0),信 号量计数值递减,任务访问该共享资源。如果信号 量计数值为0,任务会被放入挂起队列中等待该信 号量有效。uC/OS-III 允许设置等待的时限。如果 等待超时,该挂起任务会被就绪,等待该信号量的 "pend"函数会返回一个错误代号。
使用事件标志组例子
嵌入式系统中的实时操作系统与任务调度

嵌入式系统中的实时操作系统与任务调度【正文】嵌入式系统中的实时操作系统与任务调度嵌入式系统是一种应用于各种电子设备中的计算机系统,广泛应用于汽车、家电、通信设备等领域。
实时操作系统(RTOS)是嵌入式系统中的关键组成部分,它能够保证系统对时间要求的精确满足,并有效地进行任务调度和管理。
本文将介绍嵌入式系统中的实时操作系统的概念,及其与任务调度相关的重要内容。
一、嵌入式系统中的实时操作系统实时操作系统是一种能够在给定的时间约束内完成任务并作出响应的操作系统。
在嵌入式系统中,时间的可控性对于系统的稳定性和可靠性至关重要。
实时操作系统能够根据任务的优先级和时间需求,对任务进行有效的调度和管理,以满足系统对时间的各种要求。
嵌入式系统中的实时操作系统通常具备以下特点:1. 硬实时性:系统对任务响应时间的要求非常严格,必须要在规定时间内完成任务响应和处理。
2. 软实时性:系统在大部分情况下能够满足任务的响应时间要求,但在某些情况下可能会出现时间延迟。
3. 多任务处理能力:系统能够同时处理多个任务,并根据任务的优先级和时间约束进行合理的调度。
4. 任务通信与同步机制:系统能够提供任务之间的通信和同步机制,便于任务之间的数据交换和协作。
5. 中断处理支持:系统能够及时响应外部中断,并进行相应的处理。
二、实时操作系统的任务调度任务调度是实时操作系统中非常关键的一部分,它决定了任务执行的顺序和执行时间。
常见的任务调度算法包括静态优先级调度、循环调度和最短剩余时间优先调度等。
1. 静态优先级调度:每个任务都有一个预定的优先级,在系统运行之前就已经确定。
系统根据任务的优先级进行任务调度,优先级高的任务将先被执行。
2. 循环调度:系统按照固定的调度顺序执行任务,也称为轮转调度。
每个任务都有一个时间片,当一个任务的时间片用完后,系统将继续执行下一个任务。
3. 最短剩余时间优先调度:系统根据每个任务的执行时间来进行调度,优先执行剩余执行时间最短的任务。
基于UCOS嵌入式实时操作系统的单任务和多任务LED显示总结----娄...

基于UCOS嵌入式实时操作系统的单任务和多任务LED显示总结----娄...第一篇:基于UCOS嵌入式实时操作系统的单任务和多任务LED显示总结----娄...基于uCOSII的单任务和多任务LED显示一、uCOSII简介uCOS II是一个微型的实时操作系统,包括了一个操作系统最基本的一些特性,如任务调度、任务通信、内存管理、中断管理、定时管理等。
而且这是一个代码完全开放的实时操作系统,简单明了的结构和严谨的代码风格,非常适合初涉嵌入式操作系统的人士学习。
二、设计目的通过实验,学习在uC/OSII操作系统中单任务控制LED闪烁和多个任务控制LED之间的切换和同步,以及多任务控制程序的编写方法。
三、裸机程序和uCOSII 的运行流程对比3.1 裸机程序的运行流程裸机主函数的运行流程:这个是我们写一般的单片机程序的流程,就是在主函数中用死循环执行功能函数,然后加上中断。
3.2 uCOSII 的运行流程uCOSII是一个操作系统,但是说到底也是一个支持任务切换的裸机程序。
在初始化变量OSInit函数中,初始化所有全局变量,数据结构,创建最低优先级空闲任务OSTaskIde,并创建6个空数据链表:空任务控制块链表,空事件控制块链表,空列队控制块链表,空标志组链表,空内存控制块链表,空闲定时器控制块链表创建任务OSTaskCreate函数,一般创建一个最高优先级任务TaskStart任务,任务调度后,在这个任务中再创建其他的任务,初始化硬件,并打开中断。
进入多任务管理阶段OSStart函数,将就绪表中最高优先级任务的栈指针加载到SP中,并强制中断返回。
任务调度工作就是查找就绪表中优先级最高的任务,实现任务的切换。
简单来说,裸机程序在主函数中通过死循环执行各种函数,最终达到实现各种功能函数的目的。
而uCOSII系统,通过不断的产生定时中断,或则任务主动放弃CPU,然后进行任务之间的调度,相当于不断循环执行不同的任务,最终实现各种任务。
嵌入式系统中的实时操作系统设计与实现

嵌入式系统中的实时操作系统设计与实现第一章:引言随着技术的日益发展,电子产品日渐普及,尤其是在未来智能家居、智慧城市、智能交通等领域中,嵌入式系统将扮演更为重要的角色。
而嵌入式系统中的实时操作系统设计与实现就成为了一个非常值得探讨的话题。
实时操作系统(RTOS)与普通操作系统最大的不同点在于其必须具备对时间性的极高要求,在严谨的时间限制条件下响应和处理系统事件,保证系统的稳定性和可靠性。
在本文中,我们将深入探讨嵌入式系统中实时操作系统(RTOS)的设计和实现。
第二章:实时操作系统概述实时操作系统负责响应、处理和完成一定类型的任务,并在规定的时间内给出应答,同时还需要满足安全保密、可重用性、可维护性、可扩展性等要求。
实时操作系统的主要特点包括:可靠性、实时性、高效性、可移植性和可扩展性。
实时操作系统可以分为硬实时系统和软实时系统。
其中,硬实时系统的主要特点是时间性能确定,在严格的时间极限条件下完成任务,而软实时系统虽然也需要完成任务,但对时间性能并没有严格要求。
在实际应用中,根据实时性的要求,一般采用一种或多种实时操作系统。
常见的实时操作系统有VxWorks、QNX、FreeRTOS、RTOS-Linux等。
它们各自有着不同的特点和优势,在实际应用中需要根据具体情况进行选择。
第三章:实时操作系统的设计与实现3.1 实时操作系统的任务调度实时操作系统的任务调度是指依据一定的任务调度算法,在相应的时序下进行任务调度。
常见的任务调度算法有:静态优先级调度、动态优先级调度、时间片轮转调度等。
在实时操作系统中,为了保证任务的实时性能,我们通常采用静态优先级调度算法。
即,在任务创建时设置任务的优先级,并在运行过程中不再改变其优先级。
同时,还要保证任务之间的时间关系,避免出现死锁、饥饿等问题。
3.2 实时操作系统的内存管理实时操作系统的内存管理是指如何管理系统中的各种内存资源,包括堆、栈、全局变量等。
在实时操作系统中,内存管理同样具有时间性的要求。
嵌入式基于ucOS的多任务系统

嵌⼊式基于ucOS的多任务系统重庆交通⼤学计算机与信息学院设计性实验报告成绩:班级:电⼦(3)班学号:姓名:实验项⽬名称:基于ucOS的多任务系统实验项⽬性质:设计性实验实验所属课程:嵌⼊式系统实验室(中⼼):电⼦实验室指导教师:实验完成时间: 2010 年 6 ⽉ 1 ⽇⼀、实验⽬的通过实验,学习在uC/OSII操作系统中控制多个任务之间的切换和同步,以及多任务控制程序的编写⽅法。
⼆、实验内容及要求(⼀)内容建⽴三个uC/OSII的任务,⼀个⽤于检测KEY按键输⼊(P0.20⼝的输⼊),为按键检测任务;另⼀个任务⽤于控制LED流⽔灯,为LED控制任务,还有⼀个任务是控制蜂鸣器,称作蜂鸣器控制任务。
通过三个任务实现LED流⽔灯、蜂鸣器、按键之间的关联切换。
(⼆)要求(1)设计LED流⽔灯的闪烁⽅式。
(2)蜂鸣器的鸣叫⽅式。
(3)按键的功能。
(4)LED、蜂鸣器、按键之间有⼀定的切换关系。
三、实验设备及软件硬件:PC机⼀台;MagicARM2200-S教学实验开发平台⼀套软件:Windows98/XP/2000系统;ADS1.2集成开发环境uC/OSII操作系统四、设计⽅案(⼀)⽅案原理1、信号量与邮箱(1)要完成两个任务之间的单向同步,需要通过邮箱或者信号量来实现。
⽤信号量进⾏单向同步,以⼀个事情触发两个以上任务时,按键任务划分原则可以将他们合并为⼀个任务。
如果这些任务因为其他原因不能合并(不同的功能部件),则可以采⽤有消息分发功能的通信机制——邮箱,以减少通信⼯具的个数。
(2)且⽤信号量进⾏⾏为同步时,只能提供同步的时刻信息,不能提供内容信息,当控制⽅在对被控制⽅进⾏控制,且还需要向被控制⽅提供内容信息(数据或字符串)时,消息邮箱是⼀种有效的⽅案。
(3)当两个任务是系统“信息链条”中的相邻两个环节时,前⼀个任务的输出信息就是后⼀个任务的输⼊信息,消息邮箱就是连接这两个任务的桥梁。
在消息邮箱看来,提供消息的任务(或ISR)是⽣产者,读取消息的任务是消费者,正常情况下,消息的消费时间⽐⽣产时间短,消费者总是在等待消息的到来,这时,⽣产者每向“消息邮箱”发送⼀次“消息”,就⽴即被消费者取⾛,两者达到理想的同步效果。
2023年嵌入式心得体会大学生 嵌入式led心得体会(精选9篇)

2023年嵌入式心得体会大学生嵌入式led心得体会(精选9篇)(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如合同协议、工作计划、活动方案、规章制度、心得体会、演讲致辞、观后感、读后感、作文大全、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample essays, such as contract agreements, work plans, activity plans, rules and regulations, personal experiences, speeches, reflections, reading reviews, essay summaries, and other sample essays. If you want to learn about different formats and writing methods of sample essays, please stay tuned!2023年嵌入式心得体会大学生嵌入式led心得体会(精选9篇)当在某些事情上我们有很深的体会时,就很有必要写一篇心得体会,通过写心得体会,可以帮助我们总结积累经验。
嵌入式实时操作系统μCOS原理与实践

内做出响应,任务能够及
精简版面和资源,以最大
到各种形态和尺寸的嵌入
时响应事件的发生。
程度地利用嵌入式设备的
式设备中。
硬件资源。
μCOS的内核组件
任务管理器 ⚙️
中断控制器
时钟管理器 ⏰
中央处理器上的任务即可视为
μCOS使用中断控制器来传递突
μCOS使用时钟管理器来定时和
μCOS中的任务,μCOS使用任
人工智能
分布式系统
μCOS正在通过与人工智能技术的结合,实现自适
μCOS正在实践能跨显著通信协议的分布式任务启
应、自主和自学的操作系统特征,为智能硬件全新
动、任务同步和互相通讯,建造新型的"μCOS-微
的智能附加值和服务提供支持。
服务"形态,为分布式嵌入式实时操作系统提供更
加广泛的应用场景。
号量的任务会等待以执行特定操作的请求,其他任
并使用该消息。
务在必要时释放资源或发信号进行协助。
邮箱
μCOS使用邮箱实现任务断类型
中断服务例程
μCOS支持软件中断和硬件中断。硬件中断是由
μCOS的中断服务例程包括自定义的函数,处理
CPU控制器中的硬件线程触发,而软件中断是
定义和开发用户贡献的应用程序。
μCOS在汽车行业的应用
汽车嵌入式系统
D ashb o ard
μCOS在汽车行业具有广泛的应用,用于控制复杂
μCOS可作为车载多媒体和导航系统的运行平台,
汽车嵌入式系统,如控制发动机、变速器、红外线
具备实时实时处理能力,提高安全性能和用户体验。
传感器等。
自动驾驶汽车
μCOS在自动驾驶汽车行业有很大的应用潜力,可
嵌入式系统中实时操作系统的设计与实现

嵌入式系统中实时操作系统的设计与实现嵌入式系统是一种特殊的计算机系统,其主要特点在于所涉及的硬件资源非常有限,并且需要保证系统的稳定性和实时性。
因此,在嵌入式系统中,操作系统的设计和实现显得尤为重要。
实时操作系统(Real-time Operating System,RTOS)是一种特殊的操作系统,它被广泛用于嵌入式系统中。
本文将探讨嵌入式系统中实时操作系统的设计与实现。
一、嵌入式系统中实时操作系统的概念嵌入式系统是一种计算机系统,其主要应用领域在于对特定功能进行控制。
这些系统通常集成了传感器、执行器、微处理器等硬件设备,用于控制各种工业、军事、医疗等领域的硬件设施。
在这些系统中,实时性是一项非常重要的特征,它要求系统在规定时间内完成任务,对于延时等情况需要做出相应的反应。
实时操作系统是为实时应用而设计的操作系统,它具有一定的抢占性、优先级调度、任务管理等特性。
实时操作系统可以分为硬实时操作系统和软实时操作系统。
硬实时操作系统是一种在规定时间内完成任务的操作系统,它具有非常高的实时性和可靠性。
软实时操作系统则注重于任务的完成效率,对于实时特性要求不高。
二、实时操作系统的优点和应用场景实时操作系统在嵌入式系统中具有很多优点,如下所示:1. 实时性强:实时操作系统可以保证任务在规定时间内完成,对于对延迟有一定要求的嵌入式系统非常有用。
2. 可靠性高:实时操作系统具有一定的错误处理能力,可以保证在硬件出现故障的时候系统能够继续正常运行。
3. 稳定性好:实时操作系统具有系统监控、任务管理等功能,可以保证系统的稳定性和可靠性。
实时操作系统在工业、军事、医疗等领域广泛应用。
例如在工业控制领域中,实时操作系统被用于控制温度、流量、压力等变量,以保证生产过程的稳定性。
在医疗领域中,实时操作系统被用于控制医疗设备、监控患者状态等方面。
三、实时操作系统的设计原则实时操作系统的设计需要满足一定的原则,以保证系统的稳定性和实时性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于uCOSII的单任务和多任务LED显示一、uCOSII简介uCOS II是一个微型的实时操作系统,包括了一个操作系统最基本的一些特性,如任务调度、任务通信、内存管理、中断管理、定时管理等。
而且这是一个代码完全开放的实时操作系统,简单明了的结构和严谨的代码风格,非常适合初涉嵌入式操作系统的人士学习。
二、设计目的通过实验,学习在uC/OSII操作系统中单任务控制LED闪烁和多个任务控制LED之间的切换和同步,以及多任务控制程序的编写方法。
三、裸机程序和uCOSII的运行流程对比3.1 裸机程序的运行流程裸机主函数的运行流程:这个是我们写一般的单片机程序的流程,就是在主函数中用死循环执行功能函数,然后加上中断。
3.2 uCOSII 的运行流程uCOSII是一个操作系统,但是说到底也是一个支持任务切换的裸机程序。
在初始化变量OSInit函数中,初始化所有全局变量,数据结构,创建最低优先级空闲任务OSTaskIde,并创建6个空数据链表:空任务控制块链表,空事件控制块链表,空列队控制块链表,空标志组链表,空内存控制块链表,空闲定时器控制块链表创建任务OSTaskCreate函数,一般创建一个最高优先级任务TaskStart任务,任务调度后,在这个任务中再创建其他的任务,初始化硬件,并打开中断。
进入多任务管理阶段OSStart函数,将就绪表中最高优先级任务的栈指针加载到SP中,并强制中断返回。
任务调度工作就是查找就绪表中优先级最高的任务,实现任务的切换。
简单来说,裸机程序在主函数中通过死循环执行各种函数,最终达到实现各种功能函数的目的。
而uCOSII系统,通过不断的产生定时中断,或则任务主动放弃CPU,然后进行任务之间的调度,相当于不断循环执行不同的任务,最终实现各种任务。
四、工作原理4.1uCOSII 的内核管理4.1.1 ucos 的文件结构: 应用软件UCOS-11配置(与应用相关)OS_CFG.H INCLUDE.HUcos(与处理器无关的代码)OS_CORE.COS_FLAG.COS_MBOX.COS_MEM.COS_MUTEX.COS_Q.COS_SEM.COS_TASK.COS_TIME.CUCOS_11.C UCOS_11.H UCOS 移植(与处理器相关代码)OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C硬件4.1.2 临界段: OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。
它们可以用不同的方法去实现,用定义(#define )常数OS_CRITICAL_METHOD(1,2,3)来选择用哪种方法来实现。
当OS_CRITICAL_METHOD=1时,表示用处理器指令关中断,完成OS_ENTER_CRITIACL,用开中断完成OS_EXIT_CRITICAL.利用这种方法有点小问题,即是调用UCOS 功能函数之前,中断是关掉的,从UCOS 返回后,中断就打开了。
当OS_CRITICAL_METHOD=2时,这种方法是在堆栈中保存中断的开关状态,然后再关中断。
在实现OS_EXIT_CRITICAL 时,只需简单的从堆栈中弹出原来中断的开关状态。
利用这种方法,不论用户在调用函数之前中断是开着的还是关着的,函数的进入和返回状态都得到了保护。
当OS_CRITICAL_METHOD=3时,一些编译器提供了扩展功能,用户可以得到当前处理器的状态字,并保存在C 函数的局部变量中,这个变量可以用于恢复PSW 。
在STM32中,我们一般都是用第三种模式。
4.1.3 任务的状态:任务状态之间的转换如下图:特别值得注意的是,在任务执行的过程中可以被中断打断。
4.1.4任务控制快:系统必须为每个任务创建一个保存与该任务有关的相关信息的数据结构,这个数据结构就叫做该任务的任务控制块(TCB)。
当任务的CPU使用权被剥夺时UCOS利用它来保存任务的状态。
4.1.5就绪表:每个就绪的任务都放在就绪表中,就绪表中有两个变量,OSRdyGRP和OSRdyTbl。
OSRdyGrp中每一位表示8组任务中每一组是否有进入就绪态的任务。
当有任务进入就绪态时,就绪表OSRdyTbl[]中相应元素的相应位也置为1。
4.1.6任务调度OS_SCHED():Ucos总是进行进入就绪态任务中优先级最高的任务,确定哪个任务优先级最高,这一工作就是有调度器完成的。
4.1.7任务切换OS_TASK_SW() :需恢复该任务在CPU使用权被剥夺时保存下来的全部寄存器的值,之后,运行被切换的任务。
4.1.8给调度器上锁和开锁:给调度器上锁函数OSSchedlock()用于禁止任务调度,直到任务完成后,调用调度器开锁函数OSSchedUnlock()为止。
这两函数必须成对使用。
4.1.9空闲任务OS_TaskIdle():每个程序必须在初始化时建立一个空闲任务,这个任务没有其他任务进入就绪态时,投入运行,空闲任务永远处于就绪态。
空闲任务始终设为最低优先级。
OSTaskIdle()可以调用OSTaskIdleHook()让CPU进入STOP指令,从而进入低功耗模式。
当应用系统有电池供电时,这种方式特别有用。
4.2uCOSII 的任务管理4.2.1建立任务OSTaskCreat() :如果想让UCOS管理用户的任务,必须先建立任务。
可以通过将任务的地址和其他参数传递到以下两个函数之一来建立任务。
当调用OSTaskCreat()时,需要四个OSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INTU prio)Task:是指向任务代码的指针,pdata:是任务开始执行是,传递给任务的参数的指针,ptos:是分配给任务的堆栈的栈顶指针,prio是分配给任务的优先级。
4.2.2任务堆栈OS_STK():每个任务都有自己的堆栈,堆栈必须申明为OS_STK类型,并且由连续的内存空间组成。
可以静态分配堆栈空间,也可以动态分配堆栈空间。
但是一般我们都是分配静态堆栈空间。
4.2.3删除任务OSTaskDel() :有时需要删除任务,删除任务,是说任务返回并处于休眠态,并不是说任务的代码被删除了。
4.3时间管理4.3.1任务延迟函数OSTimeDly():Ucos提供一个可以被任务调用而将任务延时一段特定时间的功能函数,即OSTimeDly().任务调用OSTimeDly()后,一旦规定的时间期满或者有其他的任务通过调用OSTimeDlyResume()取消了延时,他就会进入就绪状态。
只有当该任务在所有就绪态任务中具有最高的优先级,它才会立即运行。
4.3.2按时,分,秒延时函数OSRimeDLyHMSM():OSTimeDly()一样,调用OSRimeDlyHMSM()函数也会是UCOS进行一次任务调度,并且执行下一个优先级最高的就绪任务。
当OSTimeDlyHMSM()后,一旦规定的时间期满,或者有OSTimeDlyResume(),它就会马上处于就绪态。
同样,只有当该任务在所有就绪态任务中具有最高的优先级,他才开始运行。
五、设计方案:5.1单任务在stm32的平台上移植ucosII,并且建立一个单任务,任务控制LED1以10HZ的频率闪烁。
5.2多任务在stm32的平台上移植ucosII,并且建立三个任务,三个任务分别控制LED1,LED2,LED3以10HZ,20HZ,50HZ的的频率闪烁。
六、程序流程图多任务控制LED闪烁:七、遇到的问题7.1编译器报错,显示PUBLIC未定义由于我们移植的核心代码用IAR编译的,由于编译器的不同,所以要把PUBLIC改成EXPORT。
7.2编译报错,显示,栈未定义由于每个任务都要有独立的栈来保存局部变量,从本质上讲也就是将CPU 寄存器的值保存到RAM中。
在uCOS中,每一个任务都有一个独立的任务堆栈。
八、主要代码8.1主函数#include "includes.h" //包含所有头文件OS_STK startup_task_stk[STARTUP_TASK_STK_SIZE]; //定义起始任务堆栈int main(void){BSP_Init(); //板级初始化OSInit(); //系统初始化,创建空闲任务OSTaskCreate(Task_Start,(void *)0,&startup_task_stk[STARTUP_TASK_STK_SIZE-1], STARTUP_TASK_PRIO);OS_ENTER_CRITICAL();OSStart(); //把控制权交给操作系统,进行任务调度return 0;}8.2用户应用函数#include "includes.h"OS_STK task_led2_stk[TASK_LED2_STK_SIZE]; //任务2堆栈OS_STK task_led3_stk[TASK_LED3_STK_SIZE]; //任务3堆栈OS_STK task_led4_stk[TASK_LED4_STK_SIZE]; //任务4堆栈void Task_Start(void *p_arg) //task1{(void)p_arg; //未用到传递参数,防止编译器报错SysTick_init();OSTaskCreate(Task_LED2,(void *)0, //&task_led2_stk[TASK_LED2_STK_SIZE-1], TASK_LED2_PRIO);OSTaskCreate(Task_LED3,(void *)0, //&task_led3_stk[TASK_LED3_STK_SIZE-1], TASK_LED3_PRIO);OSTaskCreate(Task_LED4,(void *)0, //&task_led4_stk[TASK_LED4_STK_SIZE-1], TASK_LED4_PRIO);while (1){LED1( ON );OSTimeDlyHMSM(0, 0,0,100);LED1( OFF);OSTimeDlyHMSM(0, 0,0,100);}}//任务2void Task_LED2(void *p_arg){(void)p_arg;SysTick_init();while (1){LED2( ON );OSTimeDlyHMSM(0, 0,0,200);LED2( OFF);OSTimeDlyHMSM(0, 0,0,200);}}//任务3void Task_LED3(void *p_arg){(void)p_arg;SysTick_init();while (1){//LED3( ON );OSTimeDlyHMSM(0, 0,0,300);//LED3( OFF);OSTimeDlyHMSM(0, 0,0,300);}}//任务4void Task_LED4(void *p_arg){(void)p_arg;SysTick_init();while (1){LED3( ON );OSTimeDlyHMSM(0, 0,0,40);LED3( OFF);OSTimeDlyHMSM(0, 0,0,40);}}娄宇庭2014年5月5 日。