返回> 网站首页
基于STM32F207ZGT6移植UCOS2(版本2.93.01)方法
yoours2021-06-19 10:52:25
简介一边听听音乐,一边写写文章。
1. 使用 STM32CubeMX 创建STM32基础工程
2. 下载ucos2源代码
https://github.com/weston-embedded/uC-OS2/archive/refs/tags/v2.93.01.zip
3. 移植ucos源文件
将图1中文件拷贝至工程文件夹中
4. 移植cpu相关文件
根据 ARM架构 http://soskp.com/blogdetail/2908 可知cpu文件路径为:uC-OS2-2.93.01\Ports\ARM-Cortex-M\ARMv7-M
拷贝os_cpu_c.c、KEIL开发工具对应的ARM文件夹下的文件
修改os_cpu.h: 进入临界状态时,屏蔽抢占优先级的号码大于等于设置值
根据:STM32优先级、分组、子优先级 http://soskp.com/blogdetail/2909
STM32特殊功能寄存器PRIMASK、FAULTMASK、BASEPRI http://soskp.com/blogdetail/2910
这里设置为:
#define CPU_CFG_KA_IPL_BOUNDARY 4
#define CPU_CFG_NVIC_PRIO_BITS 4
5. 配置信息修改模板文件
app_cfg.h、os_cfg.h
修改os_cfg.h文件:
#define OS_APP_HOOKS_EN 0u
#define OS_ARG_CHK_EN 0u
#define OS_MAX_EVENTS 20u
#define OS_TICKS_PER_SEC 1000u
#define OS_MEM_EN 0u
#define OS_TMR_EN 0u
6. 修改SysTick_Handler系统滴答中断
void SysTick_Handler(void)
{
OS_CPU_SR cpu_sr;
OS_ENTER_CRITICAL();
OSIntNesting++;
OS_EXIT_CRITICAL();
OSTimeTick();
OSIntExit();
}
7. 修改PendSV_Handler任务切换中断
void PendSV_Handler()
{
OS_CPU_PendSVHandler();
}
8. 准备运行
修改tick中断配置、添加启动和创建任务
略
至此ucos移植完成,多任务能正常切换,其他功能暂未测试。