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();
}