一:缺少 app_cfg.h os_cfg.h
app_cfg.h 是用户应用程序的一些定义,链接等,新建一个空文件即可
os_cfg 是uCOS的配置文件 将Source文件夹中的os_cfg_r.h改名,然后根据自已的情况修改
二: OS_TASK_TMR_PRIO 未定义
从官方PDF中得知,从UCOS 2.81中引入了 timer manager的这么个东东.根据其说明,应该是可以创建一个定时任务,可以进行任务回调的功能.而OS_TASK_TMR_PRIO就是定义timer manager任务的优先级.
我们可以在app_cfg.h中将其定义,,优先级现在就任意吧.当然也可以使用绝招,在os_cfg.h中将OS_TMR_EN禁用.当然这是在不使用timer manager功能的前提下.
三:发现一堆app_***Hook的函数未定义
据网上的人们说,这是一个调用一些钩子程序,拿来调试应用程序用的,我们直接在os_cfg.h中将OS_APP_HOOKS_EN设为0,禁用掉.其功能以后研究
四:OS_CPU_SysTickClkFreq 未定义
根据文档,在os_cpu_c.c中会调用OS_CPU_SysTickInit初始化SysTick,在这个函数中还会调用OS_CPU_SysTickClkFreq取得当前CPU频率.
这样,根据国际惯例,在bsp中实现这个函数即可.之后就能够通过编译了.u32 OS_CPU_SysTickInit(void);
五:将OS_CPU_PendSVHandler与OS_CPU_SysTickHandler添加到启动文件的向量表中,原因大家都懂的
最后就是建立自已的任务了,要注意的是,所有系统的初始化放到第一个任务中进行,初始化完成后可以删除任务或是进行其他操作,主要的初始化对象为systick时钟,
注意不能偷懒,只能修改启动文件,而不能修改stm32xxx_it.c进行转跳.
IMPORT OS_CPU_PendSVHandler
IMPORT OS_CPU_SysTickHandler
DCD OS_CPU_PendSVHandler
DCD OS_CPU_SysTickHandler
最后:在合适位置(OSStart(); 之前) 运行 OS_CPU_SysTickInit();
这样,UCOS就算成功移置