精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>嵌入式開發>μC/OS-II的軟件定時器的改進的方法

μC/OS-II的軟件定時器的改進的方法

2017-10-31 | rar | 0.6 MB | 次下載 | 1積分

資料介紹

 1、概述
  軟件定時器是一種軟件措施,通過它可以使一項特定的任務在給定的時間段后被執行。軟件定時器廣泛地應用于內核設計和應用程序設計中,例如,一個進程使用軟件定時器等待其他的進程完成特定的動作,以使任務間的操作同步等,因此,對軟件定時器的高效實現對提升系統的響應效率是至關重要的。
  作為一種基礎的軟件措施,μC/OS-II[1]的 V2.86版本中增加了對軟件定時器的支持。使用μC/OS-II提供的軟件定時器,應用程序可以方便地完成特定的定時任務。本文對μC/OS-II的軟件定時器的實現機制進行簡要分析,然后提出了對μC/OS-II的軟件定時器的實現進行改進的方法。
  2、μC/OS-II軟件定時器的實現機制及算法分析
  2.1 μC/OS-II軟件定時器的核心數據結構
  μC/OS-II實現軟件定時器的核心數據結構是 OS_TMR,其定義如下:
  typedef struct os_tmr {
  INT8U OSTmrType; /*應該設置為OS_TMR_TYPE*/
  OS_TMR_CALLBACK OSTmrCallback; /*指定時間到達時要執行的回調函數*/
  void *OSTmrCallbackArg; /*傳遞給回調函數的參數*/
  void *OSTmrNext; /*軟件定時器鏈表管理指針*/
  void *OSTmrPrev;
  INT32U OSTmrMatch; /*當OSTmrTime == OSTmrMatch 時表示定時器時間到*/
  INT32U OSTmrDly; /*對于周期性定時器,再次啟動定時器前的延時時間*/
  INT32U OSTmrPeriod; /*對于周期性定時器,時鐘周期的長度*/
  INT8U OSTmrOpt; /*選項 (如 OS_TMR_OPT_xxx 等) */
  INT8U OSTmrState; /*定時器的狀態*/
  } OS_TMR;
  每個 OS_TMR結構的實例定義了一個軟件定時器,多個軟件定時器通過結構中的 OSTmrNext和 OSTmrPrev構成一個定時器雙向鏈表。
  為了提高對軟件定時器的管理效率,μC/OS-II引入了“定時器輪”數據結構,所謂定時器輪,是將定時器實例中的 OSTmrMatch域的值參照某一個預先設計的數(稱為輪數)進行求余運算,并根據求余結果將定時器進行分組以改善對到期定時器的命中率。定時器輪數缺省配置如下:
  typedef struct os_tmr_wheel {
  OS_TMR *OSTmrFirst; /*指向第一定時器的指針*/
  INT16U OSTmrEntries; /*該定時器輪中的定時器項數*/
  } OS_TMR_WHEEL;
  缺省配置下,μC/OS-II 定義的輪數為8,因此,μC/OS-II 的定時器輪為如下的一個數組:
  OS_TMR_WHEEL OSTmrWheelTbl[8];
  例如,在某一個特定的時刻,此處假設時刻5,系統中有定時時間為2ticks、4ticks、5ticks、32ticks、161ticks、357ticks的軟件定時器,那么,這些定時器將在時鐘滴答分別為7、9、10、37、166、362時到期,則此時系統的定時器輪的實例如圖 1所示:
  μC/OS-II的軟件定時器的改進的方法
  2.2 μC/OS-II軟件定時器的處理算法分析
  μC/OS-II對定時器的超時處理在一個稱為“uC/OS-II Tmr”的任務中進行,該任務是通過信號量 OSTmrSemSignal來激活。基于以上定義的定時器輪,μC/OS-II對定時器的處理算法如下:
  static void OSTmr_Task (void *p_arg)
  {
  for(;;)
  {
  等待OSTmrSemSignal 信號量并獲得OSTmrWheelTbl 的訪問權;
  STmrTime = OSTmrTime+1,并對8 求余后得到對應的定時器輪項索引index;
  for OSTmrWheelTbl[index]定時器輪中的每一個定時器ptmr,do
  {
  if (OSTmrTime == ptmr-》OSTmrMatch) {
  執行ptmr 軟件定時器中的回調函數;
  對于單次定時器,從定時器輪中刪除該時鐘;
  對于周期性定時器,則重置該定時器的OSTmrMatch 值;
  }
  }
  釋放對OSTmrWheelTbl 的訪問權;
  }
  }
  2.3 μC/OS-II的定時器處理算法的效率分析 采用上面的例子,對μC/OS-II的定時器處理算法效率進行一個簡單的分析:在下一次時鐘滴答,也就是時鐘滴答 6時,沒有定時器到期,而 for循環必須對每個時鐘進行檢查,類似的情況還發生在自時鐘到達 10以后的多個檢查中。根據系統中的定時器的數量,這種無謂的檢查將占用大量的 CPU時間。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關電源基礎知識
  4. 5.73 MB  |  6次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5基于FPGA的光纖通信系統的設計與實現
  10. 0.61 MB  |  2次下載  |  免費
  11. 6基于FPGA的C8051F單片機開發板設計
  12. 0.70 MB  |  2次下載  |  免費
  13. 751單片機窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費
  15. 8基于51單片機的RGB調色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21548次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費