女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

單片機開發過程中5種延遲代碼執行的技術

科技觀察員 ? 來源:英銳恩 ? 作者:英銳恩 ? 2023-07-10 10:43 ? 次閱讀

單片機項目開發過程中,經常會出現一個有趣的問題,即弄清楚如何延遲代碼執行。有時,[單片機開發]人員可能只是希望有10微秒的延遲,以使I/O線在讀取之前穩定下來,或者可能希望在兩次讀取之間指定的時間間隔使它反跳。在本文中,我們將探討五種延遲代碼執行的技術。

一、條件循環

第一種技術是使用條件循環(可能是最常用和最簡單的)。條件循環延遲通常會使用for、while或do

while循環重復執行無操作(NOP)指令。例如:

for(int i = 0; i < 100000; i++)

{

__NOP();

}

條件延遲在緊要關頭可能會很有用,但很難準確或有效。如果開發人員要針對其他操作模式(例如低功耗操作)調整時鐘頻率,則延遲時間將完全不同。另外,總會有一個問題,那就是到底有多長時間?有人可能會認為這是100000條指令,但是每次通過循環時,都會有其他指令來檢查循環變量并遞增i。這些時序循環對于在任何生產代碼中使用來說都是不可預測的。

二、使用計時器

可以使用的第二種技術是利用單片機內置的硬件計時器。通常有幾種不同的硬件計時器可用于跟蹤系統時間,生成波形,捕獲輸入和通用。如果開發人員需要延遲(例如10微秒),則可以向硬件計時器加載表示10微秒的計數值。在這種情況下,計時器將設置為單次計時器。該代碼將啟動計時器并等待計時器溢出標志被設置,然后該標志將指示時間已過。

該代碼類似于以下內容:

Timer_Reload

(DELAY_VALUE );

while(Timer_Expired ()== false

{

__NOP ();

}

這種技術比條件循環要強大得多。它還具有更高的靈活性,并且可以更輕松地針對所需的延遲時間進行調整。實際上,可以在整個代碼中重用該API,以允許單個計時器用于所需的任何數量的延遲。

三、使用系統刻度(HAL示例)

在某些情況下,可能沒有專用的硬件計時器。在這種情況下,單片機開發人員可以利用板載系統時鐘來創建延遲。即使是裸機系統,通常也具有作為系統時鐘的后臺計時器,以便從單片機啟動的那一刻起,軟件就具有時間參考。通常,在典型系統中,將這些系統時鐘設置為每1或10毫秒發生一次。

系統通常使用一些API,這些API允許開發人員訪問當前的系統刻度,例如SysTick_Get()。開發人員可以利用此延遲來創建類似于以下內容的延遲:

TimeStart =

SysTick_Get();

do

{

TimeNow = SysTick_Get();

TimeDelta = TimeNow – TimeStart;

}while(TimeDelta < DelayTime);

單片機開發人員只需要確保如果他們這樣做,就不會陷入計算問題或其他潛在問題中,因此應檢查邊界條件。

四、使用RTOS產量函數

在使用實時操作系統(RTOS)的更高級的系統中,開發人員可以利用內置的RTOS

API調用來產生創建延遲的任務。例如,如果開發人員正在使用FreeRTOS,則在他們的任務中他們可以使用如下代碼:

VTaskDelay

(1);

此延遲功能將使任務產生一個RTOS滴答聲的當前任務。取決于配置,RTOS滴答可以設置為1毫秒或10。使用這樣的延遲機制可能會出現問題,因為任務將在該時間段內產生CPU,但不能保證一旦系統滴答時間到期,該任務將是最高優先級的任務!如果任務是準備運行的最高優先級任務,則該任務僅在延遲后立即運行,因此延遲時間可能會有些抖動。

五、使用RTOS對象

使用RTOS對象來延遲時間。如果你仔細查看自己喜歡的RTOS中的對象(例如信號量、互斥對象和隊列)的API,你會注意到大多數等待等待的API調用還將包含延遲時間。此延遲時間也可導致應用程序延遲。

與RTOS對象相關的是,大多數RTOS都還包含軟定時器。這些是基于軟件的計時器,是從運行中的硬件計時器觸發的。然后,可以將與上面第一、二點中顯示的技術相似的技術與這些軟計時器一起使用,以在代碼執行中產生延遲。

單片機開發人員想要延遲代碼執行,可以使用多種不同的技術,使用的技術將取決于系統中可用的軟件和硬件資源。然后,開發人員可以決定他們要使用的解決方案的復雜程度??傊?,肯定有很多種機制可以幫助將代碼執行延遲一定的時間。

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

    關注

    6063

    文章

    44915

    瀏覽量

    646905
  • 單片機開發
    +關注

    關注

    3

    文章

    460

    瀏覽量

    20069
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    單片機開發過程中的常見問題

    單片機在組裝與開發過程中總是會出現一些問題,導致過程不是那么順利的完成。今日分享一些單片機常見問題的解決辦法1.單片機EN8F609兼容PI
    發表于 09-11 16:33

    開發單片機過程中有哪些步驟

    就兩個步驟,程序代碼的編寫與程序的燒錄(將單片機程序寫入開發板的ROM),分別在以下兩款軟件實現:Keil
    發表于 07-13 09:18

    請問atmel32單片機開發過程中常見的問題有哪些?

    請問atmel32單片機開發過程中常見的問題有哪些?
    發表于 09-18 06:43

    單片機開發過程中按鍵處理函數的實現方法

    **.**單片機開發過程中按鍵處理函數的實現?**.**方法一? 這種方法在單片機處理反應不夠好,當按鍵交替按時,會表現的不夠好?voidKey_Scan(void){uint8_t
    發表于 11-22 06:03

    單片機開發過程中的Flash

    Flash在我們生活無處不在,比如:U盤、固態硬盤、SD卡、內存卡等。同時,在單片機開發過程中也會遇到各種各樣的Flash,...
    發表于 12-09 08:00

    談一下在單片機開發過程中使用過的幾種調試方案

    單片機開發過程中,有一個好的調試系統可以極大地提高開發效率。舉個例子,做平衡系統時調節PID參數,你會選擇 修改參數–>編譯–>燒錄–>運行–>修改…,還是做一個功能可以一邊
    發表于 01-14 08:25

    單片機開發過程中怎樣使用定時器進行定時及超時處理呢

    單片機開發過程中怎樣使用定時器進行定時及超時處理呢?
    發表于 01-21 07:33

    單片機開發過程中硬件調試技巧

    本文結合作者在單片機開發過程中體會,討論硬件調試的技巧。當硬件設計從布線到焊接安裝完成之后,就開始進入硬件調試階段
    發表于 06-01 16:09 ?1.5w次閱讀

    PIC單片機開發的幾個問題

    PIC單片機在國內日益流行,本文介紹Microchip PIC系列單片機開發過程中軟、硬件設計的一些經驗、技巧。
    發表于 06-18 13:46 ?2659次閱讀

    AVR單片機例程

    電子開發過程中的資料-AVR單片機的學習例程
    發表于 11-03 15:50 ?0次下載

    單片機的主要作用_單片機開發過程

    本文首先介紹了單片機的主要作用,其次闡述了單片機的應用,最后介紹了單片機開發過程。
    發表于 08-26 09:44 ?1.4w次閱讀

    讓你在單片機開發過程變得簡單

    這是一本關于Intel 0C51以及廣大的51系列單片機的書這本書介紹給讀者一些新的技術使你的8051工程和開發過程變得簡單請注意這本書的目的可不是教你各種8051嵌入式系統的解決方法。
    發表于 03-16 14:07 ?7次下載
    讓你在<b class='flag-5'>單片機</b><b class='flag-5'>開發過程</b>變得簡單

    .單片機開發過程中按鍵處理函數的實現

    **.**單片機開發過程中按鍵處理函數的實現? **.**方法一? 這種方法在單片機處理反應不夠好,當按鍵交替按時,會表現的不夠好?void Key_Scan(void
    發表于 11-13 12:36 ?16次下載
    .<b class='flag-5'>單片機</b><b class='flag-5'>開發過程中</b>按鍵處理函數的實現

    基于Energia的MPS430單片機開發過程中的問題

    基于Energia的MPS430單片機開發過程中的問題
    發表于 11-19 17:21 ?9次下載
    基于Energia的MPS430<b class='flag-5'>單片機</b><b class='flag-5'>開發過程中</b>的問題

    這幾個單片機技巧如果不了解,真的很難再進階!

    單片機開發過程中,我們總被代碼執行效率、單片機器件的性能、成本困擾著,以至于用很長時間思考這類問題,這是難以避免的,畢竟
    發表于 12-08 09:21 ?4次下載
    這幾個<b class='flag-5'>單片機</b>技巧如果不了解,真的很難再進階!