历史上的今天
返回首页

历史上的今天

今天是:2025年04月23日(星期三)

正在发生

2019年04月23日 | UCOSIII在STM32F4xx上的移植

2019-04-23 来源:eefocus

一、准备好UCOSIII的源码


    ①通过UCOSIII官方下载:https://www.micrium.com/,进入官方网站后点击,找到Browse by MCU Manufacturer下对应的STM这一栏,选择对应的型号

这里点击STN32F4xx进去选择自己需要的下载即可

    ②提供一份我已经下载好的UCOSIII源码:链接:https://pan.baidu.com/s/1hqDpzDigy1kg3ZaftQBJhQ 密码:1e5d


二、UCOSIII移植


    ①准备好需要移植的工程,在工程文件夹里新建一个UCOIII文件夹,然后将UCOSIII源码里的uC_CPU、uC_LIB、UCOS_III文件复制到新建的这个文件夹中。


     

还需要在UCOSIII文件夹中再新建两个文件夹:UCOSIII_BSP,UCOSIII_CONFIG,上图所示,已经建好了。


②向UCOSIII_CONFIG添加文件,路径是:UCOSIII 3.04MicriumSoftwareEvalBoardsSTSTM32F429II-SKuCOS-III,添加的文件如图所示:

③向UCOSIII_CONFIG添加文件,路径是:UCOSIII 3.04MicriumSoftwareEvalBoardsSTSTM32F429II-SKBSP

④打开工程文件,向工程中添加分组,需要添加的分组文件夹如下       

       

⑤文件夹添加好后,再向各文件夹添加源文件


1、BSP添加路径:UCOSIIIUCOS_BSP里的bsp.c添加进去,添加后如下图所示:

2、CPU添加路径:UCOSIIIUCOS_CPU里的cpu_core.c添加进去,并继续进入目录ARM-Cortex-M4RealView选择cpu_a.samcpu_c.c两个文件,添加后如下图所示:

3、LIB添加路径UCOS-III-LEDUCOSIIIuC-LIB里的


,继续点击PortsARM-Cortex-M4RealView,选择All file,添加lib_mem_a.asm文件,添加后如下图所示:

4、CORE添加路径:UCOS-III-LEDUCOSIIIuCOS-IIISource,添加所有文件,添加后如下图所示:

5、PORT添加路径:UCOS-III-LEDUCOSIIIuCOS-IIIPortsARM-Cortex-M4GenericRealView,选择All file,添加所有文件,添加后如下图所示:



6、CONFIG添加路径:UCOS-III-LEDUCOSIIIUCOS_CONFIG选择All file,添加所有文件



----------------------------------------------------------------------------------------------------------------------------------


注意,此时部分文件会带有一把钥匙,代表不能修改,修改方法:返回工程文件,右键点击UCOSIII文件,选择属性,把只读去掉即可进入工程中对其修改


----------------------------------------------------------------------------------------------------------------------------------


⑥添加相关头文件路径


⑦修改bsp.c和bsp.h文件,这里直接下载已经修改好的文件


⑧修改os_cpu_a.asm汇编文件,这里直接下载已经修改好的文件


⑨修改os_cpu_c.c文件,这个主要是修改堆栈函数,这里直接下载已经修改好的文件


⑩修改os_cfg_app.h文件,系统裁剪和内核有关的,这里直接下载已经修改好的文件


文件下载链接:https://pan.baidu.com/s/1reVWUDq_iPfzxf1vTzMisg 密码:sdfb


此时编译一下,会出现以下问题


1、PendSV_Handler是做上下文切换的,重复定义,而STM32F4xx_it.c只是给的一个框架,屏蔽掉即可


2、搜索到是os_cpu_c.c里面的堆栈函数,由于在汇编文件已经定义,所以这里屏蔽掉即可

十一、修改sys.h,这里要使用支持UCOSIII的SYSTEM文件夹


编译后出现的问题: 中断服务函数重复定义,同样,STM32F4xx_it.c里的屏蔽掉即可



十二、最后在主函数创建任务进行测试,注意在os_cpu_c.c中添加#include "includes.h"   //添加头文件


 


(1)、创建一个start_task任务,Start任务用来创建其他任务。


(2)、创建一个led0_task任务,用来控制LED0的亮灭。


(3)、创建一个led1_task任务,用来控制LED1的亮灭。


(4)、创建一个float_task任务,用来测试浮点计算。


这里直接复制main.c进行测试,下载链接:https://pan.baidu.com/s/1reVWUDq_iPfzxf1vTzMisg 密码:sdfb


----------------------------------------------------------------------------------------------------------------------------------------------------


如何移植不同版本的UCOS系统?


只需要将源码的UCOSIIIuCOS-III下的Source文件夹,直接替换掉移植好后的Source,比如我把3.03版本的Source文件夹复制替换掉移植好工程里的UCOSIIIuCOS-III下的Source文件夹编译即可,这样就将原来的版本替换成3.03的版本了。


推荐阅读

史海拾趣

台湾肯尼威(CANNYWELL)公司的发展小趣事

随着公司产品的逐渐推广,肯尼威面临着日益激烈的市场竞争。李明深知,要想在竞争中脱颖而出,必须走品质之路。他引入了国际先进的质量管理体系,率先在同行业中通过ISO9001认证。这一举措不仅提高了产品质量,也提升了公司的品牌形象。同时,公司还建立了严格的品质检测流程,确保每一件产品都符合高标准的品质要求。

Carlisle Interconnect Technologies公司的发展小趣事

随着电子行业的快速发展,Carlisle Interconnect Technologies不断进行技术升级和产品创新。公司不断引进先进的生产设备和技术,提升产品的质量和性能。同时,公司还积极拓展产品线,从最初的绝缘电线电缆扩展到连接器、传感器等多个领域。这种多样化的产品策略使得公司能够更好地满足客户的多样化需求,也在市场上取得了更大的成功。

Glow-Lite Corp公司的发展小趣事

随着科技的进步和市场的变化,Carlisle Interconnect Technologies敏锐地捕捉到了新型材料的发展潜力。公司成为第一批采用PTFE(聚四氟乙烯)这种独特材料生产高温电线和电缆的公司之一。PTFE材料具有出色的耐高温、耐腐蚀和电气性能,使得公司的产品在航空航天、电子通信等领域得到了广泛应用。这一创新举措不仅提升了公司的市场竞争力,也为整个行业的技术进步做出了贡献。

Gemmy Electronics Co Ltd公司的发展小趣事
可能是由于电源线路未插好、电源开关未打开或电源本身故障导致。
FLEX LTD公司的发展小趣事
电子捕鼠器首先通过电源电路将家用交流电(如220V)转换为适合捕鼠器工作的低压直流电(如6V)。
ADMOS公司的发展小趣事

随着技术的不断进步,ADMOS公司开始积极拓展国内外市场。通过与各大电子设备制造商建立紧密的合作关系,ADMOS的产品逐渐渗透到智能手机、平板电脑、笔记本电脑等消费电子产品中。同时,公司还积极开拓汽车电子、工业控制等新兴市场,为公司的持续成长注入了新的动力。

问答坊 | AI 解惑

3G Android移动开发名家大讲堂(12月19日Google北京总部

作为目前最流行的Linux开源平台,Google公司的Android手机操作系统,在2007年11月推出后,即受到了广大技术爱好者的普遍关注。凭借其开放性和优异性,Android平台在发展的过程中也得到了包括大手机厂商和著名移动运营商在内的业界的广泛支持。目前 ...…

查看全部问答>

系统共享

虚拟机共享终于成功了 [ 本帖最后由 wuquan-1230 于 2010-3-21 09:24 编辑 ]…

查看全部问答>

求问psp如何实现adhoc两机间传输文件

之前看过许多文档都是讲如何连到http/ftp这种的 可现在想实现一个两机间传输文件的程序 功能类似adhoc file transfer这种 希望各位大虾不吝赐教 谢谢!!…

查看全部问答>

单片机能否运行C++?

本人学C后学c++,觉得c++全面一点,就是不知道如题所问。不胜感激。…

查看全部问答>

向跟我一样刚刚起步的菜鸟们推荐一本书

买的一本叫《Windows CE设备驱动及BSP开发指南》的书今天终于到了(速度还行,三天就到了),大概的翻了翻,着重看了看我这几天在看的BSP这一块,发现这本书还不错,一个星期摸索的问题看了一下书就明白了,而且书是今年6月出版的,内容比较新,在 ...…

查看全部问答>

有关USB接口HID设备的通讯问题

http://topic.eeworld.net/u/20090220/17/0618432f-cc0b-4e4e-91fa-a55e5ce8856d.html 之前的发错版块了,重发一下! 之前发过帖子,也在网上下过代码,几经修改之后, 终于可以读取HID设备的相关描述符等信息 也可以读取到HID设备发送给主机 ...…

查看全部问答>

lpc2214引脚默认状态是什么,此时ad转换到底能不能用?

管脚连接模块可以使所选管脚具有1 个以上的功能。配置寄存器控制多路开关来连接 管脚与片内外设。 外设在激活和任何相关中断使能之前必须连接到适当的管脚。任何使能的外设功能如 果没有映射到相关的管脚,则被认为是无效的。 当管脚只选择一个 ...…

查看全部问答>

GPIO口模拟i2c写一FM发射程序,高分求教

如题,希望有类似的程序或经验朋友指导一下,本人刚学这个不久。 除了分报谢也没有什么特别的东东,如果是深圳的朋友倒可以一起吃个饭,交个朋友,拜个师也行…

查看全部问答>

Wince开始菜单问题

C# 如何把Wince开始菜单隐藏起来.谢谢!…

查看全部问答>