移植UCOSII注意的問題

2022-09-11 09:57:16 字數 2330 閱讀 7200

移植ucosii其實並不難,現在網上的資料又那麼多。但是要弄懂要花上不少時間。現在來說說移植需要注意的幾個問題吧。

**參考文件 <>**

>pendsv:主要應用於系統任務切換 nvic:負責晶元的中斷管理

##準備

micrium\software\ucos-ii可以參考我上篇的建立工程,在上篇的工程結構基礎上我新建了乙個ucosii資料夾。該資料夾下又分為三個子資料夾。source,port,config

儲存ucosii原始碼的資料夾。micrium\software\ucos-ii目錄下的檔案都copy到這裡來。各檔案的功能不介紹,光名字就比較直觀。

把 micrium\software\ucos-ii\ports\arm-cortex-m3\generic\realview下的檔案拷貝至該檔案下。這個資料夾下的檔案後面基本上都要修改

***usocii-config

micrium\software\evalboards\st\stm3210b-eval\rvmdk\os-probe\os_cfg.h拷貝到該檔案下。

這裡兩個函式乙個是tick中斷處理,因為ucosii沒有時間片選,只能通過中斷來實現任務管理,在os_cpu_c.c中定義,注意下函式名需要與圖中設定的一樣。還有os_cpu_pendsvhandler,這是任務切換管理函式。在os_cpu_a.asm中定義,一定要注意名字要一樣哦。另外注意如果參考的是<>,他用的是 stm32f10x_it.c 裡面的systick_handler(),所以沒有替換startup_stm32fl0x_md的systick_handler為os_cpu_systick_handler。

看下下圖是否有,沒有也需要加上

這裡你可以控制不需要的功能,比如debug功能,自定義的鉤子

至此已經全部移植完畢,可以新建的main檔案然後編譯測試了。

main.c

#include "stm32f10x.h"

#include "stm32f10x_conf.h"

#include "ucos_ii.h"

#define task_stk_size 64 //定義堆疊長度

os_stk led0_task_stk[task_stk_size];

os_stk led1_task_stk[task_stk_size]; /*定義兩個任務的堆疊陣列*/

#define on 0

#define off 1

#define led0(a) if (a) \

gpio_setbits(gpioa,gpio_pin_0);\

else \

gpio_resetbits(gpioa,gpio_pin_0)

#define led1(a) if (a) \

gpio_setbits(gpioa,gpio_pin_1);\

else \

gpio_resetbits(gpioa,gpio_pin_1) /*巨集定義兩個選擇函式*/

void gpio_configuration(void) //配置i/o口

void bsp_init(void) //硬體配置

void systick_init(void) /* systick_init 配置systick定時器 */

void task_led0(void *p_arg)

}void task_led1(void *p_arg)

}int main(void)

參考文件:

UCOSII移植問題 IAR

一 sprintf浮點數問題 最近遇到了乙個問題,就是ucosii中浮點數呼叫printf顯示不正常,但是裸機上對浮點數支援正常,以下是詳細情況。pragma data alignment 在ucos中呼叫printf除錯浮點數的時候,在記憶體中表示正確,但是列印資料就都為0.00,其他整形資料表示...

uCOS II 移植及遇到的問題

一 ucos 移植主要有三步 1.修改檔案 os cpu c.c ostasktkinit 函式是針對cpu壓棧的函式,需要模仿cpu初始化後的暫存器狀況。2.修改檔案os cpu.h 3.修改檔案os cpu a.asm 二 ucos移植中遇到的問題 1.任務不能進行有效切換 原因 以前任務只要t...

Ucos II 的移植之一

ucos ii 的移植之一要使 c os 正常執行,處理器必須滿足以下要求 1.處理器的c編譯器能產生可重入 2.用c語言就可以開啟和關閉中斷。3.處理器支援中斷,並且能產生定時中斷 通常在10至 100hz之間 4.處理器支援能夠容納一定量資料 可能是幾千位元組 的硬體堆疊 5.處理器有將堆疊指標...