zoukankan      html  css  js  c++  java
  • FreeRTOS优先级翻转

    举例

    //高优先级任务的任务函数
    void high_task(void *pvParameters)
    {   
        while(1)
        {
            vTaskDelay(500);    //延时500ms,也就是500个时钟节拍   
            printf("high task Pend Sem
    ");
            xSemaphoreTake(BinarySemaphore,portMAX_DELAY);  //获取二值信号量
            printf("high task Running!
    ");
            xSemaphoreGive(BinarySemaphore);                //释放信号量
            vTaskDelay(500);    //延时500ms,也就是500个时钟节拍  
        }
    }
    
    //中等优先级任务的任务函数
    void middle_task(void *pvParameters)
    {
        while(1)
        {
            printf("middle task Running!
    ");
            vTaskDelay(1000);   //延时1s,也就是1000个时钟节拍 
        }
    }
    
    //低优先级任务的任务函数
    void low_task(void *pvParameters)
    {
        static u32 times;
    
        while(1)
        {
            xSemaphoreTake(BinarySemaphore,portMAX_DELAY);  //获取二值信号量
            printf("low task Running!
    ");
            for(times=0;times<5000000;times++)              //模拟低优先级任务占用二值信号量
            {
                taskYIELD();                                //发起任务调度
            }
            xSemaphoreGive(BinarySemaphore);                //释放二值信号量
            vTaskDelay(1000);   //延时1s,也就是1000个时钟节拍 
        }
    }

    实验现象
    1

    解决办法:http://blog.csdn.net/zhangxuechao_/article/details/79399785

  • 相关阅读:
    冲刺1
    第九周
    课堂作业
    团队项目典型用户与用户场景分析
    第八周
    梦断代码阅读笔记03
    tab页的使用方法
    校园服务nabcd需求分析
    第七周
    mysql下载以及安装
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709473.html
Copyright © 2011-2022 走看看