UCOSIII系統移植到STM32F7中
1.準備好UCOSIII的原始碼,可從官網下載。
2.在工程裡建立資料夾UCOSIII等資料夾,並新增檔案。
3.在MDK中建立路徑並新增檔案。
4.修改相關檔案
a.
bsp.c和bsp.h:這兩個為系統外設的初始化檔案,其實可以不用。
b.
os_cpu_a.asm彙編檔案:
函式型別 PUBLIC改為 EXPORT
PUBLIC OS_CPU_FP_Reg_Push 和 PUBLIC OS_CPU_FP_Reg_Pop兩個函式可以不用,可以註釋掉。
程式碼導引區中的
RSEG CODE:CODE:NOROOT(2) ;THUMB
修改為
AREA |.text|, CODE, READONLY, ALIGN=2 THUMB REQUIRE8 PRESERVE8
這個格式跟下面的組合語言格式相對應,並且函式名後面的冒號要去掉。
c.
lib_mem_a.asm彙編檔案:
和上面一樣
d.
cpu.h:
註釋掉不存在的標頭檔案;修改
#define CPU_INT_DIS() do { cpu_sr =CPU_SR_Save(); } while (0) #define CPU_INT_EN() do { CPU_SR_Restore(cpu_sr); } while (0)
以及
#define CPU_MB() _dsb(0xF)//__DSB() #define CPU_RMB() _dsb(0xF)//__DSB() #define CPU_WMB() _dsb(0xF)//__DSB()
e.
cpu_cfg.h:
#if 1 #define CPU_CFG_INT_DIS_MEAS_EN 改為 #if 0 #endif
f.
os_cpu.h:修改
#define OS_TASK_SW_SYNC() __isb(0xF)
os_cfg.h:可以根據需要進行相應使能
g.在 上他們27xx_it.c檔案中,進行滴答定時器中中斷函式的配置,並保證工程中OS_CPU_PendSVHandler 和OS_CPU_SysTickHandler各處名稱的一致。
void SysTick_Handler(void)
{
CPU_SR_ALLOC();
CPU_CRITICAL_ENTER();
OSIntNestingCtr++;
CPU_CRITICAL_EXIT();
OSTimeTick();
HAL_IncTick();
OSIntExit();
}