天天看點

uCos-III移植到STM32F10x

最近在百度上看了uCOS-III 的介紹後,諸多功能有很大的提升和改進,感覺有必要更新一下開發環境。百度介紹:http://baike.baidu.com/view/8531313.htm

環境:

STM32F10x 3.5固件庫。

MDK4.23 編譯器

uCos-III v3.03

         1. uCos-III 源檔案KRN-K3XX-000000.zip

2.uCos-III 官網 移植程式

         Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIO.zip

一、第一步建立工程(在上一篇文章中有詳解)

二、建立檔案夾uCOS_III。在此檔案下建立四個檔案夾uC-CPU,uC-LIB, uCOS-III。

uCos-III移植到STM32F10x

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-M3\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\GNU下三個檔案到 Ports

複制Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIO\Micrium\Software\EvalBoards\Micrium\uC-Eval-STM32F107\Atollic\uCOS-III\APP下cpu_cfg.h 到Cfg

4.複制Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIO\Micrium\Software\EvalBoards\Micrium\uC-Eval-STM32F107\Atollic\uCOS-III\APP下app_cfg.h 到Main中。

好了, 到這裡工程檔案以複制完了。

1.把工程引用檔案路徑指定 參圖:

uCos-III移植到STM32F10x

2.添加工程檔案:

uCos-III移植到STM32F10x
uCos-III移植到STM32F10x
uCos-III移植到STM32F10x
uCos-III移植到STM32F10x
uCos-III移植到STM32F10x

Main.c, Kernel.c,Kernel.h,Config.c,Config.h代碼如下提供。

uCos-III移植到STM32F10x

Main.c

uCos-III移植到STM32F10x

Kernel.c

uCos-III移植到STM32F10x

Kernel.h

uCos-III移植到STM32F10x

Config.c

uCos-III移植到STM32F10x

Config.h

app_cfg.h 追加代碼 後如下:

uCos-III移植到STM32F10x

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  在前後添加 ‘;’注釋掉;

并把函數 名後緊跟的‘:’删除。

修改後如下:

uCos-III移植到STM32F10x

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 函數 的函數體内局部變量沒有賦初值,不夠嚴謹 這裡賦初值如下:

uCos-III移植到STM32F10x
uCos-III移植到STM32F10x

最後修改啟動檔案startup_stm32f10x_hd.s ,加載不同的啟動檔案 時不用怕,修改的内容都是一樣的:

OS_CPU_PendSVHandler 替換所有的PendSV_Handler

OS_CPU_SysTickHandler替換所有的SysTick_Handler

使中斷執行uCos的中斷函數。

到這裡就全部OK了。

仿真檢視端口變化

uCos-III移植到STM32F10x
uCos-III移植到STM32F10x

程式設計結果過于臃腫:

uCos-III移植到STM32F10x

開啟3級優化:

uCos-III移植到STM32F10x

再編譯看結果:

uCos-III移植到STM32F10x

希望以上資料對大家有所幫助。

繼續閱讀