logo资料库

STM32F103 FreeRTOS开发手册V1.1.pdf

第1页 / 共396页
第2页 / 共396页
第3页 / 共396页
第4页 / 共396页
第5页 / 共396页
第6页 / 共396页
第7页 / 共396页
第8页 / 共396页
资料共396页,剩余部分请下载后查看
STM32F1 FreeRTOS开发手册V1.1
声明
第一章 FreeRTOS简介
1.1 初识FreeRTOS
1.1.1 什么是FreeRTOS?
1.1.2 为什么选择FreeRTOS?
1.1.3 FreeRTOS特点
1.1.4 商业许可
1.2 磨刀不误砍柴工
1.2.1 资料查找
1.2.2 FreeRTOS官方文档
1.2.3 Cortex-M架构资料
1.3 FreeRTOS源码初探
1.3.1 FreeRTOS源码下载
1.3.2 FreeRTOS文件预览
第二章 FreeRTOS移植
2.1 准备工作
2.1.1 准备基础工程
2.1.2 FreeRTOS系统源码
2.2 FreeRTOS移植
2.2.1 向工程中添加相应文件
2.2.2 修改SYSTEM文件
2.3 移植验证实验
2.3.1 实验程序设计
2.3.2 实验程序运行结果分析
第三章 FreeRTOS系统配置
3.1 FreeRTOSConfig.h文件
3.1 “INCLUDE_”开始的宏
3.2 “config”开始的宏
第四章 FreeRTOS中断配置和临界段
4.1 Cortex-M中断
4.1.1 中断简介
4.1.2 中断管理简介
4.1.3 优先级分组定义
4.1.4 优先级设置
4.1.5 用于中断屏蔽的特殊寄存器
4.2 FreeRTOS中断配置宏
4.2.1 configPRIO_BITS
4.2.2 configLIBRARY_LOWEST_INTERRUPT_PRIORITY
4.2.3 configKERNEL_INTERRUPT_PRIORITY
4.2.4 configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY
4.2.5 configMAX_SYSCALL_INTERRUPT_PRIORITY
4.3 FreeRTOS开关中断
4.4 临界段代码
4.4.1 任务级临界段代码保护
4.4.2 中断级临界段代码保护
4.5 FreeRTOS中断测试实验
4.5.1 实验程序设计
4.5.2 实验程序运行结果
第五章 FreeRTOS任务基础知识
5.1 什么是多任务系统?
5.2 FreeRTOS任务与协程
5.2.1 任务(Task)的特性
5.2.2 协程(Co-routine)的特性
5.3 任务状态
5.4 任务优先级
5.5 任务实现
5.6 任务控制块
5.7 任务堆栈
第六章 FreeRTOS任务相关API函数
6.1 任务创建和删除API函数
6.2 任务创建和删除实验(动态方法)
6.2.1 实验程序设计
6.2.2 程序运行结果分析
6.3 任务创建和删除实验(静态方法)
6.3.1 实验程序设计
6.3.2 程序运行结果分析
6.4 任务挂起和恢复API函数
6.5 任务挂起和恢复实验
6.5.1 实验程序设计
6.5.2 程序运行结果分析
第七章 FreeRTOS列表和列表项
7.1 什么是列表和列表项?
7.1.1 列表
7.1.2 列表项
7.1.3 迷你列表项
7.2 列表和列表项初始化
7.2.1 列表初始化
7.2.2 列表项初始化
7.3 列表项插入
7.3.1 列表项插入函数分析
7.3.2 列表项插入过程图示
7.4 列表项末尾插入
7.4.1 列表项末尾插入函数分析
7.4.2 列表项末尾插入图示
7.5 列表项的删除
7.6 列表的遍历
7.7 列表项的插入和删除实验
7.7.1 实验程序设计
7.7.2 程序运行结果分析
第八章 FreeRTOS调度器开启和任务相关函数详解
8.1 阅读本章所必备的知识
8.2 调度器开启过程分析
8.2.1 任务调度器开启函数分析
8.2.2 内核相关硬件初始化函数分析
8.2.3 启动第一个任务
8.2.4 SVC中断服务函数
8.2.5 空闲任务
8.3 任务创建过程分析
8.3.1 任务创建函数分析
8.3.2 任务初始化函数分析
8.3.3 任务堆栈初始化函数分析
8.3.4 添加任务到就绪列表
8.4 任务删除过程分析
8.5 任务挂起过程分析
8.6 任务恢复过程分析
第九章 FreeRTOS任务切换
9.1 PendSV异常
9.2 FreeRTOS任务切换场合
9.2.1 执行系统调用
9.2.2 系统滴答定时器(SysTick)中断
9.3 PendSV中断服务函数
9.4 查找下一个要运行的任务
9.6 FreeRTOS时间片调度
9.6 时间片调度实验
9.6.1 实验程序设计
9.6.2 程序运行结果分析
第十章 FreeRTOS系统内核控制函数
10.1 内核控制函数预览
10.2 内核控制函数详解
第十一章 FreeRTOS其他任务API函数
11.1 任务相关API函数预览
11.2 任务相关API函数详解
11.3 任务壮态查询API函数实验
11.3.1 实验程序设计
11.3.2 程序运行结果分析
11.4 任务运行时间信息统计实验
11.4.1 相关宏的设置
11.4.2 实验程序设计
11.4.3 程序运行结果分析
第十二章 FreeRTOS时间管理
12.1 FreeRTOS延时函数
12.1 函数vTaskDelay()
12.2 函数prvAddCurrentTaskToDelayedList()
12.3 函数vTaskDelayUntil()
12.2 FreeRTOS系统时钟节拍
第十三章 FreeRTOS队列
13.1 队列简介
13.2 队列结构体
13.3 队列创建
13.3.1 函数原型
13.3.2 队列创建函数详解
13.3.3 队列初始化函数
13.3.4 队列复位函数
13.4 向队列发送消息
13.4.1 函数原型
13.4.2 任务级通用入队函数
13.4.3 中断级通用入队函数
13.5 队列上锁和解锁
13.6 从队列读取消息
13.7 队列操作实验
13.7.1 实验程序设计
13.7.2 程序运行结果分析
第十四章 FreeRTOS信号量
14.1 信号量简介
14.2 二值信号量
14.2.1 二值信号量简介
14.2.2 创建二值信号量
14.2.3 二值信号量创建过程分析
14.2.4 释放信号量
14.2.5 获取信号量
14.3 二值信号量操作实验
14.3.1 实验程序设计
14.3.2 程序运行结果分析
14.4 计数型信号量
14.4.1 计数型信号量简介
14.4.2 创建计数型信号量
14.4.3 计数型信号量创建过程分析
14.4.4 释放和获取计数信号量
14.5 计数型信号量操作实验
14.5.1 实验程序设计
14.5.2 程序运行结果分析
14.6 优先级翻转
14.7 优先级翻转实验
14.7.1 实验程序设计
14.7.2 程序运行结果分析
14.8 互斥信号量
14.8.1 互斥信号量简介
14.8.2 创建互斥信号量
14.8.3 互斥信号量创建过程分析
14.8.4 释放互斥信号量
14.8.5 获取互斥信号量
14.9 互斥信号量操作实验
14.9.1 实验程序设计
14.9.2 程序运行结果分析
14.10 递归互斥信号量
14.10.1 递归互斥信号量简介
14.10.2 创建互斥信号量
14.10.3 递归信号量创建过程分析
14.10.4 释放递归互斥信号量
14.10.5 获取递归互斥信号量
14.10.6 递归互斥信号量使用示例
第十五章 FreeRTOS软件定时器
15.1 软件定时器简介
15.2 定时器服务/Daemon任务
15.2.1 定时器服务任务与队列
15.2.2 定时器相关配置
15.3 单次定时器和周期定时器
15.4 复位软件定时器
15.5 创建软件定时器
15.6 开启软件定时器
15.7 停止软件定时器
15.8 软件定时器实验
15.8.1 实验程序设计
15.8.2 程序运行结果分析
第十六章 FreeRTOS事件标志组
16.1 事件标志组简介
16.2 创建事件标志组
16.3 设置事件位
16.4 获取事件标志组值
16.5 等待指定的事件位
16.6 事件标志组实验
16.6.1 实验程序设计
16.6.2 程序运行结果分析
第十七章 FreeRTOS任务通知
17.1 任务通知简介
17.2 发送任务通知
17.3 任务通知通用发送函数
17.3.1 任务级任务通知通用发送函数
17.3.2 中断级任务通知发送函数
17.4 获取任务通知
17.5 任务通知模拟二值信号量实验
17.5.1 实验程序设计
17.5.2 实验程序运行结果
17.6 任务通知模拟计数型信号量实验
17.6.1 实验程序设计
17.6.2 实验程序运行结果
17.7 任务通知模拟消息邮箱实验
17.7.1 实验程序设计
17.7.2 实验程序运行结果
17.8 任务通知模拟事件标志组实验
17.8.1 实验程序设计
17.8.2 实验程序运行结果
第十八章 FreeRTOS低功耗Tickless模式
18.1 STM32F1低功耗模式
18.1.1 睡眠(Sleep)模式
18.1.2 停止(Stop)模式
18.1.3 待机(Standby)模式
18.2 Tickless模式详解
18.2.1 如何降低功耗?
18.2.2 Tickless具体实现
18.3 低功耗Tickless模式实验
18.3.1 实验程序设计
18.3.2 实验程序运行结果
第十九章 FreeRTOS空闲任务
19.1 空闲任务详解
19.1.1 空闲任务简介
19.1.2 空闲任务的创建
19.1.3 空闲任务函数
19.2 空闲任务钩子函数详解
19.2.1 钩子函数
19.2.2 空闲任务钩子函数
19.3 空闲任务钩子函数实验
19.3.1 实验程序设计
19.3.2 实验程序运行结果
第二十章 FreeRTOS内存管理
20.1 FreeRTOS内存管理简介
20.2 内存碎片
20.3 heap_1内存分配方法
20.3.1 分配方法简介
20.3.2 内存申请函数详解
20.3.3 内存释放函数详解
20.4 heap_2内存分配方法
20.4.1 分配方法简介
20.4.2 内存块详解
20.4.3 内存堆初始化函数详解
20.4.4 内存块插入函数详解
20.4.5 内存申请函数详解
20.4.6 内存释放函数详解
20.5 heap_3内存分配方法
20.6 heap_4内存分配方法
20.6.1 分配方法简介
20.6.2 内存堆初始化函数详解
20.6.3 内存块插入函数详解
20.6.4 内存申请函数详解
20.6.5 内存释放函数详解
20.7 heap_5内存分配方法
20.8 FreeRTOS内存管理实验
20.8.1 实验程序设计
20.8.2 实验程序运行结果
STM32F1 FreeRTOS 开发手册 ALIENTEK STM32F103 全系列开发板 FreeRTOS 开发教程 STM32F1 FreeRTOS 开发手册 V1.1 −ALIENTEK STM32F103 FreeRTOS 开发教程 本教程适用于 ALIENTEK 所有 STM32F103 开发板 1
STM32F1 FreeRTOS 开发手册 ALIENTEK STM32F103 全系列开发板 FreeRTOS 开发教程 广州市星翼电子科技有限公司 淘宝店铺 1:http://eboard.taobao.com 淘宝店铺 2:http://openedv.taobao.com 技术支持论坛 (开源电子网) :www.openedv.com 官方网站:www.alientek.com 最新资料下载链接:http://www.openedv.com/posts/list/13912.htm E-mail: 389063473@qq.comQQ: 389063473 咨询电话:020-38271790 传真号码:020-36773971 团队:正点原子团队 正点原子,做最全面、最优秀的嵌入式开发平台软硬件供应商。 友情提示 如果您想及时免费获取“正点原子”最新资料,敬请关注正点原子 微信公众平台,我们将及时给您发布最新消息和重要资料。 关注方法: (1)微信“扫一扫”,扫描右侧二维码,添加关注 (2)微信添加朋友公众号输入“正点原子”关注 (3)微信添加朋友输入“alientek_stm32”关注 文档更新说明 版本 版本更新说明 负责人 校审 发布日期 2
初稿: STM32F1 FreeRTOS 开发手册 ALIENTEK STM32F103 全系列开发板 FreeRTOS 开发教程 第一章 FreeRTOS 简介 第二章 FreeRTOS 移植 第三章 FreeRTOS 系统配置 第四章 FreeRTOS 中断配置和临界段 第五章 FreeRTOS 任务基础知识 第六章 FreeRTOS 任务相关 API 函数 第七章 FreeRTOS 列表和列表项 第八章 FreeRTOS 任务创建和调度器开启 V1.0 第九章 FreeRTOS 任务切换 左忠凯 刘军 2016.11.30 第十章 FreeRTOS 系统内核控制函数 第十一章 FreeRTOS 其他任务 API 函数 第十二章 FreeRTOS 时间管理 第十三章 FreeRTOS 队列 第十四章 FreeRTOS 信号量 第十五章 FreeRTOS 软件定时器 第十六章 FreeRTOS 事件标志组 第十七章 FreeRTOS 内存管理 第十八章 FreeRTOS 任务通知 调整 V1.1 版本中的第十八章调整为本版本的第二 十章。 第八章部分小节顺序做了调整。 V1.1 新增 第八章 8.4,8.5,8.6 小节 第十八章 FreeRTOS 低功耗 Tickless 模式 第十九章 FreeRTOS 空闲任务 3 左忠凯 刘军 2017.3.15
目录 STM32F1 FreeRTOS 开发手册 ALIENTEK STM32F103 全系列开发板 FreeRTOS 开发教程 STM32F1 FreeRTOS 开发手册 V1.1 ................................................................................................ 1 声明 ................................................................................................................................................. 13 第一章 ..................................................................................................................... FreeRTOS 简介 . 14 1.1 初识 FreeRTOS .................................................................................................. 15 1.1.1 什么是 FreeRTOS? ................................................................................... 15 1.1.2 为什么选择 FreeRTOS? ........................................................................ 15 1.1.3 FreeRTOS 特点 ......................................................................................... 16 1.1.4 商业许可 .................................................................................................. 16 1.2 磨刀不误砍柴工 ................................................................................................ 17 1.2.1 资料查找 .................................................................................................. 17 1.2.2 FreeRTOS 官方文档 ................................................................................. 19 1.2.3 Cortex-M 架构资料 ................................................................................... 21 1.3 FreeRTOS 源码初探 ........................................................................................... 21 1.3.1 FreeRTOS 源码下载 ................................................................................. 21 1.3.2 FreeRTOS 文件预览 ................................................................................. 23 第二章 FreeRTOS 移植 ............................................................................................................... 28 2.1 准备工作 ............................................................................................................ 29 2.1.1 准备基础工程 .......................................................................................... 29 2.1.2 FreeRTOS 系统源码 ................................................................................. 29 2.2 FreeRTOS 移植 ................................................................................................... 29 2.2.1 向工程中添加相应文件 .......................................................................... 29 2.2.2 修改 SYSTEM 文件 ................................................................................. 32 2.3 移植验证实验 .................................................................................................... 36 2.3.1 实验程序设计 .......................................................................................... 36 2.3.2 实验程序运行结果分析 .......................................................................... 39 第三章 FreeRTOS 系统配置 ....................................................................................................... 40 3.1 FreeRTOSConfig.h 文件 ..................................................................................... 41 3.1 “INCLUDE_”开始的宏 ...................................................................................... 41 4
STM32F1 FreeRTOS 开发手册 ALIENTEK STM32F103 全系列开发板 FreeRTOS 开发教程 3.2 “config”开始的宏 ............................................................................................... 42 第四章 FreeRTOS 中断配置和临界段 ....................................................................................... 50 4.1 Cortex-M 中断 .................................................................................................... 51 4.1.1 中断简介 .................................................................................................. 51 4.1.2 中断管理简介 .......................................................................................... 51 4.1.3 优先级分组定义 ...................................................................................... 52 4.1.4 优先级设置 .............................................................................................. 54 4.1.5 用于中断屏蔽的特殊寄存器 .................................................................. 55 4.2 FreeRTOS 中断配置宏 ....................................................................................... 56 4.2.1 configPRIO_BITS ..................................................................................... 56 4.2.2 configLIBRARY_LOWEST_INTERRUPT_PRIORITY ......................... 56 4.2.3 configKERNEL_INTERRUPT_PRIORITY ............................................. 56 4.2.4 configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY ............ 58 4.2.5 configMAX_SYSCALL_INTERRUPT_PRIORITY ................................ 58 4.3 FreeRTOS 开关中断 ........................................................................................... 58 4.4 临界段代码 ........................................................................................................ 59 4.4.1 任务级临界段代码保护 .......................................................................... 59 4.4.2 中断级临界段代码保护 .......................................................................... 61 4.5 FreeRTOS 中断测试实验 ................................................................................... 62 4.5.1 实验程序设计 .......................................................................................... 62 4.5.2 实验程序运行结果 .................................................................................. 66 第五章 FreeRTOS 任务基础知识 ............................................................................................... 67 5.1 什么是多任务系统? ........................................................................................ 68 5.2 FreeRTOS 任务与协程 ....................................................................................... 69 5.2.1 任务(Task)的特性 .................................................................................... 69 5.2.2 协程(Co-routine)的特性 .......................................................................... 70 5.3 任务状态 ............................................................................................................ 70 5.4 任务优先级 ........................................................................................................ 71 5.5 任务实现 ............................................................................................................ 71 5.6 任务控制块 ........................................................................................................ 72 5.7 任务堆栈 ............................................................................................................ 74 5
STM32F1 FreeRTOS 开发手册 ALIENTEK STM32F103 全系列开发板 FreeRTOS 开发教程 第六章 FreeRTOS 任务相关 API 函数 ...................................................................................... 76 6.1 任务创建和删除 API 函数 ................................................................................ 77 6.2 任务创建和删除实验(动态方法) ..................................................................... 79 6.2.1 实验程序设计 .......................................................................................... 79 6.2.2 程序运行结果分析 .................................................................................. 83 6.3 任务创建和删除实验(静态方法) ..................................................................... 84 6.3.1 实验程序设计 .......................................................................................... 84 6.3.2 程序运行结果分析 .................................................................................. 89 6.4 任务挂起和恢复 API 函数 ................................................................................ 89 6.5 任务挂起和恢复实验 ........................................................................................ 90 6.5.1 实验程序设计 .......................................................................................... 90 6.5.2 程序运行结果分析 .................................................................................. 96 第七章 FreeRTOS 列表和列表项 ............................................................................................... 98 7.1 什么是列表和列表项? .................................................................................... 99 7.1.1 列表 .......................................................................................................... 99 7.1.2 列表项 ...................................................................................................... 99 7.1.3 迷你列表项 ............................................................................................ 100 7.2 列表和列表项初始化 ...................................................................................... 101 7.2.1 列表初始化 ............................................................................................ 101 7.2.2 列表项初始化 ........................................................................................ 102 7.3 列表项插入 ...................................................................................................... 102 7.3.1 列表项插入函数分析 ............................................................................ 102 7.3.2 列表项插入过程图示 ............................................................................ 104 7.4 列表项末尾插入 .............................................................................................. 105 7.4.1 列表项末尾插入函数分析 .................................................................... 105 7.4.2 列表项末尾插入图示 ............................................................................ 106 7.5 列表项的删除 .................................................................................................. 107 7.6 列表的遍历 ...................................................................................................... 108 7.7 列表项的插入和删除实验 .............................................................................. 109 7.7.1 实验程序设计 ........................................................................................ 109 7.7.2 程序运行结果分析 ................................................................................ 113 第八章 FreeRTOS 调度器开启和任务相关函数详解 ............................................................. 117 6
STM32F1 FreeRTOS 开发手册 ALIENTEK STM32F103 全系列开发板 FreeRTOS 开发教程 8.1 阅读本章所必备的知识 .................................................................................. 118 8.2 调度器开启过程分析 ...................................................................................... 118 8.2.1 任务调度器开启函数分析 .................................................................... 118 8.2.2 内核相关硬件初始化函数分析 ............................................................ 120 8.2.3 启动第一个任务 .................................................................................... 120 8.2.4 SVC 中断服务函数 ................................................................................. 122 8.2.5 空闲任务 ................................................................................................ 125 8.3 任务创建过程分析 .......................................................................................... 126 8.3.1 任务创建函数分析 ................................................................................ 126 8.3.2 任务初始化函数分析 ............................................................................ 127 8.3.3 任务堆栈初始化函数分析 .................................................................... 131 8.3.4 添加任务到就绪列表 ............................................................................ 132 8.4 任务删除过程分析 .......................................................................................... 134 8.5 任务挂起过程分析 .......................................................................................... 136 8.6 任务恢复过程分析 .......................................................................................... 139 第九章 FreeRTOS 任务切换 ..................................................................................................... 141 9.1 PendSV 异常 ..................................................................................................... 142 9.2 FreeRTOS 任务切换场合 ................................................................................. 143 9.2.1 执行系统调用 ........................................................................................ 143 9.2.2 系统滴答定时器(SysTick)中断 ............................................................. 144 9.3 PendSV 中断服务函数 ..................................................................................... 145 9.4 查找下一个要运行的任务 .............................................................................. 146 9.6 FreeRTOS 时间片调度 ..................................................................................... 148 9.6 时间片调度实验 .............................................................................................. 150 9.6.1 实验程序设计 ........................................................................................ 150 9.6.2 程序运行结果分析 ................................................................................ 153 第十章 FreeRTOS 系统内核控制函数 ..................................................................................... 155 10.1 内核控制函数预览 ........................................................................................ 156 10.2 内核控制函数详解 ........................................................................................ 156 第十一章 FreeRTOS 其他任务 API 函数 ................................................................................ 161 11.1 任务相关 API 函数预览 ................................................................................ 162 7
STM32F1 FreeRTOS 开发手册 ALIENTEK STM32F103 全系列开发板 FreeRTOS 开发教程 11.2 任务相关 API 函数详解 ................................................................................ 163 11.3 任务壮态查询 API 函数实验 ........................................................................ 170 11.3.1 实验程序设计 ....................................................................................... 170 11.3.2 程序运行结果分析 ............................................................................... 175 11.4 任务运行时间信息统计实验 ........................................................................ 176 11.4.1 相关宏的设置 ....................................................................................... 176 11.4.2 实验程序设计 ....................................................................................... 178 11.4.3 程序运行结果分析 ............................................................................... 182 第十二章 FreeRTOS 时间管理 ................................................................................................. 183 12.1 FreeRTOS 延时函数 ....................................................................................... 184 12.1 函数 vTaskDelay() ................................................................................... 184 12.2 函数 prvAddCurrentTaskToDelayedList() .............................................. 185 12.3 函数 vTaskDelayUntil() .......................................................................... 187 12.2 FreeRTOS 系统时钟节拍 ............................................................................... 191 第十三章 FreeRTOS 队列 ......................................................................................................... 197 13.1 队列简介 ........................................................................................................ 198 13.2 队列结构体 .................................................................................................... 200 13.3 队列创建 ........................................................................................................ 201 13.3.1 函数原型 .............................................................................................. 201 13.3.2 队列创建函数详解 .............................................................................. 203 13.3.3 队列初始化函数 .................................................................................. 204 13.3.4 队列复位函数 ...................................................................................... 205 13.4 向队列发送消息 ............................................................................................ 207 13.4.1 函数原型 .............................................................................................. 207 13.4.2 任务级通用入队函数 .......................................................................... 211 13.4.3 中断级通用入队函数 .......................................................................... 215 13.5 队列上锁和解锁 ............................................................................................ 217 13.6 从队列读取消息 ............................................................................................ 219 13.7 队列操作实验 ................................................................................................ 223 13.7.1 实验程序设计 ...................................................................................... 223 13.7.2 程序运行结果分析 .............................................................................. 231 8
分享到:
收藏