• usoc学习-task2


    这个函数主要演示了task的删除,以及优先级的切换。

    可以看到优先级高的task1先运行。优先级切换后,task2的优先级高了,运行顺序反了。

    然后task1发起task2的删除。task2调用了删除函数后,会马上停止。task剩余的代码也得不到执行。

    #include "sys.h"
    #include "delay.h"
    #include "usart.h"
    #include "led.h"
    #include "includes.h"
    
    void task1(void *pdata);
    #define TASK1_PRIO                  10
    #define TASK1_STK_SIZE 64
    
    void task2(void *pdata);
    #define TASK2_PRIO                  11
    #define TASK2_STK_SIZE 64
    
    OS_STK TASK1[TASK1_STK_SIZE];
    OS_STK TASK2[TASK2_STK_SIZE];
    
    
    int main(void)
    {
        delay_init(168);          //³õʼ»¯ÑÓʱº¯Êý
        LED_Init();                //³õʼ»¯LED¶Ë¿Ú 
        uart_init(115200);
        OSInit();
        OSTaskCreate(task1,(void *)0,(OS_STK *)&TASK1[TASK1_STK_SIZE-1],TASK1_PRIO);
        OSTaskCreate(task2,(void *)0,(OS_STK *)&TASK2[TASK2_STK_SIZE-1],TASK2_PRIO);
        delay_ms(10000);
        printf("os start
    ");
        OSStart();
        
        //OSTaskChangePrio(11,9);
    }
    
    void task1(void *pdata)
    { OS_CPU_SR cpu_sr=0;
        int a=0;
        while(1)
        {  
            printf("task1,a is %d
    ",a);
            delay_ms(300);
             a++;
            if(a==5)
            {
                OSTaskChangePrio(10,12);
                printf("change prio,now task2 comes first
    ");
            }
            if(a==10)
            {
                while(OSTaskDelReq(11)!= OS_ERR_TASK_NOT_EXIST) \等待task2被删除,直到他不存在
                {delay_ms(1);
                }
                
            }
     
            
            
        }
    }
    
    
    
    
    void task2(void *pdata)
    { OS_CPU_SR cpu_sr=0;
        int b=0;
        while(1)
        {
            printf("task2, b is %d
    ",b);
            delay_ms(300);
            b++;
        if(OSTaskDelReq(OS_PRIO_SELF)==OS_ERR_TASK_DEL_REQ)
            {
                OSTaskDel(OS_PRIO_SELF);
                printf("task2 is deleted
    ");
            }
            
        }
    }
  • 相关阅读:
    perl glob 循环 注意事项
    Alacarte——gnome3的菜单编辑器
    arch更新pacman到4.0注意事项
    top命令中的排序
    兰州大学分子生态研究所——实验室主页
    解决gdm鼠标主题丑陋的方法
    小小输入法的安装
    linux下的双显卡切换
    使用jQuery AJax 与 asp.net ashx 结合使用
    sql语句控制时间的显示格式语句
  • 原文地址:https://www.cnblogs.com/nasduc/p/5061138.html
Copyright © 2020-2023  润新知