【uC/OS-III篇】uC/OS-III 移植到 STM32 简明教程

uC/OS-III 移植到 STM32 简明教程

一、uC/OS-III 介绍
二、获取UCOS-III源码
三、建立项目工程
四、解决工程编译报错
五、修改项目文件

下一篇博客:
【uC/OS-III篇】uC/OS-III 创建第一个任务(For STM32)

移植后的工程自取方式:
移植好的Keil工程


一、uC/OS-III 介绍

uC/OS-III 是 MicroC/OS-III 的一种版本,是由 Micrium 公司开发的一款实时操作系统(RTOS)。以下是有关 uC/OS-III 的一些介绍:
发布时间和来源:
uC/OS-III 于 2008 年发布,由 Jean Labrosse 创立的 Micrium 公司开发。Micrium 公司专注于提供嵌入式系统软件解决方案,包括实时操作系统、TCP/IP 协议栈、USB 协议栈等。

历史介绍:
uC/OS-III 是 Micrium 公司开发的第三代实时操作系统,是其成功的前两代产品的延续。它建立在先前版本的经验和反馈基础上,提供了更强大、更灵活和更可靠的解决方案。

特点:

  1. 多任务处理:支持多任务处理,允许系统同时运行多个任务。
  2. 优先级调度:支持任务优先级,可以根据任务的重要性进行优先级调度。
  3. 内核可裁剪:具有可配置的内核功能,可以根据应用程序的需求进行裁剪。
  4. 高度可移植性:可移植到多种处理器架构和开发环境中。
  5. 实时性:具有可预测的实时性能,适用于对响应时间要求严格的应用场景。

总体来说,uC/OS-III 是一款功能强大、灵活可靠的实时操作系统,适用于多种嵌入式系统应用,并在嵌入式领域取得了广泛的应用和认可。


二、获取UCOS-III源码

官网地址:Micrium Software and Documentation - Silicon Labs (silabs.com)

需要科学上网哦
在这里插入图片描述
在这里插入图片描述

一共需要下载三项源代码

1. 下载 uC-OS3 ,该文件下包含了uC/OS-III中独立于CPU的源文件,和uC/OS-III中与CPU相关的源代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 下载 uC-CPU,包含了CPU相关代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 下载 uC-LIB,包含了可移植的函数库,数学、字符串处理相关等

在这里插入图片描述
在这里插入图片描述

解压缩三个源码

在这里插入图片描述


三、建立项目工程

传统的STM32目录结构

在这里插入图片描述

UCOS-III文件夹内容,新建四个文件,其中多出一个UCOS-CONFIG文件,用于存放UCOS-III相关的配置文件,其他三个文件夹名字与上面三个源码名相对应即可

在这里插入图片描述

向UCOS-III文件夹下的四个文件中放入文件,下面主要就是配置文件、CPU相关、LIB库相关、OS3相关的源码

有些配置文件分别在源代码的Cfg文件夹中

1.先来找UCOS-CONFIG文件夹中要放的文件

(1)先是 uC-CPU 文件夹

路径 uC-CPU-1.31.01/Cfg/Template 下的 cpu_cfg.h 文件

在这里插入图片描述

​ (2)接着 uC-LIB 文件夹

​ 路径 uC-LIB-1.39.01/Cfg/Template 下的 lib_cfg.h文件

在这里插入图片描述

​ (3)最后 uC-OS3 文件夹

​ 路径 uC-OS3-3.08.01/Cfg/Template 下的 **os_app_hooks.c、os_app_hooks.h、os_cfg.h、os_cfg_app.h **文件

在这里插入图片描述

2. 找UCOS-CPU文件夹中要放的文件

首先是 UCOS-CPU 目录下的四个文件,下滑到最后就可以看到

在这里插入图片描述

接着

在这里插入图片描述

​ 最后

在这里插入图片描述

3. 找UCOS-LIB文件夹中要放的文件

​ 首先是这14个文件

在这里插入图片描述

接着(这里要说明的是 RealView 就是 MDK-ARM ,就是Keil MDK)

在这里插入图片描述
在这里插入图片描述

4. 找UCOS-OS3文件夹中要放的文件

首先是路径 uC-OS3-3.08.01/Ports/ARM-Cortex-M/ARMv7-M下的 **os_cpu_c.c **文件

在这里插入图片描述

接着是 uC-OS3-3.08.01/Ports/ARM-Cortex-M/ARMv7-M/ARM 下的 **os_cpu.c、os_cp_a.asm ** 文件

在这里插入图片描述

最后是 uC-OS3-3.08.01/Source 下的20个文件

在这里插入图片描述

在这里插入图片描述

最终的四个文件下的内容展示

UCO-CONFIG 文件夹下一共6个文件

在这里插入图片描述

UCO-CPU 文件夹下一共7个文件

在这里插入图片描述

UCO-LIB 文件夹下一共10个文件
在这里插入图片描述

UCO-OS3 文件夹下一共22个文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

配置keil项目

不废话直接上图,懂得都懂

在这里插入图片描述
在这里插入图片描述


四、解决工程编译报错

报错1:

…\UCOS-III\UCOS-OS3\os_cpu.h(83): error: #35: #error directive: "CPU_CFG_NVIC_PRIO_BITS not #define’d in ‘cpu_cfg.h’ " /* See Note # 1 */

解决办法:搜索整个工程,搜索 CPU_CFG_NVIC_PRIO_BITS ,将预编译的0改成1,该语句在 cpu_cfg.h 的第 242 行

在这里插入图片描述

CPU_CFG_NVIC_PRIO_BITS 是用来配置中断优先级位数的

报错2:

…\UCOS-III\UCOS-OS3\os_cpu_c.c(48): error: #5: cannot open source input file “…/…/…/Source/os.h”: No such file or directory

改成相对路径 os.h 即可

在这里插入图片描述

报错3:

.\Objects\ucos.axf: Error: L6200E: Symbol Mem_Copy multiply defined (by lib_mem_a.o and lib_mem.o).

解决办法:

将lib_mem.c中的Men_Copy函数注释,或者将宏定义修改

将 #if (LIB_MEM_CFG_OPTIMIZE_ASM_EN != DEF_ENABLED) 修改为

​ #if (LIB_MEM_CFG_OPTIMIZE_ASM_EN != DEF_DISNABLED)
在这里插入图片描述

成功编译!

在这里插入图片描述


五、修改项目文件

在启动文件中修改如下内容

将 PendSV_Handler 修改为 OS_CPU_PendSVHandler

将 SysTick_Handler 修改为 OS_CPU_SysTickHandler
在这里插入图片描述

修改为

在这里插入图片描述

往下滑,对应函数也修改下

在这里插入图片描述

如果你的工程中原本也定义了这两个中断处理函数,也要注释掉在这里插入图片描述

  • 15
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 《μc/os-iii 应用开发指南》是一本针对STM32F1系列微控制器的配套资料。该资料旨在帮助开发者使用μC/OS-III实时操作系统进行应用程序开发。 首先,资料中介绍了μC/OS-III实时操作系统的基本概念和特点。μC/OS-III是一种高度可移植的、可裁剪的实时内核,具有任务调度、同步/互斥机制、消息传递和中断处理等功能,能够满足复杂嵌入式系统的需求。 资料接着介绍了STM32F1系列微控制器的特点和硬件资源。该系列微控制器具有丰富的外设和功能模块,包括GPIO、USART、SPI、I2C、ADC、定时器等,开发者可以根据具体需求选择合适的外设进行配置。 接下来,资料详细介绍了如何在STM32F1系列微控制器上使用μC/OS-III进行应用程序开发。其中,包括μC/OS-III内核的初始化和配置、任务的创建和调度、同步机制的实现、中断处理等。开发者可以根据资料提供的代码示例和实践指导,快速上手开发自己的应用程序。 此外,资料还介绍了一些常见应用场景下的开发案例,比如实时数据采集、通信协议实现、外设控制等。这些案例为开发者提供了实际应用的参考和借鉴,帮助他们更好地理解和运用μC/OS-III实时操作系统。 总之,《μc/os-iii 应用开发指南》是一本针对STM32F1系列微控制器的配套资料,主要介绍了如何使用μC/OS-III实时操作系统进行应用程序开发。通过学习这本指南,开发者能够了解和掌握μC/OS-III的基本原理和使用方法,并能够快速开发出稳定可靠的嵌入式应用程序。 ### 回答2: 《μc/os-iii 应用开发指南》基于 stm32f1 系列配套资料是一本针对stm32f1系列微控制器的操作系统应用开发指南。该指南详细介绍了如何在stm32f1系列微控制器上使用μc/os-iii实现实时操作系统功能。以下是该指南的关键内容: 1. 简介:该指南首先介绍了μc/os-iii的基本概念和优势,解释了为什么选择在stm32f1系列上使用该操作系统。 2. 运行环境搭建:介绍了如何配置开发环境,包括安装和配置编译器、IDE等工具。 3. μc/os-iii的基本功能:详细介绍了μc/os-iii的基本组件,包括任务、信号量、消息队列、事件标志等,以及它们的使用方法和示例代码。 4. stm32f1系列的硬件抽象层:介绍了如何在μc/os-iii上实现stm32f1系列微控制器的硬件抽象层,包括时钟、中断控制、GPIO等模块的配置和使用。 5. 设备驱动开发:介绍了在μc/os-iii上开发设备驱动的方法,包括串口、SPI、I2C等常用外设的驱动开发技巧。 6. 应用案例:提供了一些实际应用案例,例如通过μc/os-iii实现多任务协作、实现数据采集和控制等。 7. 调试和优化:介绍了在μc/os-iii应用开发过程中的调试和优化技巧,包括任务调度分析、资源占用优化等。 该指南以简明易懂的语言和丰富的示例代码,帮助读者快速上手并熟练掌握在stm32f1系列上使用μc/os-iii进行应用开发的方法。无论是初学者还是有一定经验的开发者,都可以从中获得实用的知识和经验。 ### 回答3: 《μc/os-iii 应用开发指南》是一本基于 STM32F1 系列的配套资料,它主要是针对使用 STM32F1 系列芯片进行嵌入式应用开发的读者。 这本指南首先介绍了 μc/os-iii 操作系统的概念和特点。μc/os-iii 是一款实时多任务操作系统,具有高效、稳定、可靠的特性。它支持任务管理、内存管理、时间管理、中断管理等功能,能够很好地解决多任务系统中的任务调度、资源占用和时间同步等问题。 接下来,指南详细介绍了 STM32F1 系列芯片的特点和资源。STM32F1 系列是意法半导体公司推出的一款高性能、低功耗的 ARM Cortex-M3 内核微控制器。该系列芯片拥有丰富的外设,包括通用定时器、串口通信接口、SPI 接口、I2C 接口等,可以满足各种应用需求。 在应用开发方面,本指南从头开始,详细介绍了使用 STM32CubeMX、Keil MDK 和 μc/os-iii 进行开发的流程和步骤。同时,对硬件和软件的配置进行了说明,教读者如何选择合适的时钟源、编写初始化代码、配置任务和中断等。 此外,指南还提供了丰富的例程和实例,帮助读者理解和掌握 μc/os-iiiSTM32F1 系列上的应用开发。这些例程涵盖了任务创建与切换、消息传递、事件标志、互斥信号量等多个方面,以及与外设的交互等。读者可以通过实际操作来深入了解操作系统的原理和应用。 总的来说,《μc/os-iii 应用开发指南》是一本详细、实用的资料,适合那些想要在 STM32F1 系列芯片上进行嵌入式应用开发的读者。它将帮助读者快速上手和掌握 μc/os-iii 操作系统,在 STM32F1 系列上进行高效、稳定的应用开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值