在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > UCOSII在運行時進入了OS_TaskIdle的問題

      UCOSII在運行時進入了OS_TaskIdle的問題

      作者: 時間:2016-11-27 來源:網絡 收藏
      目前正在用ucosii跑幾個小任務,還算穩(wěn)定。由于接觸ucosii時間并不太長,所以出了問題還是會在系統(tǒng)上找問題。

      int main(void)

      本文引用地址:http://www.biyoush.com/article/201611/322262.htm

      {
      INT8U ret = 0;

      IOInit(); //外設功能初始化
      OSInit(); //uCOS-II系統(tǒng)初始化

      ret = OSTaskCreate( MY_Task, //初始化任務
      (void*)0, //無參數
      &Start_TaskStk[APP_TASK_STK_SIZE-1], //任務堆棧大小為128*4Byte
      PRIO_START_TASK); //優(yōu)先級最高


      OSStart(); //開始任務調度
      return 0;
      }
      void MY_TASK()
      {
      OSStatInit(); //統(tǒng)計任務初始化
      ret = OSTaskCreate(tasksd,
      NULL,
      &GuiTaskStk[APP_TASK_STK_SIZE-1],
      PRIO_SD_HANDLE_TASK);
      ret = OSTaskCreate(Web_TASK,
      NULL,
      &KeyTaskStk[APP_TASK_STK_SIZE-1],
      PRIO_TEMP_TASK);

      ret = OSTaskCreate(TemCheckTask,
      NULL, &TempTaskStk[APP_TASK_STK_SIZE-1],
      PRIO_WEB_TASK);

      }

      這是我建的任務。
      實際上,每個任務都是一個死循環(huán)。循環(huán)里邊是要處理的代碼。
      循環(huán)的最后是一個ostimedly();函數用于延時,在延時的時候,將該循環(huán)里的任務掛起,執(zhí)行下一個優(yōu)先級任務。當延時到了,又會跑到優(yōu)

      先級最高里了。
      在我加了ds18b20的函數后,發(fā)現程序進入OS_TaskIdle();內出不來了,以為延時時間少,然后加到10-100,可還是不行。去掉ds18b20

      程序后就可以了,查找后發(fā)現,原來delay_us利用的時系統(tǒng)滴答做的延時,延時完后將滴答關掉了,而ucosii的心臟也是系統(tǒng)滴答產生的,

      這樣就會,卡在空閑任務里了。
      void SysTick_Handler(void)
      {
      OSIntEnter();

      OSTimeTick();
      OSIntExit();
      }
      void delay_usinds(u32 Nus)
      {
      SysTick->LOAD=Nus*9; //時間加載
      SysTick->CTRL|=0x01; //開始倒數
      while(!(SysTick->CTRL&(1<<16))); //等待時間到達
      SysTick->CTRL=0X00000000; //關閉計數器
      SysTick->VAL=0X00000000; //清空計數器
      } 所以終于找到 進入空閑任務OS_TaskIdle()的原因了。



      關鍵詞: UCOSIIOS_TaskIdl

      評論


      技術專區(qū)

      關閉