在线情况
楼主
  • 头像
  • 级别
    • 积分23
    • 经验1506
    • 文章25
    • 注册2010-12-22
    ucos移植到430
    把ucos操作系统移植到430是不是使得程序执行的更有效率?不是的话移植进去干什么用? 能详细说说它的用处吗??
    请大家解答一下~~~~    不胜感激!!!~
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
      • 积分30
      • 经验613
      • 文章57
      • 注册2011-01-31
      不带操作系统的程序,所有的代码、任务都是放在一个大循环下的。这种情况如果你的工程里任务不多,那问题不大。但如果你的项目是多任务,那你在最后组合程序的时候会比较棘手。因为你在单独调试每一个模块的时候,模块程序之间是相互独立的死循环。但最后你要把所有单独的模块任务整合到一个大循环下,这时会出现各种各样的问题。有时甚至程序结构都要调整。这个弊端任务越多越明显。

      但uCOS可以直接实现死循环和死循环之间的调用(通过设置各个任务的优先级与挂起时间)。这样一来,应对多任务的工程时会有以下好处:1、将多任务明确地模块化,使工程代码更规整,阅读与调试起来更方便,多任务代码的最后整合非常简单;2、使整个系统更稳定。(普通的程序,如果在哪一个任务那里陷入死循环或者跑飞,就会一直卡在那里,没法往下运行了。但uCOS不会,一个任务出现问题不会影响其他任务的进行。因为如果哪个任务死循环了,时间一到你反正要OUT,让其他进程运行的。)

      但记住,任何操作系统都是牺牲效率来换取其他方面的便利的。所以单任务或者任务较少时,不推荐用操作系统。只有在多任务实时调度时,uCOS才能发挥出它的优势
      微控网感谢您的参与
      在线情况
      3
      • 头像
      • 级别
        • 积分23
        • 经验1506
        • 文章25
        • 注册2010-12-22
        解释的很清楚~~非常感谢!!!
        微控网感谢您的参与
        在线情况
        4
        • 头像
        • 级别
        • 门派
        • 职务总版主
        • 声望+9
        • 财富5
        • 积分3065
        • 经验390701
        • 文章6744
        • 注册2006-03-07
        北夜星辰给出来的比喻真好;不错不错...
        是否可以提供一个简单的演示例子?
        [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
        在线情况
        5
        • 头像
        • 级别
          • 积分30
          • 经验613
          • 文章57
          • 注册2011-01-31

          #include "includes.h"

          #define  TASK_STK_SIZE                  128       // 定义任务堆栈大小    
           
          OS_STK   TaskStartStk[TASK_STK_SIZE];
          OS_STK   Task1Stk[TASK_STK_SIZE];

          void   TaskStart(void *data);                    //前导声明任务(函数)
          void   Task1(void *data);                        // 任务 1

          void  main (void)
          {  
              WDTCTL = WDTPW + WDTHOLD;                              //禁止看门狗
           
              OSInit();                                              //初始化uCOS-II
              OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
              OSTaskCreate(Task1, (void *)0, &Task1Stk[TASK_STK_SIZE - 1], 3);
             
               
              OSStart();                                             //开始任务调度  
          }


          void  TaskStart (void *pdata)
          {
              pdata  = pdata;                                        // 无任何意义,防止编译器报警

              WDTCTL = WDT_MDLY_32;                                  //设置时钟节拍间隔为32ms    
              IE1   |= 0x01;                                         //开看门狗定时器中断        
              //_DINT();
              /*************************************
              *       应用程序初始化
              *************************************/
             for(;;)
             {    
                P3DIR=BIT0;
                P3OUT=BIT0;
                OSTimeDly(50);  
              }
          }

          void   Task1(void *pdata)                       
          {
              pdata  = pdata;                                        //防止编译器报警
              for(;;)
              {
                P3DIR=BIT1;
                P3OUT=BIT1;
                OSTimeDly(100);  
              }
          }

          微控网感谢您的参与
          在线情况
          6
          • 头像
          • 级别
            • 积分30
            • 经验613
            • 文章57
            • 注册2011-01-31
            这是我在ucos的main文件中写的一个简单实例的代码,就是完成两个LED交替发光。
            微控网感谢您的参与
            在线情况
            7
            • 头像
            • 级别
            • 门派
            • 职务总版主
            • 声望+9
            • 财富5
            • 积分3065
            • 经验390701
            • 文章6744
            • 注册2006-03-07
            北夜星辰 哥们,你这个例子在那个器件上跑的?
            我想在5438上跑跑试试你这例子是否完全可用...
            [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
            在线情况
            8
            • 头像
            • 级别
              • 积分30
              • 经验613
              • 文章57
              • 注册2011-01-31
              msp430f149,这段代码是IAR下的。说实话,处理器不同肯定不能直接照搬的,但是main文件都是一样的,区别在需要移植的那几个文件里。
              微控网感谢您的参与
              在线情况
              9
              • 头像
              • 级别
              • 门派
              • 职务总版主
              • 声望+9
              • 财富5
              • 积分3065
              • 经验390701
              • 文章6744
              • 注册2006-03-07
              哥们,能否给我一个ucos例子的整个工程文件?
              我想试试....。
              dc[A]microcontrol.cn
              谢谢!
              [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
              在线情况
              10
              • 头像
              • 级别
                • 积分2
                • 经验133
                • 文章2
                • 注册2011-07-14
                顶星辰,学习了
                微控网感谢您的参与
                在线情况
                11
                • 头像
                • 级别
                • 门派
                • 职务总版主
                • 声望+9
                • 财富5
                • 积分3065
                • 经验390701
                • 文章6744
                • 注册2006-03-07
                [P]你的例子收到了[EM06][/P][P]我有空看看... 谢谢了[EM14][/P]
                [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
                Powered by LeadBBS 9.2 .
                Page created in 0.1719 seconds with 5 queries.