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

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

3天內不再提示

STM32單片機裸機:實現多任務設計實現

STM32嵌入式開發 ? 來源:STM32嵌入式開發 ? 2023-11-21 15:02 ? 次閱讀

問題

單片機開發過程中,隨著任務的增多,完全等待一個任務完成后,再去執行下一個任務的弊端越發明顯。

wKgZomVcViSAOO1TAAAT-Wquh3E708.jpg

在while(1)循環中實現LED 周期閃爍,提示系統正常運行。

代碼實例:

wKgZomVcViSAPAWxAAANnsgslN4356.jpg

采用時間分割思想,去處理不同的任務,每次執行1ms,到500次時,執行相應功能。

代碼

定義結構體:

Delay:時間片執行時長;

Period:任務執行周期。

wKgaomVcViSAbGFiAAAkC1NSq34161.jpg

添加(創建)任務:

wKgZomVcViSAd9bAAAA2AF3cbEA747.jpg

刪除任務:

wKgaomVcViSAB-dHAAAfA0Nwd90832.jpg

更改任務:

wKgaomVcViSAFlZpAAAoGitM1MU455.jpg

執行調度器:

wKgZomVcViWAJW4vAABG1g6gL7k638.jpg

定時器查詢時間片:

wKgaomVcViWAcIbvAAAVng7vT7I989.jpg

測試

封裝好了必要的函數之后,接下來學習如何使用,很簡單,首先創建幾個任務,創建了2個任務,兩個任務分別是task01,“時間片”是50ms(自己根據需要訂),任務周期是500ms,task02,“時間片”是10ms(自己根據需要訂),任務周期是1000ms:

wKgaomVcViWAYK6EAAAdOzb0Smk922.jpg

在systick(或者其他定時器)中調用,關于Systick的使用:STM32實例-SysTick實現2個LED流水燈效果。

wKgZomVcViWAEZtuAAAO9GsT-l0599.jpg

最后只需要在while中調用調度器就OK了(類似于LVGL的設計思路),根據我們的設計,兩個任務,一個是500ms打印“task01 test”,另一個1000ms打印“task02 test”。

wKgZomVcViWAVdcaAAD1aUd0qds467.jpg







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • LED閃爍
    +關注

    關注

    0

    文章

    29

    瀏覽量

    9737
  • STM32單片機
    +關注

    關注

    58

    文章

    546

    瀏覽量

    58076
  • 裸機
    +關注

    關注

    0

    文章

    37

    瀏覽量

    6181

原文標題:STM32單片機裸機:實現多任務

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    單片機分時多任務

    本帖最后由 eehome 于 2013-1-5 09:44 編輯 單片機分時多任務
    發表于 08-17 15:56

    51單片機多任務設計

    51單片機多任務設計
    發表于 05-14 20:16

    如何去實現基于stm32的FreeRTOS多任務程序

    基于 stm32 的 FreeRTOS多任務程序實現一、什么是FreeRTOS二、AHT20數據采集原理電路繪制三、FreeRTOS的多任務程序設計四、參考資料一、什么是FreeRTO
    發表于 08-24 07:45

    如何去實現STM32單片機裸機程序的實時性處理呢

    如何去實現STM32單片機裸機程序的實時性處理呢?怎樣去實現呢?
    發表于 11-16 08:20

    FreeRTOS多任務系統的相關資料推薦

    目錄單片機各編程系統特點1、裸機系統(1)輪詢系統(2)前后臺系統2、多任務系統單片機各編程系統特點單片機編程中有
    發表于 01-13 07:51

    時間片輪詢+狀態實現裸機多任務相關資料分享

    時間片+狀態實現裸機多任務注:上述偽多任務是按個人理解命名的,實際上在裸機中跑的還是單線程,
    發表于 01-17 06:14

    stm32F4系列單片機如何利用一個定時器和二行代碼實現多任務的運行?

    stm32F4系列單片機如何利用一個定時器和二行代碼實現多任務的運行?
    發表于 01-19 07:37

    uCOS-III任務間切換的實現

    RTOS進行多任務管理。在引入RTOS的后,編程思想和裸機系統程序設計有所不同,我們會根據產品所要實現的功能,將整個系統分割成一個個獨立的且無法返回的函數,這些函數也就是我們通常所講的任務
    發表于 02-18 06:16

    介紹一種嵌入式裸機多任務切換方法

    一種嵌入式裸機多任務切換方法有時候為了實現一些簡單的、對實時性要求不高的任務,采用操作系統不僅增加了程序的復雜性,對低性能單片機的資源占用也
    發表于 02-28 13:27

    采用Protothread實現實時多任務系統

    采用Protothread實現實時多任務系統 在許多系統資源非常緊張的單片機應用中,使用實時操作系統進行任務調度來實現實時
    發表于 03-29 15:10 ?1337次閱讀
    采用Protothread<b class='flag-5'>實現</b>實時<b class='flag-5'>多任務</b>系統

    51單片機多任務機制的實現策略研究

    從操作系統實現多任務機制的原理入手,分析了51單片機實現多任務機制的基本條件,論述了5l單片機
    發表于 09-19 17:26 ?159次下載
    51<b class='flag-5'>單片機</b><b class='flag-5'>多任務</b>機制的<b class='flag-5'>實現</b>策略研究

    51單片機多任務操作系統的原理與實現

    51單片機多任務操作系統的原理與實現,在51單片機上模擬操作系統
    發表于 02-28 15:09 ?16次下載

    C語言標準庫實現搶占式多任務資料

    C語言標準庫實現搶占式多任務,使用C語言標準庫實現,可以方便的移植到51單片機上,總的代碼量243行,占用空間少,對于資源有限單片機也適用,
    發表于 12-31 18:00 ?4次下載

    時間片輪詢+狀態機實現裸機多任務

    時間片+狀態機實現裸機多任務注:上述偽多任務是按個人理解命名的,實際上在裸機中跑的還是單線程,只是效果看上去是多線程。時間片輪詢方式是把M
    發表于 01-18 10:37 ?32次下載
    時間片輪詢+狀態機<b class='flag-5'>實現</b><b class='flag-5'>裸機</b><b class='flag-5'>多任務</b>

    單片機裸機實現隊列功能的方案

    單片機裸機實現隊列功能的方案
    的頭像 發表于 10-17 14:34 ?350次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>