zoukankan      html  css  js  c++  java
  • uCos 没有延时Tick滴答定时器测试

    原来学uCos只是表面,今天才发现uCos没有心跳也是可以活的,只是延时功能。 即:OSTimeDly、OSTimexxx 头的功能不能使用。

    如果有是用OSTimexxx,任务将会卡死。其实,OSTimeDly 功能就是延时指定时间再唤醒任务。延时过程中任务是挂起状态,时间

    到后,等待高任务运行完后在运行。下面测试不开cpu硬件定时器情况下的程序:

    //Task0由 MainTask建立,优先级为2

    void Task0 (void *pArg)
    {
       pArg = pArg;
       while(1)
       {
        GPIOB->ODR &= ~GPIO_Pin_14;
        OSTaskSuspend(2);   //Task0挂起
       }
    }

    //Task0由 Main()建立,优先级为3
    void MainTask (void *pArg)
    {
       pArg = pArg;

       // OS_CPU_SysTickInit();
       OSSetupTask(Task0, 2);

       while(1)
       {
       GPIOB->ODR &= ~GPIO_Pin_14;
       OSTaskResume(2);  //唤醒Task0
        }
    }

    用户程序一共两个任务,Task0 优先于MainTask,Task0运行完后挂起让出CPU,MainTask接运行,

    完后唤醒Task0,Task0运行完后挂起让出CPU,如此循环调度。

    这说明在没有硬件定时器支持情况下,且不用OSTime功能,uCos也是能运行的。

  • 相关阅读:
    算法导论
    深度探索C++对象模型
    git 介绍及其使用总结
    前端跨域常见的几种方式
    前端面试angular 常问问题总结
    低版本浏览器支持HTML5标签的方法
    理解 angular 的路由功能
    Angular 新手容易碰到的坑
    Angular 新手容易碰到的坑
    一 Unicode和UTF-8的异同
  • 原文地址:https://www.cnblogs.com/worldsing/p/3396364.html
Copyright © 2011-2022 走看看