STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程

目录

  • 一、题目要求
  • 二、UCOSII简介
  • 三、实验过程
    • 1. CubeMX工程创建
    • 2. UC/OS开源码获取
    • 3. “移植”前期准备工作
    • 4.移植过程
    • 5. 构建工程任务
    • 3. 初始化管脚
    • 4. 撰写主函数
    • 5. 编译环境配置
    • 6.实现效果
  • 总结

一、题目要求

学习嵌入式实时操作系统(RTOS),以uc/OS为例,将其移植到stm32F103上,构建至少3个任务(task):其中两个task分别以1s和3s周期对LED灯进行点亮-熄灭的控制;另外一个task以2s周期通过串口发送“hello uc/OS! 欢迎来到RTOS多任务环境!”。记录详细的移植过程。

二、UCOSII简介

UCOSII的前身是UCOS,最早出自于1992年美国嵌入式系统专家Jean J.Labrosse在《嵌入式系统编程》杂志的5月和6月刊上刊登的文章连载,并把UCOS的源码发布在该杂志的BBS上。目前最新的版本:UCOSIII已经出来,但是现在使用最为广泛的还是UCOSII,本章主要针对UCOSII进行介绍。

UCOSII是一个可以基于ROM运行的、可裁剪的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS)。为了提供最好的移植性能,UCOSII最大程度上使用ANSI C语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP)。

UCOSII是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU硬件相关部分是用汇编语言编写的,总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其他的CPU上。用户只要有标准的ANSI的C交叉编译器,有汇编器、连接器等软件工具,就可以将UCOSII嵌入到开发的产品中。UCOSII具有执行效率高、占用空间小、实时性能优良和可扩展性强等优点,最小内核可编译至2KB。UCOSII已经移植到了几乎所有知名的CPU上。

UCOSII构思巧妙。结构简洁精炼,可读性强,同时又具备了实时操作系统的全部功能,虽然它只是一个内核,但非常适合初次接触嵌入式实时操作系统的朋友,可以说是麻雀虽小,五脏俱全。UCOSII(V2.91版本)体系结构如图所示:

STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程

三、实验过程

1. CubeMX工程创建

打开stm32cubeMX,选择芯片stm32f103c8:

STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程
配置RCC:
STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程
配置串口USART1:
STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程
设置好路径,导出生成目标工程文件即可:
STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程

2. UC/OS开源码获取

可直接下载此网盘链接内容
链接:https://pan.baidu.com/s/114uPduRRiZbEgw1XsVWwvg
提取码:1902

STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程

4.移植过程

打开cubeMX生成的keil文件
1、点击Manage Project Items,为项目新建如下的文件夹:

STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程
再打开MDK-ARMuC-CPUARM-Cortex-M3RealView路径,选中以下文件,Add添加:
STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程
再打开MDK-ARMuC-LIBPortsARM-Cortex-M3RealView路径,选中下图框文件,Add添加:
STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程
5、点击SOURCE–>Add Files…
MDK-ARMuCOS-IIISource路径下选中以下全部 .c .h 文件,Add添加:
STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程
7、点击BSP–>Add Files…
LMDK-ARMuC-BSP路径下选中以下全部文件,Add添加:
STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程

5. 构建工程任务

5.1 任务要求

构建至少3个任务(task):其中两个task分别以1s和3s周期对LED灯进行点亮-熄灭的控制;另外一个task以2s周期通过串口发送“hello
uc/OS! 欢迎来到RTOS多任务环境!”

5.2 代码修订
1、为bsp.c和bsp.h添加代码
bsp.c代码:

STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程
2、修改startup_stm32f103xb.s文件代码

在以下位置处:
PendSV_Handler改为OS_CPU_PendSVHandler,
SysTick_Handler改为OS_CPU_SysTickHandler

STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程
3、修改app_cfg.h文件代码

DEF_ENABLED 改为 DEF_DISABLED

STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程
4、修改includes.h文件代码

在#include <bsp.h>下面添加 #include “gpio.h” 和 #include “app_cfg.h”
将#include <stm32f10x_lib.h> 改为 #include “stm32f1xx_hal.h”

STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程
6、修改usart.c文件代码

添加代码完成printf重定向:

STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程

3. 初始化管脚

在gpio.c文件中修改代码:

STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程

4. 撰写主函数

修改main.c文件代码:

来源:源的涵涵葛

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月5日
下一篇 2022年10月5日

相关推荐