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

这篇具有很好参考价值的文章主要介绍了【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)

需要科学上网哦
ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统
ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

一共需要下载三项源代码

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

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统
ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统
ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统
ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统
ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统
ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

解压缩三个源码

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统


三、建立项目工程

传统的STM32目录结构

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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

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

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

(1)先是 uC-CPU 文件夹

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

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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

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

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

​ (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 **文件

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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

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

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

接着

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

​ 最后

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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

​ 首先是这14个文件

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统
ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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

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

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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

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

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

UCO-LIB 文件夹下一共10个文件
ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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

配置keil项目

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

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统
ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统


四、解决工程编译报错

报错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 行

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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 即可

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

报错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)
ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

成功编译!

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统


五、修改项目文件

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

将 PendSV_Handler 修改为 OS_CPU_PendSVHandler

将 SysTick_Handler 修改为 OS_CPU_SysTickHandler
ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

修改为

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

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

ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统

如果你的工程中原本也定义了这两个中断处理函数,也要注释掉ucos iii 操作系统stm32,uC/OS-III,stm32,UC/OS-III,RTOS,实时操作系统文章来源地址https://www.toymoban.com/news/detail-849950.html

到了这里,关于【uC/OS-III篇】uC/OS-III 移植到 STM32 简明教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mpack简明教程

    本文先简单介绍MessagePack的基本概念。 然后,介绍一个MessagePack C API - MPack的通常使用。 接着尝试对MPack截断数据的读取。 注:本文完整代码见仓库。 如果你使用过C/C++的json库,那么上手MessagePack是比较容易的。关于C/C++ Json库的使用可见:C++ JSON库的一般使用方法-CSDN博客。

    2024年02月20日
    浏览(46)
  • SAP报表简明教程

    SAP 报表简明教程   一、 报表需求,根据物料编码和物料类型 查询报表。用户输入界面要求如下:     二、 开始写代码。先进入 TCODE:SE38 ,新建一个程序。      点击创建按钮,如下图:      输入标题,写明 此程序的功能 作者,创建时间,点保存,     输入自己事先建

    2024年02月04日
    浏览(45)
  • 【Verilator】 1 简明教程

    我是 雪天鱼 ,一名FPGA爱好者,研究方向是FPGA架构探索和数字IC设计。 欢迎来关注我的B站账号,我将定期更新IC设计教程。 B站账号: 雪天鱼 ,https://space.bilibili.com/397002941?spm_id_from=333.1007.0.0 先从GitHub下载实验代码 以一个用SystemVerilog编写的简单ALU来作为DUT(device under test)

    2024年02月02日
    浏览(64)
  • Husky使用简明教程

    Husky 是一个流行的 Git 钩子工具,用于在不同的 Git 操作(如提交和推送)前自动运行脚本。比如代码格式化、静态检查等。这有助于保持代码库的质量和一致性。本教程将详细介绍 Husky 的原理、使用方式、配置方法以及如何在开发中集成 Husky。 Husky 原理 安装 Husky 配置 Hus

    2024年04月10日
    浏览(43)
  • SSH 隧道简明教程

    本章主要介绍了什么是 SSH 隧道以及如何使用 SSH 隧道,包括 SSH 隧道加密数据传输以及绕过防火墙。 SSH 隧道是 SSH 中的一种机制,它能够将其他 TCP 端口的网络数据通过 SSH 连接来转发,并且自动提供了相应的加密及解密服务。因为 SSH 为其他 TCP 链接提供了一个安全的通道来

    2024年02月06日
    浏览(50)
  • dig 简明教程

    哈喽大家好,我是咸鱼 不知道大家在日常学习或者工作当中用 dig 命令多不多 dig 是 Domain Information Groper 的缩写,对于网络管理员和在域名系统(DNS)领域工作的小伙伴来说,它是一个非常常见且有用的工具。 无论是简单的 DNS 解析查找还是更高级的故障排除和分析, dig 都能够

    2024年02月08日
    浏览(67)
  • 【小黑嵌入式系统第十课】μC/OS-III概况——实时操作系统的特点、基本概念(内核&任务&中断)、与硬件的关系&实现

    上一课: 【小黑嵌入式系统第九课】PSoC 5LP第一个实验——LED、字符型LCD显示实验 下一课: 【小黑嵌入式系统第十一课】μC/OS-III程序设计基础(一)——任务设计、任务管理(创建基本状态内部任务)、任务调度、系统函数 一. 凡从事嵌入式系统开发工作的人,必须对嵌入

    2024年02月05日
    浏览(51)
  • Blender骨骼动画简明教程

    Blender 是首选的开源3D动画软件之一。 令人惊讶的是,开始创建简单的角色动画并不需要太多时间。 一旦获得最终的 3D 角色模型,你就可以使用该软件的众多动画功能和工具将其变为现实。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 例如,Blender 的绑定工具将帮助你实现角色

    2024年02月07日
    浏览(51)
  • 电商3D产品渲染简明教程

    3D 渲染让动作电影看起来更酷,让建筑设计变得栩栩如生,现在还可以帮助营销人员推广他们的产品。 从最新的《阿凡达》电影到 Spotify 的上一次营销活动,3D 的应用让一切变得更加美好。 在营销领域,3D 产品渲染可帮助品牌创建产品的高分辨率图像和视频,这些图像和视

    2024年02月13日
    浏览(35)
  • AI绘画工具简明教程

    官方地址 首先需要邮箱注册,等待邀请(可能需要等待一两天) 能成功登录后会进入这样一个界面 https://app.scenario.com/generators 创建模型 提供的图片集上传的时候得是jpg,还需要裁剪成正方形。批量修改图片在线网站:https://www.birme.net/ 根据图集生成图片 官方网址:https://

    2024年02月11日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包