你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【安富莱STM32F407之uCOS-III教程】第8章μCOS-III系统移植过...

[复制链接]
baiyongbin2009 发布时间:2014-12-20 17:37
阅读主题, 点击返回1楼
收藏 评论15 发布时间:2014-12-20 17:37
15个回答
baiyongbin2009 回答时间:2014-12-20 18:07:38
本帖最后由 baiyongbin2009 于 2014-12-20 18:10 编辑

(续)8.3  源代码移植-IAR
  l os_cpu_c.c文件中如下的代码需要做修改,注释掉红色字体部分
void  OSTaskSwHook (void)
{
#if OS_CFG_TASK_PROFILE_EN > 0u
    CPU_TS  ts;
#endif
#ifdef  CPU_CFG_INT_DIS_MEAS_EN
    CPU_TS  int_dis_time;
#endif


#if (OS_CPU_ARM_FP_EN == DEF_ENABLED)
    if ((OSTCBCurPtr->Opt &OS_OPT_TASK_SAVE_FP) != (OS_OPT)0) {
       OS_CPU_FP_Reg_Push(OSTCBCurPtr->StkPtr);
    }

    if ((OSTCBHighRdyPtr->Opt& OS_OPT_TASK_SAVE_FP) != (OS_OPT)0) {
        OS_CPU_FP_Reg_Pop(OSTCBHighRdyPtr->StkPtr);
    }
#endif   

#if OS_CFG_APP_HOOKS_EN > 0u
    if (OS_AppTaskSwHookPtr !=(OS_APP_HOOK_VOID)0) {
        (*OS_AppTaskSwHookPtr)();
    }
#endif

#if OS_CFG_TASK_PROFILE_EN > 0u
    ts = OS_TS_GET();
    if (OSTCBCurPtr !=OSTCBHighRdyPtr) {
       OSTCBCurPtr->CyclesDelta  = ts- OSTCBCurPtr->CyclesStart;
        OSTCBCurPtr->CyclesTotal+= (OS_CYCLES)OSTCBCurPtr->CyclesDelta;
    }

    OSTCBHighRdyPtr->CyclesStart= ts;
#endif

#ifdef  CPU_CFG_INT_DIS_MEAS_EN
    int_dis_time =CPU_IntDisMeasMaxCurReset();                /* Keep track of per-task interrupt disable time          */
    if(OSTCBCurPtr->IntDisTimeMax < int_dis_time) {
       OSTCBCurPtr->IntDisTimeMax = int_dis_time;
    }
#endif

#if OS_CFG_SCHED_LOCK_TIME_MEAS_EN > 0u
                                                               /* Keep track of per-task scheduler lock time             */
    if(OSTCBCurPtr->SchedLockTimeMax < OSSchedLockTimeMaxCur) {
       OSTCBCurPtr->SchedLockTimeMax = OSSchedLockTimeMaxCur;
    }
    OSSchedLockTimeMaxCur =(CPU_TS)0;                          /*Reset the per-task value                               */
#endif
}

    上面的三处修改后,按照上面MDK添加的思路把IAR的工程建立起来,一定要记得关闭FPU,因为我们讲浮点寄存器的入栈和出栈功能删除了,然后编译,链接,并下载程序到V5开发板上面,可以看到4个LED不断的闪烁。

baiyongbin2009 回答时间:2014-12-20 18:09:35
8.4  总结
    μCOS-III的移植过程并不难,希望初学的同学一定要动手移植一下,过程中出现问题了解决一下,以后新版本升级了,自己就可以动手升级了。







参考资料:
1.       www.micrium.com

OmegaωτTau 回答时间:2015-4-20 16:41:00
楼主威武 向楼主致敬
stary666 回答时间:2015-4-20 16:51:42
致敬,真牛人。。。
baiyongbin2009 回答时间:2015-4-21 10:54:02
stary666 发表于 2015-4-20 16:51
致敬,真牛人。。。

谢谢支持
QianFan 回答时间:2015-4-21 12:16:24
说实话,真的不喜欢ucos-III这些代码,光是创建一个任务也要写很多的参数。更不用说那么多依赖的头文件,源文件了。

还是喜欢FreeRtos多一点,毕竟简洁,功能还算够用。移植相对简单,特别是对新手而言的,不过资料少是短板
12

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版