嵌入式RTOS多任务程序设计

本文详细介绍了如何将ucOS-III实时操作系统移植到STM32F103开发板上,包括配置CubeMX工程、获取源码、添加任务控制、修改文件代码、编译烧录过程,以及构建了1s/3s周期LED控制和2s周期串口发送任务。
摘要由CSDN通过智能技术生成

目录

一、基本要求

二、UCOSIII简单介绍

三、建立CubeMX工程

三、获取uCOS-III源码

 四、移植过程

五、构建三个任务

1.代码添加

 2.修改部分文件相关代码

六、编译烧录 


一、基本要求

学习嵌入式实时操作系统(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.导入文件路径

五、构建三个任务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值