STM32F1 UCOS 开发手册
ALIENTEK STM32F103 全系列开发板 UCOSII/III 开发教程
STM32F1 UCOS
开发手册 V2.0
−ALIENTEK STM32F1 UCOSII/III 开发教程
本教程适用于 ALIENTEK 所有 STM32F103 开发板
1
STM32F1 UCOS 开发手册
ALIENTEK STM32F103 全系列开发板 UCOSII/III 开发教程
广州市星翼电子科技有限公司
淘宝店铺 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 UCOS 开发手册
ALIENTEK STM32F103 全系列开发板 UCOSII/III 开发教程
文档更新说明
版本
版本更新说明
负责人 校审 发布日期
初稿:
第一章 UCOSII 移植
第二章 Cortex-M3/M4 基础
第三章 移植文件讲解
第四章 UCOSIII 移植
第五章 UCOSIII 任务管理
V1.0
第六章 任务相关 API 函数使用
左忠凯 刘军
2015.4.22
第七章 UCOSIII 中断和时间管理
第八章 UCOSIII 软件定时器
第九章 UCOSIII 信号量和互斥信号量
第十章 UCOSIII 消息传递
第十一章 事件标志组
第十二章 存储管理
3
STM32F1 UCOS 开发手册
ALIENTEK STM32F103 全系列开发板 UCOSII/III 开发教程
目录
STM32F1 UCOS ................................................................................................................................ 1
开发手册 V2.0 ................................................................................................................................. 1
−ALIENTEK STM32F1 UCOSII/III 开发教程 .............................................................................. 1
第一章 UCOSII 移植 ................................................................................................................... 10
1.1 移植准备工作 .................................................................................................... 11
1.2 UCOS II 移植 ...................................................................................................... 12
1.3 软件设计 ............................................................................................................. 16
1.4 下载验证 ............................................................................................................. 19
第二章 Cortex-M3 基础 ................................................................................................................ 21
2.1 Cortex-M3 通用寄存器 ...................................................................................... 22
2.2 操作模式和特权级别 ........................................................................................ 26
2.3 堆栈 .................................................................................................................... 27
2.3.1 Cortex-M3 堆栈操作 ................................................................................. 27
2.3.2 双堆栈机制 .............................................................................................. 27
2.3.3 Stack frames ............................................................................................... 28
2.4 SVC 和 PendSV 异常 ........................................................................................ 30
2.4.1 SVC 异常 ................................................................................................... 30
2.4.2 PendSV 异常 ............................................................................................. 31
第三章移植文件讲解 ..................................................................................................................... 34
3.1 滴答定时器 SysTick .......................................................................................... 35
3.2 os_cpu_a.asm 文件详解 ...................................................................................... 36
3.3 os_cpu.h 文件详解 .............................................................................................. 39
3.4 os_cpu_c.c 文件详解 .......................................................................................... 40
第四章 UCOSIII 移植 .................................................................................................................. 41
4.1 UCOSIII 简介 ..................................................................................................... 42
4.2 移植准备工作 ..................................................................................................... 43
4.2.1 准备基础工程 .......................................................................................... 43
4
STM32F1 UCOS 开发手册
ALIENTEK STM32F103 全系列开发板 UCOSII/III 开发教程
4.2.2 UCOSIII 源码 ............................................................................................ 44
4.3 UCOS III 移植 .................................................................................................... 50
4.3.1 向工程中添加相应的文件 ...................................................................... 50
4.3.2 修改 bsp.c 和 bsp.h 文件 .......................................................................... 54
4.3.3 修改 os_cpu_a.asm 文件 .......................................................................... 56
4.3.4 修改 os_cpu_c.c 文件 ............................................................................... 56
4.3.5 修改 os_cfg_app.h .................................................................................... 58
4.3.6 修改 SYSTEM 文件夹 ............................................................................. 59
4.4 软件设计 ............................................................................................................. 59
4.5 下载验证 ............................................................................................................. 63
第五章 UCOSIII 任务管理 .......................................................................................................... 65
5.1 UCOSIII 启动和初始化 ..................................................................................... 66
5.2 任务状态 ............................................................................................................ 67
5.3 任务控制块 ........................................................................................................ 68
5.4 任务堆栈 ............................................................................................................ 70
5.5 任务就绪表 ........................................................................................................ 71
5.5.1 优先级位映射表 ....................................................................................... 71
5.5.2 就绪任务列表 ........................................................................................... 73
5.6 任务调度和切换 ................................................................................................ 74
5.6.1 可剥夺型调度 .......................................................................................... 74
5.6.2 时间片轮转调度 ...................................................................................... 77
第六章 任务相关 API 函数使用 .................................................................................................. 80
6.1 任务创建和删除实验 ........................................................................................ 81
6.1.1 OSTaskCreate()函数 .................................................................................. 81
6.1.2 OSTaskDel()函数 ...................................................................................... 82
6.1.3 实验程序设计 .......................................................................................... 82
6.1.4 程序运行结果分析 .................................................................................. 87
6.2 任务挂起和恢复实验 ........................................................................................ 88
6.2.1 OSTaskSuspend()函数 ............................................................................... 88
6.2.2 OSTaskResume()函数 ............................................................................... 88
6.2.3 实验程序设计 .......................................................................................... 88
6.2.4 程序运行结果分析 .................................................................................. 89
5
STM32F1 UCOS 开发手册
ALIENTEK STM32F103 全系列开发板 UCOSII/III 开发教程
6.3 时间片轮转调度实验 ........................................................................................ 91
6.3.1 OSSchedRoundRobinCfg()函数 ............................................................... 91
6.3.2 OSSchedRoundRobinYield()函数 ............................................................. 92
6.3.3 实验程序设计 ........................................................................................... 92
6.3.4 实验程序运行结果 ................................................................................... 94
第七章 UCOSIII 系统内部任务 .................................................................................................. 96
7.1 空闲任务 ............................................................................................................ 97
7.2 时钟节拍任务 .................................................................................................... 98
7.3 统计任务 .......................................................................................................... 101
7.4 定时任务 .......................................................................................................... 102
7.5 中断服务管理任务 ........................................................................................... 102
7.6 钩子函数 ........................................................................................................... 103
7.6.1 空闲任务钩子函数 ................................................................................ 103
7.6.2 实验程序设计 ........................................................................................ 104
7.6.3 实验程序运行结果 ................................................................................ 104
7.6.4 其他任务钩子函数 ................................................................................ 105
第八章 UCOSIII 中断和时间管理 ............................................................................................ 106
8.1 中断管理 .......................................................................................................... 107
8.1.1 UCOSIII 中断处理过程 .......................................................................... 107
8.1.2 直接发布和延迟发布 ............................................................................ 108
8.1.3 OSTimeTick()函数 .................................................................................. 110
8.1.4 临界段代码保护 ..................................................................................... 111
8.2 时间管理 .......................................................................................................... 112
8.2.1 OSTimeDly()函数 ................................................................................... 112
8.2.2 OSTimeDlyHMSM()函数 ....................................................................... 113
8.2.3 其他有关时间函数 ................................................................................ 113
第九章 UCOSIII 软件定时器 .................................................................................................... 114
9.1 定时器工作模式 .............................................................................................. 115
9.1.1 创建一个定时器 ..................................................................................... 115
9.1.2 单次定时器 ............................................................................................. 115
9.1.3 周期定时器(无初始化延迟) ................................................................... 116
6
STM32F1 UCOS 开发手册
ALIENTEK STM32F103 全系列开发板 UCOSII/III 开发教程
9.1.4 周期定时器(有初始化延迟) ................................................................... 117
9.2 UCOSIII 定时器实验 ....................................................................................... 118
9.2.1 实验程序设计 ........................................................................................ 118
9.2.2 实验程序运行结果 ................................................................................ 122
第十章 UCOSIII 信号量和互斥信号量 ..................................................................................... 125
10.1 信号量 ............................................................................................................. 126
10.1.1 创建信号量 ........................................................................................... 126
10.1.2 请求信号量 ........................................................................................... 127
10.1.3 发送信号量 ........................................................................................... 127
10.2 直接访问共享资源区实验 ............................................................................ 127
10.2.1 实验程序设计 ...................................................................................... 128
10.2.2 实验程序运行结果 .............................................................................. 129
10.3 使用信号量访问共享资源区实验 ................................................................ 130
10.3.1 实验程序设计 ...................................................................................... 130
10.3.2 实验程序运行结果 .............................................................................. 131
10.4 任务同步实验 ................................................................................................ 132
10.4.1 实验程序设计 ...................................................................................... 133
10.4.2 实验程序运行结果 .............................................................................. 134
10.5 优先级反转 ..................................................................................................... 135
10.6 优先级反转实验 ............................................................................................ 136
10.6.1 实验程序设计 ...................................................................................... 136
10.6.2 实验程序运行结果 .............................................................................. 139
10.7 互斥信号量 .................................................................................................... 141
10.7.1 创建互斥型信号量 ............................................................................... 142
10.7.2 请求互斥型信号量 ............................................................................... 142
10.7.3 发送互斥信号量 ................................................................................... 143
10.8 互斥信号量实验 ............................................................................................ 144
10.8.1 实验程序设计 ...................................................................................... 144
10.8.2 实验程序运行结果 .............................................................................. 146
10.9 任务内嵌信号量 ............................................................................................ 148
10.9.1 等待任务信号量 .................................................................................. 148
10.9.2 发布任务信号量 .................................................................................. 148
10.10 任务内嵌信号量实验 .................................................................................. 149
7
STM32F1 UCOS 开发手册
ALIENTEK STM32F103 全系列开发板 UCOSII/III 开发教程
10.10.1 实验程序设计 .................................................................................... 149
10.10.2 实验程序运行结果 ............................................................................ 150
第十一章 UCOSIII 消息传递 .................................................................................................... 152
11.1 消息队列 ......................................................................................................... 153
11.2 消息队列相关函数 ......................................................................................... 154
11.2.1 创建消息队列 ....................................................................................... 154
11.2.2 等待消息队列 ....................................................................................... 154
11.2.3 向消息队列发送消息 ........................................................................... 155
11.3 消息队列实验 ................................................................................................ 156
11.3.1 实验程序设计 ....................................................................................... 156
11.3.2 实验程序运行结果 ............................................................................... 161
11.4 任务内建消息队列 ........................................................................................ 164
11.4.1 等待任务内建消息 ............................................................................... 164
11.4.2 发送任务内建消息 ............................................................................... 164
11.5 任务内建消息队列实验 ................................................................................ 165
11.5.1 实验程序设计 ....................................................................................... 165
11.5.2 实验程序运行结果 ............................................................................... 169
第十二章 事件标志组 ................................................................................................................. 172
12.1 事件标志组 ..................................................................................................... 173
12.2 事件标志组相关函数 ..................................................................................... 174
12.2.1 创建事件标志组 .................................................................................. 174
12.2.2 等待事件标志组 .................................................................................. 174
12.2.3 向事件标志组发布标志 ...................................................................... 175
12.3 时间标志组实验 ............................................................................................. 175
12.3.1 实验程序设计 ...................................................................................... 175
12.3.2 实验程序结果分析 .............................................................................. 181
第十三章 同时等待多个内核对象 ............................................................................................. 184
13.1 同时等待多个内核对象 ................................................................................ 185
13.2 OSPendMulti()函数 ..................................................................................... 185
13.3 同时等待多个内核对象实验 ........................................................................ 186
13.3.1 实验程序设计 ...................................................................................... 186
8