返回> 网站首页 

基于STM32F207ZGT6移植UCOS2(版本2.93.01)方法

yoours2021-06-19 10:52:25 阅读 2665

简介一边听听音乐,一边写写文章。

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移植完成,多任务能正常切换,其他功能暂未测试。


微信小程序扫码登陆

文章评论

2665人参与,0条评论