免费制作个人简历的网站公司网站建设设计公司哪家好
前言
- 上一篇已经 通过 
STM32CubeMX搭建了NUCLEO-L476RGSTM32L476RG 的 裸机工程,并且下载了uC-OS2 V2.93的源码,接下来,开始系统移植 
开发环境
-  
win10 64位
 -  
Keil uVision5,MDK V5.36
 -  
uC-OS2 V2.93
 -  
开发板:NUCLEO-L476RG ,MCU 为
STM32L476RG -  
STM32CubeMX 6.9.1,用于生成 STM32的裸机工程
 
uC-OS2 目录裁剪
- 首先把 通过 Git 克隆的 uC-OS2 整个目录复制到 STM32 的工程下
 

-  
开始裁剪 uC-OS2 的代码,首先移除 其他平台的 Port 文件,只留下
uC-OS2\Ports\ARM-Cortex-M\ARMv7-M -  
如果包含 uC-OS2 下 包含
.git目录,也可以移除掉,当然也可以考虑 Git submodule 的管理 

- 移除不使用的 
TLS与Trace,则 uC-OS2 的代码目录如下: 

添加 uC-OS2 到 Keil MDK5 工程
-  
当前使用 Keil MDK5 工程管理,添加
uC-OS2PortCfg三个目录,分别对于uC-OS2目录下的三个目录,然后添加源文件,代码清单如下: -  
注意不需要添加
ucos_ii.c,否则会引起编译重定义,查看这个文件,发现里面直接包含了 C 的源文件 -  
注意不添加
os_dbg_r.c,否则会跟 Port 下的os_dgb.c重定义 

配置头文件的路径
-  
添加一下的路径到 Keil MDK5 工程
 -  
..\uC-OS2\Source -  
..\uC-OS2\Ports\ARM-Cortex-M\ARMv7-M\ARM -  
..\uC-OS2\Cfg\Template 

解决编译问题
-  
直接编译,发现有两个宏需要定义:
CPU_CFG_KA_IPL_BOUNDARY与CPU_CFG_NVIC_PRIO_BITS, -  
修改
uC-OS2\Cfg\Template\app_cfg.h,新增这两个【宏定义】,如下 
#ifndef CPU_CFG_KA_IPL_BOUNDARY
#define CPU_CFG_KA_IPL_BOUNDARY             4u
#endif#ifndef CPU_CFG_NVIC_PRIO_BITS
#define CPU_CFG_NVIC_PRIO_BITS              4u
#endif
 

- 经过以上的操作, uC-OS2 V2.93 在 STM32L476 上基本移植完成,接下来,可以创建几个任务,用于验证 uC-OS2 是否正常运行
 
小结
-  
本篇注意记录 uC-OS2 V2.93 基于 Keil MDK5 ,移植到 STM32L476 平台上的操作,主要是工程的搭建,代码添加到工程
 -  
由于有了 Keil MDK5 的裸机工程,添加 uC-OS2 会比较的顺利,添加源文件,配置 uC-OS2 的头文件路径,定义所需的两个【宏定义】,就可以正常的编译通过
 -  
接下来编写 用户的任务,让 uC-OS2 运行起来,并使用 【Debug】工程,调试 uC-OS2 ,熟悉 uC-OS2 的启动流程、任务切换、各个模块的工作流程
 
