久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2218|回復: 4
收起左側

用了ucosII,但是三個任務只有LIGHT_TASK_PRIO 這個在運行,是怎么回事

[復制鏈接]
ID:803579 發表于 2020-8-12 13:24 | 顯示全部樓層 |閱讀模式
用了ucosII,但是三個任務只有LIGHT_TASK_PRIO     這個在運行,是怎么回事



#include "led.h"
#include "beep.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"         
#include "includes.h"         
#include "adc.h"
#include "LIGHT.h"


unsigned char LIG1[10]="LIG1";
unsigned char lig1,lig2,lig3,u=0;

#define START_TASK_PRIO                              10

#define START_STK_SIZE                                  64
   
OS_STK START_TASK_STK[START_STK_SIZE];

void start_task(void *pdata);        
                           
#define LM_TASK_PRIO                               8

#define LM_STK_SIZE                                      64
   
OS_STK LM_TASK_STK[LM_STK_SIZE];

void LM_task(void *pdata);


#define BEEP_TASK_PRIO                               7

#define BEEP_STK_SIZE                                          64
      
OS_STK BEEP_TASK_STK[BEEP_STK_SIZE];

void beep_task(void *pdata);


#define LIGHT_TASK_PRIO                               6

#define LIGHT_STK_SIZE                                          64
      
OS_STK LIGHT_TASK_STK[LIGHT_STK_SIZE];

void LIGHT_task(void *pdata);
                        
int main(void)
{         


        delay_init();         
        NVIC_Configuration();  
//        uart_init(9600);
         BEEP_Init();   
         initLCDM();
        light_gpio();
        Adc_Init();
//        LED_Init();   
         LM_Cler();
//        KEY_Init();   
        OSInit();                                       
         OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );
        OSStart();        
         
}


void start_task(void *pdata)
{
    OS_CPU_SR cpu_sr=0;
        pdata = pdata;                                                              
        OSStatInit();                  
         OS_ENTER_CRITICAL();  
        
        OSTaskCreate(LM_task,(void *)0,(OS_STK*)&LM_TASK_STK[LM_STK_SIZE-1],LM_TASK_PRIO);                                                                                       
         OSTaskCreate(beep_task,(void *)0,(OS_STK*)&BEEP_TASK_STK[BEEP_STK_SIZE-1],BEEP_TASK_PRIO);                                                                              
         OSTaskCreate(LIGHT_task,(void *)0,(OS_STK*)&LIGHT_TASK_STK[LIGHT_STK_SIZE-1],LIGHT_TASK_PRIO);        
                                   
         OSTaskSuspend(START_TASK_PRIO);
        OS_EXIT_CRITICAL();   
}         

void LM_task(void *pdata)
{
//extern unsigned char lig3;  
//        unsigned char uu[]={0};
                LM_Cler();
        while(1)
        {  
//                sprintf((char*)uu,"%x",lig3);
//                LM_ShowString(0,0,uu);
                delay_ms(1000);
                LM_Cler();
//                delay_ms(1000);
        }                                                                        
}           

  
void beep_task(void *pdata)
{
        while(1)
        {
                 BEEP=1;
                 delay_ms(200);
                 BEEP=0;
                 delay_ms(940);
        }                                                                        
}


void LIGHT_task(void *pdata)
{

        unsigned int xms=1;
//        unsigned char u=0;
        while(1)
        {
        if(LIGHT_G1==0||LIGHT_G2==0)
        {
                        LIGHT_LNF=0;
                        if(LIGHT_G1==0&&LIGHT_G2==1)
                                {
                                        if(LIGHT_L1>flag_adc)
                                                {
                                                        delay_ms(xms);
                                                        if(LIGHT_L1>flag_adc)
                                                                {
                                                                        lig1=1;
                                                                }
                                                }
                                        if(LIGHT_L1<flag_adc&&u==0)
                                                {
                                                        delay_ms(xms);
                                                        if(LIGHT_L1<flag_adc)
                                                                {
                                                                        lig1=0;
                                                                        u=1;
                                                                }        
                                                }
                                }
                                if(LIGHT_G1==0&&LIGHT_G2==0)
                                        {
                                                if(LIGHT_L1>flag_adc)
                                                        {
                                                                delay_ms(xms);
                                                                if(LIGHT_L1>flag_adc)
                                                                        {
                                                                                        lig1++;
                                                                        }
                                                        }
                                                if(LIGHT_L1<flag_adc)
                                                        {
                                                                delay_ms(xms);
                                                                if(LIGHT_L1<flag_adc&&u==1)
                                                                        {
                                                                                        lig1<<=1;
                                                                                        u=2;
                                                                        }
                                                        }
                                        }
                                if(LIGHT_G2==0&&LIGHT_G1==1)//Åöμ½μúèy¸ö¸Dó|μ㣬¶áμúèyμãtμ
                                        {
                                                if(LIGHT_L1>flag_adc)
                                                        {
                                                                delay_ms(xms);
                                                                if(LIGHT_L1>flag_adc)
                                                                        {
                                                                                lig1++;
                                                                        }        
                                                        }
                                                if(LIGHT_L1<flag_adc)
                                                        {
                                                                delay_ms(xms);
                                                                if(LIGHT_L1<flag_adc)
                                                                        {
                                                                                lig1<<=1;
                                                                                u=0;
                                                                        }        
                                                        }                                                        
                                        }
                                        lig3=(lig1<<4)|lig2;
                                        lig1=lig2=0;
                                        LM_Cler();
        }
        else        
                {
                                LIGHT_LNF=1;
                                        sprintf((char*)LIG1,"%x",lig3);
                                LM_ShowString(0,0,LIG1);
//                                LM_ShowChar(90,0,':');
                }
        }
}



回復

使用道具 舉報

ID:429003 發表于 2020-8-13 13:41 | 顯示全部樓層
UCOSII 只要有高優先級的任務運行,其它任務只能排隊等待!!!
你創建的任務,都是一直運行,從不休眠的,所以低優先級任務根本沒有機會啟動運行!
稍作修改,用UCOSII的延遲函數OSTimeDly() ,替換 delay_ms()  
回復

使用道具 舉報

ID:429003 發表于 2020-8-13 13:43 | 顯示全部樓層
另外,UCOS-III 都出來好些日子了,UCOS-II 可以放棄了,反正都還在摸索中,直接上UCOS-III吧!!!
回復

使用道具 舉報

ID:814986 發表于 2020-8-18 11:05 | 顯示全部樓層
建議高優先級的任務執行完后要主動釋放CPU使用權。
回復

使用道具 舉報

ID:287575 發表于 2020-8-18 23:50 | 顯示全部樓層
找到os_cfg.h,搜索#define OS_MAX_TASKS              8    /* Max. number of tasks in your application ...                 */
把最大任務數按你的任務數改,比如我就改成8個任務了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费一级欧美在线观看视频 | 欧美日韩在线一区二区三区 | 成人深夜福利网站 | 精品免费视频 | 国产精品欧美精品日韩精品 | 美女视频一区二区三区 | 欧美亚洲国产一区二区三区 | 国产视频中文字幕 | 欧美国产日韩精品 | 拍真实国产伦偷精品 | 国产在线高清 | 综合激情av | 日韩一区二区三区在线视频 | 91一区二区| 91超碰在线观看 | 国产成人影院 | 国产成人精品一区二区三区网站观看 | 亚洲在线成人 | 亚洲人成网站777色婷婷 | 国产一级片久久久 | 国产一区二区自拍 | 久久久区 | 日韩有码一区 | 超碰国产在线 | 日本精a在线观看 | 一级黄片一级毛片 | 国产午夜精品一区二区三区在线观看 | 欧美黑人体内she精在线观看 | 国产激情福利 | 成人在线免费网站 | 亚洲成人av在线播放 | 国产黄色大片网站 | 日本一区二区三区在线观看 | 久久久成人免费一区二区 | 亚洲一二三区在线观看 | 精品96久久久久久中文字幕无 | 激情五月综合 | 日本欧美黄色片 | 在线黄色网 | 亚洲国产视频一区二区 | 免费一区在线观看 |