摘要:
一、任务内嵌消息队列 1.1、什么是任务内嵌消息队列 µC/OS-Ⅲ 为每一个任务都分配了一个任务内嵌消息队列,这意味着,任务内嵌消息队列是每一个任务独自拥有的。任务内嵌消息队列本质上就是一个消息队列,但是任务内嵌消息队列并不需要消息队列这么一个中间的内核对象,任务内嵌消息队列是分配于每一个任务的任 阅读全文
摘要:
一、µC/OS-Ⅲ的信号量简介 信号量 是一种解决同步问题的机制,可以实现对共享资源的有序访问。其中,“同步”指的是任务间的同步,即信号量可以使得一个任务等待另一个任务完成某件事情后,才继续执行;而“有序访问”指的是对被多任务或中断访问的共享资源(如全局变量)的管理,当一个任务在访问(读取或写入)一 阅读全文
摘要:
一、消息队列简介 任务与其它任务或任务与中断间的通讯一般可以通过全局变量或消息队列来完成。 如果是使用全局变量的话,那么这个全局变量将被作为任务与任务之间或任务与中断之间的共享资源,因此开发者在设计时还需要考虑该共享资源的互斥访问问题,并且当全局变量被一个任务或中断访问更新后,通讯中全局变量的接收任 阅读全文
摘要:
一、µC/OS-Ⅲ的系统时钟节拍 任何的操作系统都需要时钟节拍,在 µC/OS-Ⅲ 中有一个用于记录系统时钟节拍的计数器,这个计数器是一个全局变量,定义在文件 os.h 中,如下所示: OS_EXT OS_TICK OSTickCtr; /* Cnts the #ticks since startu 阅读全文
摘要:
一、µC/OS-Ⅲ的初始化 µC/OS-Ⅲ 内核的初始化是通过调用函数 OSInit() 完成的,函数 OSInit() 必须在函数 OSStart() 调用之前被调用,函数 OSInit() 会初始化 µC/OS-Ⅲ 内核并检测是否存在错误,如果检测到错误,就会立即返回。 函数 OSInit() 阅读全文
摘要:
一、什么是中断 让 CPU 打断正常运行的程序,转而去处理紧急的事件(程序),就叫 中断。中断执行机制,可以简单概括为三步: 中断请求,外设产生中断请求,例如 GPIO 外部中断、定时器中断。 响应中断,CPU 停止执行当前程序,转而去处理中断处理程序(ISR)。 退出中断,执行完毕,返回被打断的程 阅读全文
摘要:
一、任务创建和删除 任务的创建和删除本质上就是调用 µC/OS-Ⅲ 的 API 函数。 1.1、创建任务 void OSTaskCreate (OS_TCB *p_tcb, // 指向任务控制块的指针 CPU_CHAR *p_name, // 任务名 OS_TASK_PTR p_task, // 指 阅读全文
摘要:
一、µC/OS-Ⅲ的简介 1.1、什么是RTOS 操作系统是允许多个任务 “同时运行” 的,操作系统的这个特性被称为多任务。然而实际上,一个 CPU 核心在某一时刻只能运行一个任务,而操作系统中任务调度器的责任就是决定在某一时刻 CPU 究竟要运行哪一个任务,任务调度器使得 CPU 在各个任务之间来 阅读全文
摘要:
一、FPU简介 FPU 即浮点运算单元(Float Point Unit)。浮点运算,对于定点 CPU(没有 FPU 的 CPU)来说必须要按照 IEEE-754 标准的算法来完成运算,是相当耗费时间的。而对于有 FPU 的 CPU 来说,浮点运算则只是几条指令的事情,速度相当快。 STM32F40 阅读全文