UcosII移植

UcosII移植文章目录 UCOS 移植前准备 UCOS 源码文件整理 UCOS 源码修改 1 os cpu c c2 os cpu c asm3 os cfg h4 includes h5 app cfg hucos 移植 UCOS 移植前准备 UCOS 源码文件整理新建 UCOS II 文件夹 并在 uCOS II 目录下新建 3 个目录文件夹 CORE PORT CONFIG 将源码 Source 文件夹下除 os cfg c h 和 os dbg r c 全部复制到移植工程目录下的 CORE 下将源码 port gt coterxM 文件夹下

UCOS移植前准备

UCOS源码文件整理

新建UCOS-II文件夹,并在uCOS-II目录下新建3个目录文件夹CORE、PORT、CONFIG。

  • 将源码Source文件夹下除os_cfg_c.h和os_dbg_r.c全部复制到移植工程目录下的CORE下
  • 将源码port->coterxM文件夹下的.c.h.asm以及dbg.c文件移到PORT下
    请添加图片描述

  • 将os_cfg.h、includes.h、app_cfg.h、3个文件移到CONFIG下,钩子文件用不到可以不添加。
    请添加图片描述

UCOS源码修改

请添加图片描述

1. os_cpu_c.c

2. os_cpu_c.asm

.asm文件中主要修改两处,将异常处理函数名由os_cpu_PendSV_Handler改为PendSV_Handler。

3. os_cfg.h

4. includes.h

将包含的所有头文件删除掉,只包含#include “os.h”即可。

(即该文件中只写一句#include “os.h”)

5. app_cfg.h

添加两句宏定义

// 不受内核管理的中断等级,使用 BOUNDARY 寄存器设置任务切换时的中断屏蔽 #define CPU_CFG_KA_IPL_BOUNDARY 4u // 中断优先级寄存器可用位数,ARM 官方为 8bit 由厂家裁剪 #define CPU_CFG_NVIC_PRIO_BITS 4u 

请添加图片描述

ucos移植

  • 向UCOSII-CORE分组中添加CORE 文件夹下除ucosii.c外的所有.c文件
  • 向UCOSII-PORT分组中添加PORT文件夹下的os_epu.h、os_cpu_a.asm和 os_cpu_c.c这三个文件
  • 向UCOSII-CONFIG分组添加CONFIG文件夹下的 includes.h和 os_cfg.h这两个文件

注意:不要将ucos_ii.c文件添加到UCOSII-CORE分组中!!!否则编译以后会提示好多重复定义的错误!

  • 将修改好的ucos文件添加到工程文件中,最后保持目录结构一致,并注意链接头文件引用
  • 在工程的stm32f4xx_it.c,注释掉PendSVHandler()函数
  • 在工程的stm32f4xx_it.c,在SysTick_Handler()函数中添加
    void SysTick_Handler(void) { 
          #if OS_CRITICAL_METHOD == 3u  OS_CPU_SR cpu_sr; #endif OS_ENTER_CRITICAL(); OSIntEnter(); OS_EXIT_CRITICAL(); OSTimeTick(); OSIntExit(); HAL_IncTick(); } 
  • 注意os_cfg.h文件中,第3处宏定义的修改,与ucos的时基有关
  • 用的ucos代码的相关文件中注意添加头文件include“os.h”
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225449.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午9:18
下一篇 2026年3月17日 上午9:18


相关推荐

  • c++中无法打开源文件_无法打开源文件iostream

    c++中无法打开源文件_无法打开源文件iostream一、无法打开文件“xxx.lib”出现这种错误一般为①未添加xxx.lib库文件②库添加后,路径不对,找不到对应的库文件路径解决方案:先查看库文件是否已经添加若未添加,右击项目->属性->链接器->输入;将库文件加入即可如果库文件已经添加,仍然报错,此时需要查看生成的库文件的路径了。先找到生成库文件的路径,右击项目->属性->常规->查看输出目录是否与生成的库文件的路径是否匹配,若不匹配,修改路径即可。二、无法打开源文件说明是库的附加包含路径有问题

    2022年10月14日
    6
  • JAVASocket实现聊天室「建议收藏」

    JAVASocket实现聊天室「建议收藏」JAVASocket实现聊天室文章目录JAVASocket实现聊天室Sokcet是什么JAVASOCKET编程中的两个重要对象ServerSocket构造方法acceptbindcloseSocket构造方法getInputStream,getOutputStreamclose聊天室实现服务端实现客户端实现读线程实现写线程实现运行结果Sokcet是什么socket本质上是两个端点之间的通…

    2022年6月15日
    30
  • 数据库学习 – select(多表联查)[通俗易懂]

    多表联合查询多表联合查询可以通过连接运算实现,而连接运算又可以通过广义笛卡尔积后在进行选择运算来实现。 Select多表联合查询语句Select列名[[,列名]…]from表名1,表名2,,…Where查询条件; 可以使用as为表或者字段(属性)取别名; Select列名[[,列名]…]from表名1[as]别名1,表名

    2022年4月4日
    634
  • css transition动画_css3过渡属性有几种

    css transition动画_css3过渡属性有几种css动画效果之transition(动画效果属性)

    2022年4月21日
    52
  • Hive数据存储结构「建议收藏」

    Hive数据存储:  Hive没有专门的数据存储格式,也没有为数据建立索引,用户可以自由组织Hive中的表,只需要在创建表的时候告诉Hive数据中的分隔符(列分隔和行分隔),Hive就可以解析数据。  hive的数据都存储在HDFS,我们这地方讲的存储主要只Hive中的数据模型存储。Hive中的数据模型主要由:数据库(Database)、表((table)内部表table、外部

    2022年4月14日
    65
  • 安装全局消息钩子实现dll窗体程序注入

    安装全局消息钩子实现dll窗体程序注入安装全局消息钩子实现 dll 窗体程序注入

    2026年3月26日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号