|
|
@ -1,4 +1,80 @@
|
|
|
|
[TOC]
|
|
|
|
- [1. 概述](#1-概述)
|
|
|
|
|
|
|
|
- [1.1. 软件编程模式](#11-软件编程模式)
|
|
|
|
|
|
|
|
- [1.2. 嵌入式操作系统的基本概念](#12-嵌入式操作系统的基本概念)
|
|
|
|
|
|
|
|
- [1.2.1. 任务](#121-任务)
|
|
|
|
|
|
|
|
- [1.2.2. 内核](#122-内核)
|
|
|
|
|
|
|
|
- [1.2.3. 任务的上下文和任务切换](#123-任务的上下文和任务切换)
|
|
|
|
|
|
|
|
- [1.2.4. 事件](#124-事件)
|
|
|
|
|
|
|
|
- [1.2.5. 任务状态](#125-任务状态)
|
|
|
|
|
|
|
|
- [1.2.6. 任务的三要素](#126-任务的三要素)
|
|
|
|
|
|
|
|
- [1.2.7. 时钟节拍](#127-时钟节拍)
|
|
|
|
|
|
|
|
- [1.3. 嵌入式实时操作系统](#13-嵌入式实时操作系统)
|
|
|
|
|
|
|
|
- [2. 任务管理](#2-任务管理)
|
|
|
|
|
|
|
|
- [2.1. 任务划分](#21-任务划分)
|
|
|
|
|
|
|
|
- [2.2. 任务函数的结构](#22-任务函数的结构)
|
|
|
|
|
|
|
|
- [2.2.1. 单次任务](#221-单次任务)
|
|
|
|
|
|
|
|
- [2.2.2. 周期执行任务](#222-周期执行任务)
|
|
|
|
|
|
|
|
- [2.2.3. 事件触发任务](#223-事件触发任务)
|
|
|
|
|
|
|
|
- [2.3. 任务优先级设置](#23-任务优先级设置)
|
|
|
|
|
|
|
|
- [2.4. 任务管理接口函数](#24-任务管理接口函数)
|
|
|
|
|
|
|
|
- [2.4.1. 任务创建](#241-任务创建)
|
|
|
|
|
|
|
|
- [2.4.2. 任务优先级设置](#242-任务优先级设置)
|
|
|
|
|
|
|
|
- [2.4.3. 延时函数](#243-延时函数)
|
|
|
|
|
|
|
|
- [2.5. 应用:任务创建](#25-应用任务创建)
|
|
|
|
|
|
|
|
- [2.5.1. 芯片配置](#251-芯片配置)
|
|
|
|
|
|
|
|
- [2.5.2. 代码编写](#252-代码编写)
|
|
|
|
|
|
|
|
- [2.5.3. 代码分析](#253-代码分析)
|
|
|
|
|
|
|
|
- [3. 任务的同步和通知](#3-任务的同步和通知)
|
|
|
|
|
|
|
|
- [3.1. 信号量](#31-信号量)
|
|
|
|
|
|
|
|
- [3.1.1. 接口函数](#311-接口函数)
|
|
|
|
|
|
|
|
- [3.1.1.1. 信号量创建函数(osSemaphoreNew)](#3111-信号量创建函数ossemaphorenew)
|
|
|
|
|
|
|
|
- [3.1.1.2. 信号量获取函数(osSemaphoreAcquire)](#3112-信号量获取函数ossemaphoreacquire)
|
|
|
|
|
|
|
|
- [3.1.1.3. 信号量释放函数(osSemaphoreRelease)](#3113-信号量释放函数ossemaphorerelease)
|
|
|
|
|
|
|
|
- [3.1.2. 二值信号量的应用](#312-二值信号量的应用)
|
|
|
|
|
|
|
|
- [3.1.2.1. 配置](#3121-配置)
|
|
|
|
|
|
|
|
- [3.1.2.2. 代码编写](#3122-代码编写)
|
|
|
|
|
|
|
|
- [3.1.2.3. 代码分析](#3123-代码分析)
|
|
|
|
|
|
|
|
- [3.1.3. 计数信号量](#313-计数信号量)
|
|
|
|
|
|
|
|
- [3.1.3.1. 配置](#3131-配置)
|
|
|
|
|
|
|
|
- [3.1.3.2. 代码编写](#3132-代码编写)
|
|
|
|
|
|
|
|
- [3.1.3.3. 代码解析](#3133-代码解析)
|
|
|
|
|
|
|
|
- [3.2. 事件标志组](#32-事件标志组)
|
|
|
|
|
|
|
|
- [3.2.1. 函数接口](#321-函数接口)
|
|
|
|
|
|
|
|
- [3.2.1.1. 事件标志组创建函数(osEventFlagsNew)](#3211-事件标志组创建函数oseventflagsnew)
|
|
|
|
|
|
|
|
- [3.2.1.2. 事件标志组设置函数(osEventFlagsSet)](#3212-事件标志组设置函数oseventflagsset)
|
|
|
|
|
|
|
|
- [3.2.1.3. 事件标志组等待函数(osEventFlagsWait)](#3213-事件标志组等待函数oseventflagswait)
|
|
|
|
|
|
|
|
- [3.2.2. 应用示例(和书上不一样)](#322-应用示例和书上不一样)
|
|
|
|
|
|
|
|
- [3.2.2.1. 配置](#3221-配置)
|
|
|
|
|
|
|
|
- [3.2.2.2. 代码编写](#3222-代码编写)
|
|
|
|
|
|
|
|
- [3.2.2.3. 运行效果和程序分析](#3223-运行效果和程序分析)
|
|
|
|
|
|
|
|
- [3.3. 线程标志](#33-线程标志)
|
|
|
|
|
|
|
|
- [3.3.1. 函数接口](#331-函数接口)
|
|
|
|
|
|
|
|
- [3.3.1.1. 线程标志设置函数(osThreadFlagsSet)](#3311-线程标志设置函数osthreadflagsset)
|
|
|
|
|
|
|
|
- [3.3.1.2. 线程标志等待函数(osThreadFlagsWait)](#3312-线程标志等待函数osthreadflagswait)
|
|
|
|
|
|
|
|
- [3.3.2. 应用示例(书上代码不完整)](#332-应用示例书上代码不完整)
|
|
|
|
|
|
|
|
- [3.3.2.1. 配置](#3321-配置)
|
|
|
|
|
|
|
|
- [3.3.2.2. 代码](#3322-代码)
|
|
|
|
|
|
|
|
- [3.3.2.3. 代码分析和效果](#3323-代码分析和效果)
|
|
|
|
|
|
|
|
- [3.4. 互斥量](#34-互斥量)
|
|
|
|
|
|
|
|
- [3.4.1. 接口函数](#341-接口函数)
|
|
|
|
|
|
|
|
- [3.4.1.1. 互斥量创建函数(osMutexNew)](#3411-互斥量创建函数osmutexnew)
|
|
|
|
|
|
|
|
- [3.4.1.2. 互斥量获取函数(osMutexAcquire)](#3412-互斥量获取函数osmutexacquire)
|
|
|
|
|
|
|
|
- [3.4.1.3. 互斥量释放函数(osMutexRelease](#3413-互斥量释放函数osmutexrelease)
|
|
|
|
|
|
|
|
- [3.4.2. 应用示例](#342-应用示例)
|
|
|
|
|
|
|
|
- [3.4.2.1. 配置](#3421-配置)
|
|
|
|
|
|
|
|
- [3.4.2.2. 代码编写](#3422-代码编写)
|
|
|
|
|
|
|
|
- [3.4.2.3. 代码分析](#3423-代码分析)
|
|
|
|
|
|
|
|
- [3.5. 消息队列](#35-消息队列)
|
|
|
|
|
|
|
|
- [3.5.1. 接口函数](#351-接口函数)
|
|
|
|
|
|
|
|
- [3.5.1.1. 消息队列创建函数(osMessageQueueNew)](#3511-消息队列创建函数osmessagequeuenew)
|
|
|
|
|
|
|
|
- [3.5.1.2. 消息放入函数(osMessageQueuePut)](#3512-消息放入函数osmessagequeueput)
|
|
|
|
|
|
|
|
- [3.5.1.3. 消息获取函数(osMessageQueueGet)](#3513-消息获取函数osmessagequeueget)
|
|
|
|
|
|
|
|
- [3.5.2. 应用示例](#352-应用示例)
|
|
|
|
|
|
|
|
- [配置](#配置)
|
|
|
|
|
|
|
|
- [代码](#代码)
|
|
|
|
|
|
|
|
- [运行效果和代码分析](#运行效果和代码分析)
|
|
|
|
|
|
|
|
- [3.6. 软件定时器](#36-软件定时器)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 1. 概述
|
|
|
|
# 1. 概述
|
|
|
|
|
|
|
|
|
|
|
|