uCos-III
STM32F10x
uCos-III
STM32F10x
uCos-III 移植到 STM32F10x
uCos-III
STM32F10x
最近在百度上看了 uCOS-III 的介绍后,诸多功能有很大的提升和改进,感觉有必要升级一下开发环境。百
度介绍:http://baike.baidu.com/view/8531313.htm
环境:
1
2
3
STM32F10x 3.5固件库。
MDK4.23 编译器
uCos-III v3.03
1. uCos-III 源文件 KRN-K3XX-000000.zip
官网 http://micrium.com/page/downloads/source_code
我的网盘:http://115.com/file/anr4r6a8#
2.uCos-III 官网 移植程序
Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIO.zip
官网 http://micrium.com/download/Micrium-Book-uCOS-III-STM32F107.exe
网盘 http://115.com/file/dpuyusej#
一、第一步新建工程(在上一篇文章中有详解)
二、新建文件夹 uCOS_III。在此文件下新建四个文件夹 uC-CPU,uC-LIB, uCOS-III。
1.uCOS-III 下新建三个文件 Source, Ports, Cfg
复制 KRN-K3XX-000000\Micrium\Software\uCOS-III\Source 下所有文件到 Source;
复制 KRN-K3XX-000000\Micrium\Software\uCOS-III\Cfg\Template 下所有文件到 Cfg;
复制
Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIO\Micrium\Software\uCOS-III\Ports\ARM-Cortex
-M3\Generic\RealVie 下所有文件到 Ports。
2. uC-LIB 下新建三个文件 Source, Ports, Cfg
复制 Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIO\Micrium\Software\uC-LIB 文本文件到
Source
复制 Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIO\Micrium\Software\uC-LIB\Cfg\Template 下
lib_cfg.h 到 Cfg
复制
Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIO\Micrium\Software\uC-LIB\Ports\ARM-Cortex-M
3\RealView 下 lib_mem_a.asm 到 Ports
3. uC-CPU 下新建三个文件 Source, Ports,Cfg
复制 Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIO\Micrium\Software\uC-CPU 下三个文本文件到
Source
复制
Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIO\Micrium\Software\uC-CPU\ARM-Cortex-M3\GN
U 下三个文件到 Ports
复制
Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIO\Micrium\Software\EvalBoards\Micrium\uC-Eva
l-STM32F107\Atollic\uCOS-III\APP 下 cpu_cfg.h 到 Cfg
4.复制
Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIO\Micrium\Software\EvalBoards\Micrium\uC-Eva
l-STM32F107\Atollic\uCOS-III\APP 下 app_cfg.h 到 Main 中。
好了, 到这里工程文件以复制完了。
1.把工程引用文件路径指定 参图:
2.添加工程文件:
Main.c, Kernel.c,Kernel.h,Config.c,Config.h 代码如下提供。
Main.c
Kernel.c
Kernel.h
Config.c
Config.h
app_cfg.h 追加代码 后如下:
app_cfg.h
下面对 Project\App\uCOS_III\uC-CPU\Ports 下 cpu_a.s 进行修改, 因为这是 GNU 的汇编代码。
如下替换:
‘@’ 换为‘;’
.global 换为 EXPORT
以下代码
.text
.align 2
.thumb
.syntax unified
换为
PRESERVE8
AREA
|.text|, CODE, READONLY
THUMB
把函数名上的.thumb_func 在前后添加 ‘;’注释掉;
并把函数 名后紧跟的‘:’删除。
修改后如下:
cpu_a.s
修改 os_cfg.h
OS_CFG_TS_EN 宏定义改为0u
OS_CFG_SCHED_LOCK_TIME_MEAS_EN 宏定义改为0u
OS_CFG_TASK_DEL_EN 宏定义改为 1u
其它可根据自己的功能需要 先1u 或 ou。
这里 Project\App\uCOS_III\uC-LIB\Source 中 lib_str.c 的 Str_FmtNbr_Int32 函数 的函数体内局部变量没有赋
初值,不够严谨 这里赋初值如下:
CPU_CHAR
CPU_DATA
CPU_INT32U
CPU_INT32U
CPU_INT08U
*pstr_fmt = (CPU_CHAR *)0;
i = 0u;
nbr_fmt = 0u;
nbr_log = 0u;
nbr_dig_max = 0u;
CPU_INT08U
CPU_INT08U
CPU_INT08U
CPU_INT08U
CPU_INT08U
CPU_INT08U
CPU_INT08U
CPU_BOOLEAN
CPU_BOOLEAN
CPU_BOOLEAN
CPU_BOOLEAN
CPU_BOOLEAN
nbr_dig_min = 0u;
nbr_dig_fmtd = 0u;
nbr_neg_sign = 0u;
nbr_lead_char = 0u;
dig_val = 0u;
lead_char_delta_0 = 0u;
lead_char_delta_a = 0u;
lead_char_dig = 0u;
lead_char_0 = 0u;
fmt_invalid = 0u;
print_char = 0u;
nbr_neg_fmtd = 0u;
最后修改启动文件 startup_stm32f10x_hd.s ,加载不同的启动文件 时不用怕,修改的内容都是一样的:
OS_CPU_PendSVHandler 替换所有的 PendSV_Handler
OS_CPU_SysTickHandler 替换所有的 SysTick_Handler
使中断执行 uCos 的中断函数。
到这里就全部 OK 了。
仿真查看端口变化
编程结果过于臃肿:
开启3级优化: