一、必須創建任務函數
空閑任務
特點:
(1)、空閑任務是UCOSIII創建的第一個任務。
(2)、空閑任務是UCOSIII必須創建的。
(3)、空閑任務優先級總是為OS_CFG_PRIO_MAK-1。
(4)、空閑任務中不能調用任何可使空閑任務進入等待態的函數!
OSinit()函數—>OS_IdleTaskInit()空閑任務創建函數-->OSTaskCreate()中OS_IdleTask就是空閑函數
void OS_IdleTask (void *p_arg)
{
CPU_SR_ALLOC();
(void)&p_arg;
while (DEF_ON)
{
CPU_CRITICAL_ENTER();//進入臨界代碼保護區
OSIdleTaskCtr++;//每進入一次空閑任務就加一
#if OS_CFG_STAT_TASK_EN > 0u//大于0開啟統計任務
OSStatTaskCtr++;//統計CPU使用頻率
#endif
CPU_CRITICAL_EXIT();//臨界代碼退出
OSIdleTaskHook(); //鉤子函數
}
}
時鐘節拍任務
(1)時鐘節拍任務用來跟蹤任務延時和任務等待超時。
(2)任務函數為OS_TickTask(),是UCOSIII必須創建的一個任務,任務優先級用宏OS_CFG_TICK_TASK_PRIO來定義,
(3)一般時鐘節拍任務的任務應該設置一個相對較高的優先級,一般優先級設置為1.
-------------------------------------------------------------------------------------------------------------------------------------------------
二、自定義任務函數
1、統計任務
統計任務可用來統計CPU的使用率、各個任務的CPU使用率和各任務的堆棧使用情況,默認情況下統計任務是不會創建的。
如果要開啟統計任務的話需要做如下步驟:
1.1、將宏OS_CFG_STAT_TASK_EN置1。
1.2、必須在main函數創建的以一個任務也是唯一的一個應用任務里面調用函數OSStatTaskCPUUsageInit()。
1.3、統計任務的優先級通過宏OS_CFG_STAT_TASK_PRIO來設置,一般設置OS_CFG_PRIO_MAX-2,也就是倒數第二個優先級。
2、定時任務
UCOSIII提供軟件定時器功能,定時任務是可選的,將宏OS_CFG_TMR_EN設置為1就會使能定時任務,
在OSInit()中將會調用函數OS_TmrInit()來創建定時任務。定時任務的優先級通過宏OS_CFG_TMR_TASK_PRIO定義,ALIENTEK默認將定時器任務優先級設置為2。
2.1 中斷服務管理任務
當把os_cfg.h文件中的宏OS_CFG_ISR_POST_DEFERRED_EN置1就會使能中斷服務管理任務
當ISR(中斷服務函數)調用UCOSIII提供的“post”函數時,要發送的數據和發送的目的地都會存入一個特別的緩沖隊列中,當所有嵌套的ISR都執行完成以后UCOSIII會做任務切換,運行中斷服務管理任務,該任務會把緩存隊列中存放的信息重發給相應的任務。
這樣做的好處就是可以減少中斷關閉的時間,否則,在ISR中還需要把任務從等待列表中刪除,并把任務放入就緒表,以及做一些其他的耗時操作。
中斷服務管理任務的優先級永遠為0,不可更改!
鉤子函數
1、鉤子函數一般主要是用來擴展其他函數(任務)功能的,鉤子函數有如下幾個:
(1)、OSIdleTaskHook(),空閑任務調用這個函數,可以用來讓CPU進入低功耗模式
(2)、OSInitHook(),系統初始化函數OSInit()調用此函數。
(3)、OSStatTaskHook(),統計任務每秒中都會調用這個函數,此函數允許你向統計任務中添加自己的應用函數。
(4)、OSTaskCreateHook(),任務創建的鉤子函數。
(5)、OSTaskDelHook(),任務刪除的鉤子函數。
(6)、OSTaskReturnHook(),任務意外返回時調用的鉤子函數,比如刪除某個任務
(7)、OSTaskSwHook(),任務切換時候調用的鉤子函數。
(8)、OSTimeTickHook(),滴答定時器調用的鉤子函數。
注意:我們在編寫鉤子函數時不能直接在函數里對鉤子函數進行修改,而是修改在os_app_hooks.c里面對應的函數來針對修改
比如空閑任務函數的鉤子函數是OSIdleTaskHook();,就不能直接跳過去修改,而是在os_app_hooks.c找到對應函數進行修改,即是App_OS_IdleTaskHook()函數
void OS_IdleTask (void *p_arg)
{
CPU_SR_ALLOC();
(void)&p_arg; /* Prevent compiler warning for not using 'p_arg' */
while (DEF_ON)
{
CPU_CRITICAL_ENTER();
OSIdleTaskCtr++;
#if OS_CFG_STAT_TASK_EN > 0u
OSStatTaskCtr++;
#endif
CPU_CRITICAL_EXIT();
OSIdleTaskHook();/* Call user definable HOOK */
}
}
2.2、以鉤子函數OSIdleTaskHook()為例,講解一下鉤子函數的使用方法,實驗要求如下:
當空閑任務每執行50000就通過串口打印字符串“Idle Task Running 50000 times!”
void App_OS_IdleTaskHook (void)
{
static int num;
num++;
if(num%50000==0)
{
printf("Idle Task Running 50000 times!rn");
}
}
上一篇:UCOSIII中斷和時間管理
下一篇:UCOSIII時間片輪轉調度器
推薦閱讀
史海拾趣
近年來,電子行業面臨著諸多變革和挑戰,如物聯網的快速發展、人工智能的崛起等。面對這些變革,Boundary Devices積極調整戰略,加強在物聯網和人工智能領域的研發投入,推出了一系列符合市場趨勢的新產品。同時,公司還加強與高校和研究機構的合作,共同推動電子行業的創新與發展。
港源公司深知品質是企業生存之本。公司先后通過了ISO9001質量管理體系認證、ISO14001環境體系認證、ISO45001職業健康安全管理體系認證以及IATF16949汽車質量體系認證等國際權威認證。這些認證不僅證明了港源公司在品質管理方面的卓越能力,還為公司贏得了國內外客戶的廣泛信賴和好評。港源公司堅持“誠信、創新、和諧、共贏”的企業核心價值觀,致力于為客戶提供高品質、高可靠性的產品和服務。
Bedford Opto公司在成立初期,面臨著激烈的市場競爭和技術瓶頸。然而,公司的研發團隊通過不懈努力,成功開發出一款具有革命性的光電傳感器。這款產品不僅提高了信號傳輸的效率,還降低了能耗,迅速在市場上獲得了認可。Bedford Opto公司因此逐漸在電子行業中嶄露頭角。
隨著數字化時代的到來,C-MEDIA公司敏銳地捕捉到文化傳媒市場的潛力。公司以法國主流電視臺為傳播平臺,積極與中國主流媒體展開合作,成功開創了海外華人經營國際文化傳媒的新模式。特別是在2014年,中國國務院新聞辦獨家授權C-MEDIA在歐洲播放中國影視數據庫節目,這一舉措極大地提升了公司在國際文化傳媒領域的影響力。
- 創業初期:
- 描述Clulite公司的創始人或核心團隊如何識別電子行業中的某個市場機遇。
- 講述他們是如何籌集初始資金,設立公司,并開發出第一款產品或解決方案的。
- 可以提及公司在初創階段面臨的挑戰,如技術難題、市場競爭等。
- 技術創新:
- 講述Clulite如何通過研發創新,推出了一款顛覆性的產品或技術,從而獲得了市場認可。
- 詳細描述這一創新過程,包括研發團隊的努力、關鍵技術的突破等。
- 提及這一創新如何幫助公司在市場上取得了競爭優勢。
- 市場拓展:
- 描述Clulite如何逐步擴大市場份額,從地區市場走向全國乃至國際市場。
- 可以講述公司如何建立銷售網絡、與合作伙伴建立合作關系,以及參與行業展會等活動來推廣品牌和產品。
- 提及公司在市場拓展過程中遇到的挑戰和應對策略。
- 品質管理:
- 講述Clulite如何注重產品質量和客戶體驗,通過嚴格的質量控制流程來提升產品可靠性。
- 描述公司如何建立完善的售后服務體系,為客戶提供及時、專業的支持。
- 提及這些舉措如何幫助公司贏得了客戶的信任和口碑。
- 可持續發展:
- 講述Clulite如何關注環境保護和社會責任,推動公司的可持續發展。
- 描述公司如何采取環保措施,減少生產過程中的污染排放。
- 提及公司如何參與社會公益事業,回饋社會。
請注意,這些故事需要根據Clulite公司的實際情況進行調整和補充。如果你需要更具體的內容,建議查閱Clulite公司的官方網站、新聞報道或行業分析報告,以獲取更詳細的信息和數據。
在電子行業的浪潮中,一家名為“通信先鋒”的公司憑借其前瞻性的技術創新,迅速嶄露頭角。公司創始人敏銳地捕捉到了無線通信市場的巨大潛力,并投入大量資源進行研發。經過數年的努力,他們成功開發出了一款具有革命性的無線通信技術,極大地提升了數據傳輸速度和穩定性。
隨著這款技術的推廣和應用,“通信先鋒”迅速獲得了市場的認可。他們不僅與各大運營商建立了緊密的合作關系,還積極開拓海外市場,將產品和技術推向全球。在激烈的市場競爭中,他們憑借卓越的技術實力和良好的口碑,逐漸成為了通信行業的領軍企業。
作 者: 吳孔松 編著 出 版 社: 北京航空航天大學出版社 出版時間: 2008-6-1 版 次: 1 頁 數: 321 開 本: 16開 內容簡介 本書以家庭防盜系統為主線,以Holtek公司的HT48R系列單片機為輔線,重點介紹HT48R系列的基 ...… 查看全部問答∨ |
|
我正在學習bootloader, 想自己改寫個eboot試試。 可是生成的eboot.nb0大小為256k,實驗箱原來的是88k。 256k的可以燒進去但是啟動后沒有反應, 誰知道為什么寫進去了,卻沒反應么? … 查看全部問答∨ |
以下是自己寫的一段小程序,運行的時候總是不能進入到switch語句的分支內,即不會有Refreshing11!的提示。數據庫內已經存入數據,只是想在一個ClistCtrl控件中顯示其數據。 請問問題出在什么地方? void CTCPClientDlg::RefreshDB() { & ...… 查看全部問答∨ |
聯系我: lulu Tel: 01067100060 ext 601 Mobile: 15011402198 MSN: lulucai27@hotmail.com … 查看全部問答∨ |
|
AGM1微動能發電模塊 概述AGM1是一款具有超高性價比的微動能發電模塊。AGM1通過捕獲機械能,改變磁場磁通量,產生感應電流從而把機械能轉化為電能,為低功耗的無線發射模塊供電。配合我司的超低功耗無線發射模塊AGTX1,可以輕松構建無源無線發射模 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 高通攜手中國“汽車朋友圈”亮相2025上海車展: 加速駕駛輔助普惠,推動艙駕創新升級
- 工業市場正在快速回暖,德州儀器如何重塑電力電子市場?
- 特斯拉:美國交付的Model Y/3電池包已實現100%美國生產
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產品
- 強化中國市場戰略布局,德州儀器正靈活應對全球關稅挑戰
- Molex莫仕通過本地合作和創新加強支持中國汽車行業
- 貿澤開售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實現車載充電器小型化!
- 用上車規級UFS 4.0,讓出行變得高效且可靠
- 車載測試技術解析:聚焦高帶寬、多通道同步采集與協議分析