• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機系統的C語言程序結構優化

    單片機系統的C語言程序結構優化

    作者: 時間:2012-04-04 來源:網絡 收藏

     要特別注意的是,兩種方式都有可能導致一些任務長時間等待,時間片所設定的時間也因此不能作為精確時間的依據,根據的要求或需要,甚至要在任務執行過程中進行某些保護工作,如中斷屏蔽等,因而在進行任務規劃時要注意。如果一個任務較繁瑣或可能要等待很長時間,則應當考慮任務的拆分,把一個較大的任務細化為較小的任務,把一個費時長的任務劃分為多個費時小的任務,協同完成其功能。如在等待時間長的情況下,可附加一個定時任務,定時任務到則發送一個消息旗標,主過程沒有檢測到消息旗標就馬上返回,否則繼續執行。下面是示例代碼,假定該任務將等待很長時間,現將其拆分為兩個任務proc1與proc2協同完成原來的工作,proc1每100個時間單位執行一次,而proc2每200個時間單位執行一次。

    本文引用地址:http://www.czjhyjcfj.com/article/171701.htm

      //定義兩個任務,并將其加入到任務棧中。
      code _op_ Op[proc_cnt]={…,{proc1,100},{proc2,200}};
      data int time1_Seg; //定義一個全局旗標
      //任務實現
      void proc1(void){
        if (time1_Seg)
          exit;
        else
          time1_Seg=const_Time1; //如果時間到了,則恢復初值并
                      //接著執行下列代碼。
        …             //任務實際執行代碼
      }

      void proc2(void){
        if(time1_Seg)
        time1_Seg--;
      }

      由上例可以看出,任務拆分后,幾乎不占過多的CPU時間,使得任務的等待時間大減,讓CPU有足夠的時間進行任務管理與調度。同時也讓程序的性與可讀性大為加強。

    結語

      基于上述思路與對IC卡電表工作程序進行全部改寫后,性能得到了很大改善。全部編寫完成后,程序代碼量約為3KB多一點,可見此種結構的程序構造并不會造成很大的開銷(大部分開銷是由于使用C的結果),卻使開發得到了簡化。這只要將系統細分為一系列任務,然后加入到任務棧進行編譯即可,很適合小容量系統的開發,而筆者也在多個系統中成功地應用了此種結構。


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 长岛县| 无棣县| 乌恰县| 乌拉特后旗| 黔南| 盱眙县| 城口县| 道孚县| 康保县| 绥阳县| 谢通门县| 资溪县| 新乡市| 读书| 彭泽县| 石渠县| 运城市| 肥西县| 资源县| 石嘴山市| 许昌县| 龙里县| 阿图什市| 彭山县| 卓尼县| 阿坝县| 山东省| 黑龙江省| 微博| 衡阳县| 华容县| 合作市| 确山县| 朔州市| 射阳县| 衡阳县| 惠州市| 越西县| 松溪县| 兴文县| 祥云县|