在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)開發(fā)過程中5種延遲代碼執(zhí)行的技術(shù)

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

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

一、條件循環(huán)

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

while循環(huán)重復(fù)執(zhí)行無操作(NOP)指令。例如:

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

{

__NOP();

}

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

二、使用計(jì)時器

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

該代碼類似于以下內(nèi)容:

Timer_Reload

(DELAY_VALUE );

while(Timer_Expired ()== false

{

__NOP ();

}

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

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

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

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

TimeStart =

SysTick_Get();

do

{

TimeNow = SysTick_Get();

TimeDelta = TimeNow – TimeStart;

}while(TimeDelta < DelayTime);

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

四、使用RTOS產(chǎn)量函數(shù)

在使用實(shí)時操作系統(tǒng)(RTOS)的更高級的系統(tǒng)中,開發(fā)人員可以利用內(nèi)置的RTOS

API調(diào)用來產(chǎn)生創(chuàng)建延遲的任務(wù)。例如,如果開發(fā)人員正在使用FreeRTOS,則在他們的任務(wù)中他們可以使用如下代碼:

VTaskDelay

(1);

此延遲功能將使任務(wù)產(chǎn)生一個RTOS滴答聲的當(dāng)前任務(wù)。取決于配置,RTOS滴答可以設(shè)置為1毫秒或10。使用這樣的延遲機(jī)制可能會出現(xiàn)問題,因?yàn)槿蝿?wù)將在該時間段內(nèi)產(chǎn)生CPU,但不能保證一旦系統(tǒng)滴答時間到期,該任務(wù)將是最高優(yōu)先級的任務(wù)!如果任務(wù)是準(zhǔn)備運(yùn)行的最高優(yōu)先級任務(wù),則該任務(wù)僅在延遲后立即運(yùn)行,因此延遲時間可能會有些抖動。

五、使用RTOS對象

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

與RTOS對象相關(guān)的是,大多數(shù)RTOS都還包含軟定時器。這些是基于軟件的計(jì)時器,是從運(yùn)行中的硬件計(jì)時器觸發(fā)的。然后,可以將與上面第一、二點(diǎn)中顯示的技術(shù)相似的技術(shù)與這些軟計(jì)時器一起使用,以在代碼執(zhí)行中產(chǎn)生延遲。

單片機(jī)開發(fā)人員想要延遲代碼執(zhí)行,可以使用多種不同的技術(shù),使用的技術(shù)將取決于系統(tǒng)中可用的軟件和硬件資源。然后,開發(fā)人員可以決定他們要使用的解決方案的復(fù)雜程度。總之,肯定有很多種機(jī)制可以幫助將代碼執(zhí)行延遲一定的時間。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6037

    文章

    44558

    瀏覽量

    635356
  • 單片機(jī)開發(fā)
    +關(guān)注

    關(guān)注

    3

    文章

    460

    瀏覽量

    19734
收藏 人收藏

    評論

    相關(guān)推薦

    單片機(jī)開發(fā)過程中的常見問題

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

    開發(fā)單片機(jī)過程中有哪些步驟

    就兩個步驟,程序代碼的編寫與程序的燒錄(將單片機(jī)程序?qū)懭?b class='flag-5'>開發(fā)板的ROM),分別在以下兩款軟件實(shí)現(xiàn):Keil
    發(fā)表于 07-13 09:18

    請問atmel32單片機(jī)開發(fā)過程中常見的問題有哪些?

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

    單片機(jī)開發(fā)過程中按鍵處理函數(shù)的實(shí)現(xiàn)方法

    **.**單片機(jī)開發(fā)過程中按鍵處理函數(shù)的實(shí)現(xiàn)?**.**方法一? 這種方法在單片機(jī)處理反應(yīng)不夠好,當(dāng)按鍵交替按時,會表現(xiàn)的不夠好?voidKey_Scan(void){uint8_t
    發(fā)表于 11-22 06:03

    單片機(jī)開發(fā)過程中的Flash

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

    談一下在單片機(jī)開發(fā)過程中使用過的幾種調(diào)試方案

    單片機(jī)開發(fā)過程中,有一個好的調(diào)試系統(tǒng)可以極大地提高開發(fā)效率。舉個例子,做平衡系統(tǒng)時調(diào)節(jié)PID參數(shù),你會選擇 修改參數(shù)–>編譯–>燒錄–>運(yùn)行–>修改…,還是做一個功能可以一邊
    發(fā)表于 01-14 08:25

    單片機(jī)開發(fā)過程中怎樣使用定時器進(jìn)行定時及超時處理呢

    單片機(jī)開發(fā)過程中怎樣使用定時器進(jìn)行定時及超時處理呢?
    發(fā)表于 01-21 07:33

    單片機(jī)開發(fā)過程中硬件調(diào)試技巧

    本文結(jié)合作者在單片機(jī)開發(fā)過程中體會,討論硬件調(diào)試的技巧。當(dāng)硬件設(shè)計(jì)從布線到焊接安裝完成之后,就開始進(jìn)入硬件調(diào)試階段
    發(fā)表于 06-01 16:09 ?1.4w次閱讀

    PIC單片機(jī)開發(fā)的幾個問題

    PIC單片機(jī)在國內(nèi)日益流行,本文介紹Microchip PIC系列單片機(jī)開發(fā)過程中軟、硬件設(shè)計(jì)的一些經(jīng)驗(yàn)、技巧。
    發(fā)表于 06-18 13:46 ?2561次閱讀

    AVR單片機(jī)例程

    電子開發(fā)過程中的資料-AVR單片機(jī)的學(xué)習(xí)例程
    發(fā)表于 11-03 15:50 ?0次下載

    單片機(jī)的主要作用_單片機(jī)開發(fā)過程

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

    讓你在單片機(jī)開發(fā)過程變得簡單

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

    .單片機(jī)開發(fā)過程中按鍵處理函數(shù)的實(shí)現(xiàn)

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

    基于Energia的MPS430單片機(jī)開發(fā)過程中的問題

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

    這幾個單片機(jī)技巧如果不了解,真的很難再進(jìn)階!

    單片機(jī)開發(fā)過程中,我們總被代碼執(zhí)行效率、單片機(jī)器件的性能、成本困擾著,以至于用很長時間思考這類問題,這是難以避免的,畢竟
    發(fā)表于 12-08 09:21 ?4次下載
    這幾個<b class='flag-5'>單片機(jī)</b>技巧如果不了解,真的很難再進(jìn)階!
    主站蜘蛛池模板: 欧美性天天影院| 国产美女视频一区二区三区| 国产精品你懂得| 日本超黄视频| 日本不卡在线视频高清免费 | 亚洲最大成人| 理论片人人51| 人人干天天操| 久99频这里只精品23热 视频| 日本三级视频在线观看| 小泽玛利亚在线观看123| 精品欧美| 日本黄色三级视频| 天天色综合3| 久久国产精品无码网站| 噜噜吧噜噜色| 久久久久久久成人午夜精品福利| 国内夫妇交换性经过实录| 看全色黄大色大片免费久久怂| 欧美成人免费草草影院| 曰本福利写真片视频在线| 国产性色视频| 我被黑人巨大开嫩苞在线观看| 四虎国产精品免费久久影院| 一本在线免费视频| 欧美成人h精品网站| 久久久久99精品成人片三人毛片| 精品久久香蕉国产线看观看亚洲| 一级毛片免费毛片一级毛片免费 | 在线视频亚洲一区| 欧美一级特黄aaaaaaa在线观看| 日韩精品在线第一页| 在线亚洲欧美性天天影院| 国产高清在线| 亚洲日本一区二区三区在线不卡| 欧美爱爱网| 超级碰碰青草免费视频92| 色妞网| 全午夜免费一级毛片| 香蕉视频色版在线观看| 午夜久久久久久网站|