前段時間做基于μC/OS系統的開發,遇到一個問題,在運行任務的時候需要使CPU進入睡眠狀態幾秒鐘,但直接調用__WFI();時沒有效果,后來查找資料發現需要在空閑任務中調用。
下面是我讓cpu進入睡眠狀態的例子:
void App_TaskIdleHook (void)
{
//檢查標志確定是否需要睡眠
if(Flag_Power_Off != 0)
{
//關閉systick避免systick中斷喚醒CPU
Flag_Power_Off = 0;
printf("sleep\r\n");
CLKPWR_Sleep();
printf("wake\r\n");
//恢復所有掛起的任務
OSTaskResume(10);
OSTaskResume(11);
OSTaskResume(12);
OSTaskResume(13);
//使能systick恢復任務調度
SYSTICK_Cmd(ENABLE);
}
}
打開μC/OS的OS_APP_HOOKS_EN,在需要睡眠的地方加上下面的代碼就可以進入睡眠狀態了:
//設置定時器,定時進入中斷喚醒CPU
//之前需要關閉除定時器以外的全部中斷
//設置標志,需要進入睡眠狀態
Flag_Power_Off = 0x01;
//掛起所有任務(保證CPU立即運行到空閑任務中)
OSTaskSuspend(10);
OSTaskSuspend(11);
OSTaskSuspend(12);
OSTaskSuspend(13);
注:在進入睡眠狀態之前要用定時器設定喚醒時間并關閉除此定時器外的所有中斷,我在進入空閑任務之前關掉了除systick外的中斷,否則不能調度任務進入空閑任務,然后在空閑任務中關閉systick,睡眠完成之后再打開systick中斷。
上一篇:STM32F030低功耗之停機模式的進入和喚醒
下一篇:STM32進入STOP模式并喚醒實驗總結
推薦閱讀
史海拾趣
以下是五個關于Dell公司在電子行業里發展起來的相關故事,每個故事都力求描述事實,避免主觀評價:
- 大學宿舍里的創業夢想
1984年,一個年僅19歲的年輕人邁克爾·戴爾(Michael Dell)在德克薩斯大學的宿舍里,憑借對電腦行業的熱情和敏銳的市場洞察力,用1000美元創立了PC's Limited公司(后更名為戴爾公司)。他通過從當地電腦零售商那里低價購買積壓的IBM電腦,然后自行改裝升級并以低于市場價的價格出售,迅速打開了市場。這種直接銷售模式不僅讓戴爾公司賺取了第一桶金,也為他日后在電子行業的發展奠定了堅實的基礎。
- 股票市場的智慧投資
1987年,戴爾公司在股市暴跌的情況下做出了一個大膽的決策——大量購入高盛的股票。這一決策在當時看來頗具風險,但戴爾憑借過人的膽識和精準的市場判斷,成功地在第二年獲利1800萬美元。同年,戴爾公司在納斯達克公開上市,融資3000萬美元,市場價值達到8500萬美元。這一舉措不僅讓戴爾公司的資金實力得到了極大提升,也為其后續在電子行業的擴張提供了有力支持。
- 直銷模式的成功實踐
戴爾公司自創立之初就堅持直銷模式,通過直接與客戶溝通了解他們的需求,從而提供更加符合客戶需求的產品和服務。這種直銷模式不僅減少了中間環節和成本,也讓戴爾公司能夠更加快速地響應市場變化和客戶需求。隨著公司規模的不斷擴大,戴爾逐漸將直銷模式應用到了全球范圍內,取得了顯著的成功。
- 技術創新的持續推動
在電子行業競爭激烈的背景下,戴爾公司始終將技術創新作為推動企業發展的重要動力。公司不斷投入大量資金用于研發新技術和新產品,以滿足客戶不斷變化的需求。例如,戴爾公司率先推出了多款具有創新性的電腦產品,如超薄筆記本、游戲本等,這些產品不僅深受消費者喜愛,也為公司帶來了可觀的利潤。
- 全球市場的戰略布局
隨著全球經濟的不斷發展和電子行業的競爭加劇,戴爾公司逐漸將目光投向了全球市場。公司通過在全球范圍內建立生產基地、銷售網絡和研發中心等方式,實現了對全球市場的全面覆蓋。這種全球化戰略不僅讓戴爾公司能夠更好地滿足全球客戶的需求,也為其在電子行業的競爭中贏得了更大的優勢。同時,戴爾公司還積極尋求與全球合作伙伴的合作機會,共同推動電子行業的發展和進步。
隨著電子市場的不斷發展和消費者需求的多樣化,BELLING LEE公司意識到單一的產品線已無法滿足市場需求。于是,公司開始積極拓展產品線,推出了包括智能手機、平板電腦、智能家居設備等一系列新產品。這些新產品不僅滿足了消費者的多樣化需求,也進一步鞏固了公司在電子市場的領先地位。
為了進一步拓展業務領域和提升競爭力,DCX-CHOL Enterprises開始積極探索跨界合作的可能性。公司與多家知名企業和研究機構建立了戰略合作關系,共同開展技術研發和產品創新。通過跨界合作,DCX-CHOL Enterprises不僅獲得了更多的技術支持和市場資源,還拓寬了視野和思路,為公司未來的發展注入了新的活力。同時,公司還積極參與行業協會和組織的活動,加強與其他企業的交流與合作,共同推動電子行業的發展和進步。
EPSON始終將品質視為企業發展的生命線。公司建立了嚴格的質量管理體系,從原材料采購到生產、檢測、包裝等各個環節都進行嚴格的質量控制。同時,EPSON還積極引進先進的生產設備和檢測技術,不斷提高產品的品質和性能。這種對品質的執著追求使得EPSON的產品在市場上贏得了良好的口碑和信譽,逐漸建立了起強大的品牌形象。
面對日益激烈的市場競爭和不斷變化的市場需求,FILTRONETICS深知技術創新的重要性。公司加大了對研發的投入力度,成立了專門的研發部門和技術中心,致力于新技術、新材料和新工藝的研發和應用。同時,公司還積極關注環保和可持續發展問題,致力于生產綠色、環保的電子產品。通過不斷的技術創新和可持續發展實踐,FILTRONETICS不僅保持了技術領先地位,也為社會的可持續發展做出了貢獻。
在Windows mobile 5.0機器上,我用SystemIdleTimerReset();來取消是可以實現 可是在Windows CE 機器上就沒有用,那我要取消自動休眠,要怎么做? … 查看全部問答∨ |
我目前想使用C8051F040的P3.0作為外部中斷腳-INT0,我用示波器已經觀察了管腳上的 波形,一切正常,但是始終進不了外部中斷服務子程序。我使用了P1口的部分腳作中斷 腳,中斷是成功的,只要用到P3口就不行,P2口我沒有去試, 所以我想請問 ...… 查看全部問答∨ |
/******************************************************************************************* 函數名稱: GPIO_SetPin 描 述: 設置某個引腳輸出高電平 輸入參數: DWORD dwIoControlCode : I/O control code, 指出操作的GPIO組, ...… 查看全部問答∨ |
VECTOR_BRANCH ldr pc,=HandlerEINT0 ;mGA 中斷向量表 ldr pc,=HandlerEINT1 ; ldr pc,=HandlerEINT2 ; ...… 查看全部問答∨ |
我剛剛學習dsp課程,就按著書本上的代碼寫上,但是用匯編寫老是錯,"TEXTxf.asm", ERROR! at line 15: [E0002] Invalid instruction for specified &nb ...… 查看全部問答∨ |
|
在我接觸的學51的人里,不少人是通過看視頻教程入門的,而這其中為數不少的又是看的 郭天翔 的教程。 郭天翔的大名早就耳聞。 在我大三剛剛開始自學51的時候,我在網上看各種51相關的帖子,資料。 關于前景,關于現狀,關于學習方法和所需條 ...… 查看全部問答∨ |
硬件資源 MSP-EXP430F5739學習板 TMP006基本電路(2層板) 硬件連接:SCL---P1。7 SDA--P1。6 [ 本帖最后由 藍雨夜 于 2012-7-27 11:50 編輯 ]… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 高通攜手中國“汽車朋友圈”亮相2025上海車展: 加速駕駛輔助普惠,推動艙駕創新升級
- 工業市場正在快速回暖,德州儀器如何重塑電力電子市場?
- 特斯拉:美國交付的Model Y/3電池包已實現100%美國生產
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產品
- 強化中國市場戰略布局,德州儀器正靈活應對全球關稅挑戰
- Molex莫仕通過本地合作和創新加強支持中國汽車行業
- 貿澤開售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實現車載充電器小型化!
- 用上車規級UFS 4.0,讓出行變得高效且可靠
- 車載測試技術解析:聚焦高帶寬、多通道同步采集與協議分析