目录
一、基本要求
学习嵌入式实时操作系统(RTOS),以uc/OS-III为例,将其移植到stm32F103上,构建至少3个任务(task): 其中两个task分别以1s和3s周期对LED等进行点亮-熄灭的控制; 另外一个task以2s周期通过串口发送“hello uc/OS! 欢迎来到RTOS多任务环境!”。记录详细的移植过程。
二、UCOSIII简单介绍
UCOS是Micrium公司出品的RTOS类实时操作系统, UCOS目前有两个版本:UCOSII和UCOSIII。
UCOSIII是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制,提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。
在UCOSIII中任务就是程序实体,UCOSIII能够管理和调度这些小任务(程序)。UCOSIII中的任务由三部分组成:任务堆栈、任务控制块和任务函数。
(1)任务堆栈:上下文切换的时候用来保存任务的工作环境,就是STM32的内部寄存器值。
#define START_STK_SIZE 512 //堆栈大小 CPU_STK START_TASK_STK[START_STK_SIZE]; //定义一个数组来作为任务堆栈 任务堆栈初始化
(2)任务控制块:任务控制块用来记录任务的各个属性。
OS_TCB StartTaskTCB; //创建一个任务控制块
(3)任务函数:由用户编写的任务处理代码,是实实在在干活的,任务函数通常是一个无限循环,也可以是一个只执行一次的任务。任务的参数是一个void类型的,可以可以传递不同类型的数据甚至是函数。
三、建立CubeMX工程
1.配置RCC
2.配置SYS
3.配置USART1
4.PA3 PC13配置为GPIO_Output,可根据LED现象作为是否移植成功的依据。
三、获取uCOS-III源码
1.Micrium 公司官网下载中心:http://micrium.com/downloadcenter/
选择ST系列-> View all STMicroelectronics->STMicroelectronics STM32F107
之后按照提示注册下载即可。
2.或可直接下载此网盘链接内容
链接:https://pan.baidu.com/s/10RqsDRecbmVteWmDv2oUNQ
提取码:1234
3.将uCOS的5个相关文件复制到cubeMX工程的MDK-ARM文件夹下
四、移植过程
1.打开cubeMX生成的keil文件,点击Manage Project Items,按下图所示操作,为项目新建文件夹,在对应文件夹下添加文件。
2.点击CPU–>Add Files…
MDK-ARM\uC-CPU路径下选中以下文件,Add添加
MDK-ARM\uC-CPU\ARM-Cortex-M3\RealView路径下选中以下文件,Add添加
2.点击LIB–>Add Files…
MDK-ARM\uC-LIB路径下选中下图红框文件,Add添加
MDK-ARM\uC-LIB\Ports\ARM-Cortex-M3\RealView路径下选中下图绿框文件,Add添加
3.点击PORT–>Add Files… MDK-ARM\uCOS-III\Ports\ARM-Cortex-M3\Generic\RealView路径下选中以下文件,Add添加
4.点击SOURCE–>Add Files… MDK-ARM\uCOS-III\Source路径下选中以下全部 .c .h 文件,Add添加
5.点击CONFIG–>Add Files…
MDK-ARM\uC-CONFIG路径下选中以下全部文件,Add添加
6.点击BSP–>Add Files… MDK-ARM\uC-BSP路径下选中以下全部文件,Add添加
7.全部添加完毕后,点击OK
8.导入文件路径