UCOSIII
UCOSIII实时系统开发
nandycooh
你若不努力,谁能给你想要的生活?
展开
-
2、UCOSIII在STM32F4xx上的移植
一、准备好UCOSIII的源码 ①通过UCOSIII官方下载:https://www.micrium.com/,进入官方网站后点击,找到Browse by MCU Manufacturer下对应的STM这一栏,选择对应的型号这里点击STN32F4xx进去选择自己需要的下载即可②提供一份我已经下载好的UCOSIII源码:链接:https://pan.baidu....原创 2018-06-07 10:21:37 · 9023 阅读 · 9 评论 -
14、UCOSIII事件标志组和同时等待多个内核对象
1、UCOSIII事件标志组1.1事件标志组: 有时候一个任务需要与多个事件同步,这个时候就需要使用事件标志组。事件标志组与任务之间有两种同步机制:“或”同步和“与”同步。 “或”同步:等待多个事件时,任何一个事件发生 ,任务都被同步,这个就称为“或”同步。 “与”同步:当所有的事件都发生时任务才被同步,这种同步机制被称为“与”同步。...原创 2018-08-31 09:17:30 · 1025 阅读 · 0 评论 -
8、UCOSIII任务间的通信
1、UCOSIII任务间通信 1.1、任务间通信一个任务或者中断服务程序有时候需要和另一个任务交流信息,这个就是消息传递的过程就叫做任务间通信;任务间的消息传递可以通过2种途径:一是通过全局变量,二是通过发布消息。 使用全局变量的时候每个任务或者中断服务程序都必须保证其对全局变量的独占访问。消息也可以通过消息队列作为中介发布给任务。 1.2 什么...原创 2018-08-30 23:50:04 · 3182 阅读 · 0 评论 -
11、UCOSIII信号量和互斥信号量
1、 信号量1.1 信号量简介 ①信号量像是一种上锁机制,代码必须获得对应的钥匙才能继续执行,一旦获得了钥匙,也就意味着该任务具有进入被锁部分代码的权限。一旦执行至被锁代码段,则任务一直等待,直到对应被锁部分代码的钥匙被再次释放才能继续执行。 ②信号量用于控制对共享资源的保护,但是现在基本用来做任务同步用。要想获取资源的任务必须执行“等待”操作,如果该资源对应的信号量有效值大...原创 2018-08-30 15:14:40 · 2950 阅读 · 0 评论 -
10、UCOSIII软件定时器简介
一、软件定时器简介定时器本质是递减计数器,当计数器减到零时可以触发某种动作的执行,这个动作通过回调函数来实现。当定时器计时完成时,定义的回调函数就会被立即调用,应用程序可以有任意数量的定时器,UCOSIII中定时器的时间分辨率由一个宏OS_CFG_TMR_TASK_RATE_HZ,单位为HZ,默认为100Hz. 要想使用定时器,必须先将OS_CFG_TMR_EN这个宏置为1。 注...原创 2018-08-29 09:17:11 · 1027 阅读 · 0 评论 -
9、UCOSIII中断和时间管理
一、中断服务函数1、中断:应内部或外部异步事件的请求中止当前任务,而去处理异步事件所要求的任务的过程叫做中断。 学会如何在UCOSIII下编写中断服务函数!如果用UCOIII会先进行条件编译,然后执行中断服务程序,最后会退出UCOIII中断。中断函数如下:void USART1_IRQHandler(void) //串口1中断服务程序...原创 2018-08-28 09:09:31 · 519 阅读 · 0 评论 -
15、UCOSIII的5个系统任务及钩子函数编写
一、必须创建任务函数 空闲任务 特点: (1)、空闲任务是UCOSIII创建的第一个任务。 (2)、空闲任务是UCOSIII必须创建的。 (3)、空闲任务优先级总是为OS_CFG_PRIO_MAK-1。 (4)、空闲任务中不能调用任何可使空闲任务进入等待态的函数!OSinit()函数—>OS_IdleTaskInit()空闲任务创建...原创 2018-08-27 23:38:44 · 1737 阅读 · 0 评论 -
7、UCOSIII时间片轮转调度器
时间片轮转调度器用于时间片轮转调度为函数OS_SchedRoundRobin(),此函数由OSTimeTick或者OS_IntQTask()调用,函数在文件os_core.c中定义。一、OSSchedRoundRobinCfg()函数使能或失能时间片轮转调度功能 如果我们想要使用UCOSIII的时间片轮转调度的话不仅要将宏OS_CFG_SCHED_ROUND_ROBIN_...原创 2018-08-17 12:58:46 · 2460 阅读 · 1 评论 -
4、UCOSIII任务创建、删除、挂起和恢复
一、任务的创建任务创建函数:OSTaskCreate()void OSTaskCreate ( OS_TCB *p_tcb,//指向任务的任务控制块 CPU_CHAR *p_name,//任务名字 OS_TASK_...原创 2018-08-16 18:07:58 · 2203 阅读 · 0 评论 -
12、UCOSIII任务堆栈、控制块及就绪表
一、UCOSIII任务堆栈1、任务堆栈的创建堆栈是在RAM中按照“先进先出(FIFO)”的原则组织的一块连续的存储空间。为了满足任务切换和响应中断时保存CPU寄存器中的内容及任务调用其它函数时的需要,每个任务都应该有自己的堆栈。如何创建?#define START_STK_SIZE 512 //堆栈大小CPU_STK START_TASK_STK[STAR...原创 2018-08-02 20:49:27 · 2796 阅读 · 0 评论 -
6、UCOIII中任务的调度和切换
一、UCOSIII任务调度1、可剥夺型任务调度定义:任务调度就是中止当前正在运行的任务转而去执行其他的任务(UCOSIII是可剥夺型内核,因此当一个高优先级的任务准备就绪,并且此时发生了任务调度,那么这个高优先级的任务就会获得CPU的使用权) UCOSIII中的任务调度是由任务调度器来完成的,任务调度器有2种:任务级调度器和中断级调度器。 任务级调度器为函数OSSched...原创 2018-08-11 15:50:35 · 1165 阅读 · 1 评论 -
3、UCOSIII任务管理中的几个关键名词解释(任务及任务状态)
1、什么是任务我们设计复杂、大型程序的时候,将这些负责的程序分割成许多个简单的小程序,这些小程序就是单个的任务,所有的小任务和谐的工作,最终完成复杂的功能。在操作系统中这些小任务可以并发执行,从而提高CPU的使用效率。UCOSIII就是一个可剥夺的多任务系统,我们使用UCOSIII的一个重要 的原因就是它的多任务处理能力。2、UCOSIII中的任务在UCOSIII中任务就是程序实体...原创 2018-08-01 19:53:43 · 3601 阅读 · 2 评论 -
5、UCOSIII系统初始化和启动
1、 UCOSIII系统初始化在使用UCOSIII之前我们必须先初始化UCOSIII,即函数OSInit()就是用来完成UCOSIII的初始化,而且OSInit()必须先于其他UCOSIII函数调用,包括OSStart()。int main(void){ OS_ERR err; CPU_SR_ALLOC(); /*外设初始化函数*/ delay_init(168); ...原创 2018-08-04 09:25:47 · 1684 阅读 · 0 评论 -
1、UCOSIII前后台操作系统介绍
一、前后台系统介绍通常把程序分为两部分:前台系统和后台系统。简单的小系统通常是前后台系统,这样的程序包括一个死循环和若干个中断服务程序:应用程序是一个无限循环,循环中调用API函数完成所需的操作,这个大循环就叫做后台系统。中断服务程序用于处理系统的异步事件,也就是前台系统。前台是中断级,后台是任务级。二、RTOS系统 RTOS全称为:Real Time OS,...原创 2018-06-06 09:27:08 · 6368 阅读 · 0 评论 -
13、UCOSIII存储管理
1、UCOSIII存储管理1.1、存储管理作为一个RTOS操作系统,内存管理是必备的系统模块,因此UCOSIII也就内存管理能力。通常应用程序可以调用ANSI C编译器的malloc()和free()函数来动态的分配和释放内存,但是在嵌入式事实操作系统中最好不要这么做,多次这样的操作会把原来很大的一块连续存储区域逐渐地分割成许多非常小并且彼此不相邻的存储区域,这就是存储碎片。UCOSI...原创 2018-08-31 17:50:49 · 397 阅读 · 0 评论