ucos ii在MC9S12XDP512上的移植

2021-05-23 11:04:44 字數 1142 閱讀 4035

搞了幾天,總算把ucos-ii移植到mc9s12xdp512上了。做個簡短的筆記。

ucos-ii版本:2.52, 編譯器:freescale codewarrior5.9 晶元:mc9s12xdp512

移植步驟:

1.  根據嚮導建立新的工程,晶元選擇mc9s12xdp512,其餘預設配置;

2.  將ucos-ii通用原始檔複製到工程的sources目錄下下:os_core.c,os_dbg.c,os_flag.c,os_mbox.c,os_mem.c,

os+mutex.c,os_q.c,os_sem.c,os_task.c,os_time.c,ucos_ii.h,os_cfg.h並將這些檔案新增到工程中;

3. 建立新檔案,並命名為includes.h,將其新增到工程中,includes.h檔案內容為:

4. 建立新檔案os_cpu.h,並將其新增到工程中,os_cpu.h檔案內容為:

5. 建立新檔案os_cpu_c.c,並新增到工程中,os_cpu_c.c檔案內容較多,主要有以下部分:

1. 以下函式均為空: ostaskcreatehook(),ostaskdelhook(),ostaskswhook(),ostaskidlehook(),

ostaskstathook(),ostimetickhook(),osinithookbegin(),osinithookend(),ostcbinithook(),

2. ostaskstkinit()函式內容: 該函式主要模擬中斷產生時cpu的壓棧過程,根據晶元資料(is12cpuv1.pdf),中斷的壓棧次序為:

sp+7  rtnh:rtnl  (返回位址)

sp+5  y

sp+3  x

sp+1  d(b:a)

sp      ccr

由上,ostaskstkinit()內容為:

3. 由於codewarrior可以內聯彙編,因此將以下4個需要由彙編編寫的函式也放於os_cpu_c.c中:osstarthighrdy(),

osctxsw(), osintctxsw(),ostickisr().注意,這4個函式都應該編寫在非分頁區,4個函式的內容為:

6. 按自己需要修改os_cfg.h配置檔案

7. 在main.c中編寫如下測試**:

整個工程在我的資源裡

MC9S12G時鐘配置

一 enable外部時鐘 使cpmuosc暫存器的osce位置一 二 計算需要的頻率 以24mhz為例 pllclk 24mhz 2 x oscclk 振盪器頻率,即你的外部晶振 x synr 1 refdv 1 三 計算出synr,refdv後 把synr得值賦給cpmusynr的前六位,把ref...

MC9S12 RTI 時鐘的設定

rti,是org時鐘和復位發生模組中的乙個功能,一般用它來3秒後啟動車子。初始化它,需要兩個暫存器 crgint和rtictl。crgint的第8位 rtie是rti的中斷使能位,為1使能。而rtictl的設定,就關係到定時的時間,關鍵就是這點,估計有很多同學不太了解吧。下面來重點說說 它的第8位 ...

mc9s12xdp512的中斷程式設計

中斷在c語言裡面有兩種方式表達 1 interrupt void rti isr void same as pragma trap proc,set the entry number in the prm file這種方式定義了中斷的結構,實際的向量位址在prm檔案中定義 2 void interr...