色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

教你一招——嵌入式C通用延時(shí)驅(qū)動(dòng)的編寫(xiě)方法

jf_35136247 ? 來(lái)源:jf_35136247 ? 作者:jf_35136247 ? 2023-07-05 10:27 ? 次閱讀

嵌入式C通用延時(shí)驅(qū)動(dòng)編程中,免不了要用到軟件延時(shí)。這一般通過(guò)循環(huán)語(yǔ)句實(shí)現(xiàn)。通過(guò)控制循環(huán)語(yǔ)句的循環(huán)次數(shù),便可獲得多種不同的延時(shí)時(shí)間。為了便于使用和提高程序代碼的復(fù)用率,一般又將循環(huán)語(yǔ)句封裝成一個(gè)帶參數(shù)的函數(shù),稱(chēng)為延時(shí)函數(shù)。如:

void wait(unsigned int n)

  {

    unsigned int i;

    for(i=0;i

}

延時(shí)函數(shù)的參數(shù)(形參,如上例中的變量 n ),即為控制循環(huán)語(yǔ)句循環(huán)次數(shù)的變量。這樣,在需要軟件延時(shí)的時(shí)候,只需要調(diào)用延時(shí)函數(shù),并將實(shí)際參數(shù)(實(shí)參,即n的實(shí)際值)代入形參,便可獲得與該實(shí)際參數(shù)對(duì)應(yīng)的延時(shí)時(shí)間。

這便是經(jīng)典的軟件延時(shí)的實(shí)現(xiàn)方法,非常簡(jiǎn)單。

但細(xì)心的讀者會(huì)發(fā)現(xiàn):延時(shí)函數(shù)的參數(shù)(比如上面的 n ),表征的是循環(huán)語(yǔ)句的“循環(huán)次數(shù)”,而不是“實(shí)際的延時(shí)時(shí)間”。一般來(lái)說(shuō),假令循環(huán)語(yǔ)句每循環(huán)一次的時(shí)間為 b(注意,單位是“步”,即一個(gè)時(shí)鐘周期,下同),函數(shù)調(diào)用、傳值和返回所需的固有時(shí)間為 a ,那么,給定參數(shù) n 時(shí),調(diào)用一次延時(shí)函數(shù)實(shí)際實(shí)現(xiàn)的延時(shí)時(shí)間應(yīng)為 t = a + b*n , ——而不是 n !

這就意味著,當(dāng)需要的延時(shí)時(shí)間為 t 時(shí),應(yīng)當(dāng)傳入的實(shí)參為 n = (t-a)/b,而不是 t 。這樣,為了獲得比較準(zhǔn)確的延時(shí),每次調(diào)用函數(shù)之前,都要手工計(jì)算實(shí)際參數(shù),很不方便;其次,當(dāng)需要改變晶振頻率的時(shí)候,程序中所有的延時(shí)參數(shù)都要重新計(jì)算,這顯然不利于程序的移植。

為了解決這兩個(gè)問(wèn)題,提高嵌入式C通用延時(shí)驅(qū)動(dòng)程序的可移植性,可以利用宏定義的方式,對(duì)延時(shí)函數(shù)進(jìn)行參數(shù)預(yù)修正。例如,對(duì)上面給出的wait延時(shí)函數(shù),可以使用下面的宏定義:

#define delay(n)   wait(     (   (n) - a  ) / b     )

這樣,調(diào)用 delay(t) 就意味著調(diào)用 wait( (t-a)/b ) ,從而得到時(shí)間為t的延時(shí),實(shí)現(xiàn)了參數(shù)與延時(shí)時(shí)間的同步,使用起來(lái)更加方便。

為了進(jìn)一步提高可移植性,使軟件延時(shí)能夠適應(yīng)不同的晶振頻率,應(yīng)當(dāng)順著上面的思路選擇尋找更優(yōu)方案。那么,應(yīng)當(dāng)怎樣做呢?其實(shí)方法很簡(jiǎn)單。假設(shè)調(diào)用某個(gè)延時(shí)函數(shù) wait_step(n) 可以獲得 n 步的延時(shí),又設(shè)工作頻率為 f1,即每步的運(yùn)行時(shí)間為 T=1/f1,則實(shí)際獲得的延時(shí)時(shí)間為 t= n*T=n/f1。當(dāng)工作頻率變?yōu)?f2=C*f1 時(shí),程序運(yùn)行速度快了C倍,為了仍然獲得時(shí)間為t的延時(shí),程序運(yùn)行的步數(shù)應(yīng)當(dāng)是原來(lái)的C倍,即要調(diào)用wait_step(n*C)。這樣,我們就可以定義下面的宏,來(lái)完成(n*C)的運(yùn)算:

#define   C    4
#define   delay_t(n)  wait_step( n*C )

第一行一般寫(xiě)在文件開(kāi)頭,當(dāng)修改晶振頻率時(shí),只需修改這一處就行了,不必在程序中對(duì)各個(gè) wait_step(n)的參數(shù)一一修改,大為方便。

按照上面介紹的方法,可以編寫(xiě)出準(zhǔn)確、易用、通用的延時(shí)驅(qū)動(dòng)。

下面給出一個(gè)完整的延時(shí)驅(qū)動(dòng)程序。這是筆者早期編寫(xiě)的版本,最近重新整理過(guò)。編繹器是ICC AVR V7.13A,運(yùn)行環(huán)境是AVR系列的所有芯片。使用的語(yǔ)句有三個(gè):

微秒級(jí)延時(shí):delay_us(n); 延時(shí)n微秒

毫秒級(jí)延時(shí):delay_ms(n); 延時(shí)n毫秒

秒級(jí)延時(shí): delay_s(n); 延時(shí)n秒 (最大65秒)

以上就是嵌入式C通用延時(shí)驅(qū)動(dòng)的編寫(xiě)方法了,希望能對(duì)編程人員有一定的幫助,如有更多技術(shù)問(wèn)題,可以電話聯(lián)系我們,直接獲取幫助,期待您的來(lái)電!

審核編輯:湯梓紅

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

    關(guān)注

    5090

    文章

    19176

    瀏覽量

    306965
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3637

    瀏覽量

    93914
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4345

    瀏覽量

    62885
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    教你如何學(xué)習(xí)嵌入式

    的幾種方式 熟悉嵌入式Linux中的任務(wù)間同步與通信編寫(xiě)個(gè)簡(jiǎn)單的管道程序?qū)崿F(xiàn)文件傳輸 編寫(xiě)個(gè)使用共享內(nèi)存的程序7、
    發(fā)表于 11-07 09:34

    教你一招如何分辨PCB板層數(shù)

    教你一招如何分辨PCB板層數(shù)
    發(fā)表于 04-23 06:36

    教你一招如何去實(shí)現(xiàn)傅立葉變換算法?

    教你一招如何去實(shí)現(xiàn)傅立葉變換算法?
    發(fā)表于 04-30 06:05

    教你一招怎樣去選擇合適的CPLD

    CPLD有哪些優(yōu)點(diǎn)?教你一招怎樣去選擇合適的CPLD
    發(fā)表于 05-06 09:48

    教你一招分分鐘實(shí)現(xiàn)頻譜儀帶寬的正確設(shè)置

    教你一招分分鐘實(shí)現(xiàn)頻譜儀帶寬的正確設(shè)置
    發(fā)表于 05-07 06:36

    教你一招定時(shí)器中斷該怎么辦?

    教你一招定時(shí)器中斷該怎么辦?
    發(fā)表于 05-14 06:34

    教你一招如何去選擇射頻濾波器?

    教你一招如何去選擇射頻濾波器?
    發(fā)表于 05-28 07:05

    求大神分享嵌入式C通用延時(shí)驅(qū)動(dòng)編寫(xiě)方法

    求大神分享嵌入式C通用延時(shí)驅(qū)動(dòng)編寫(xiě)方法
    發(fā)表于 09-24 06:46

    嵌入式C實(shí)現(xiàn)延時(shí)程序的不同變量的區(qū)別 幾種Linux嵌入式開(kāi)發(fā)環(huán)境的簡(jiǎn)單介紹

    嵌入式C實(shí)現(xiàn)延時(shí)程序的不同變量的區(qū)別 幾種Linux嵌入式開(kāi)發(fā)環(huán)境的簡(jiǎn)單介紹 ARM嵌入式開(kāi)發(fā)基礎(chǔ) 對(duì)話微軟MVP:走進(jìn)
    發(fā)表于 04-14 07:24 ?1682次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b>實(shí)現(xiàn)<b class='flag-5'>延時(shí)</b>程序的不同變量的區(qū)別 幾種Linux<b class='flag-5'>嵌入式</b>開(kāi)發(fā)環(huán)境的簡(jiǎn)單介紹

    嵌入式C通用延時(shí)驅(qū)動(dòng)編寫(xiě)方法

    嵌入式C編程中,免不了要用到軟件延時(shí)。這般通過(guò)循環(huán)語(yǔ)句實(shí)現(xiàn)。通過(guò)控制循環(huán)語(yǔ)句的循環(huán)次數(shù),便可獲得多種不同的延時(shí)時(shí)間。為了便于使用和提高程
    發(fā)表于 05-23 15:30 ?2275次閱讀

    C語(yǔ)言里如何編寫(xiě)精確的微量延時(shí)

    眾所周知,相比于其他編程語(yǔ)言,C語(yǔ)言在編寫(xiě)嵌入式編程中有著絕對(duì)的優(yōu)勢(shì)。但它總也有缺點(diǎn)的:它的時(shí)序性比較差,不容易編寫(xiě)精準(zhǔn)的延時(shí)。而在
    發(fā)表于 05-23 16:33 ?1689次閱讀

    教你如何編寫(xiě)優(yōu)質(zhì)的嵌入式C程序?

    市面上介紹C語(yǔ)言以及編程方法的書(shū)數(shù)目繁多,但對(duì)如何編寫(xiě)優(yōu)質(zhì)嵌入式C程序卻鮮有介紹,特別是對(duì)應(yīng)用于單片機(jī)、ARM7、Cortex-M3這類(lèi)微控
    的頭像 發(fā)表于 06-22 14:23 ?8225次閱讀
    <b class='flag-5'>教你</b>如何<b class='flag-5'>編寫(xiě)</b>優(yōu)質(zhì)的<b class='flag-5'>嵌入式</b><b class='flag-5'>C</b>程序?

    一招讓手機(jī)屏立馬干凈

    手機(jī)屏幕油膩還滿是手???教你一招,立馬干凈亮閃閃
    的頭像 發(fā)表于 08-27 17:26 ?4626次閱讀

    如何編寫(xiě)優(yōu)質(zhì)的嵌入式C程序?

    1、簡(jiǎn)介市面上介紹C語(yǔ)言以及編程方法的書(shū)數(shù)目繁多,但對(duì)如何編寫(xiě)優(yōu)質(zhì)嵌入式C程序卻鮮有介紹,特別是對(duì)應(yīng)用于單片機(jī)、ARM7、Cortex-M3
    的頭像 發(fā)表于 03-17 09:44 ?1880次閱讀
    如何<b class='flag-5'>編寫(xiě)</b>優(yōu)質(zhì)的<b class='flag-5'>嵌入式</b><b class='flag-5'>C</b>程序?

    哪些晶體、諧振器和振蕩器可旋轉(zhuǎn)180°使用?一招教你快速識(shí)別

    哪些晶體、諧振器和振蕩器可旋轉(zhuǎn)180°使用?一招教你快速識(shí)別
    的頭像 發(fā)表于 12-05 16:37 ?426次閱讀
    哪些晶體、諧振器和振蕩器可旋轉(zhuǎn)180°使用?<b class='flag-5'>一招</b>兒<b class='flag-5'>教你</b>快速識(shí)別
    主站蜘蛛池模板: 国产品无码一区二区三区在线 | 特黄特色大片免费播放器9 特黄特黄aaaa级毛片免费看 | 艳照门在线观看 | 国产精品久久久久久久久久免费 | 又黄又肉到湿的爽文 | 中文字幕在线观看亚洲日韩 | 九九国产精品成人AV麻豆 | 亚洲国产精品无码中文字满 | 冠希和阿娇13分钟在线视频 | 搞av.com | 儿子操妈妈视频 | 日日AV夜夜添久久奶无码 | 国产AV国片精品无套内谢无码 | 国产精品高清视频在线 | 国产成年人在线观看 | 国产精品久人妻精品 | 国产免费看黄的私人影院 | 久久草这里全是精品香蕉频线观 | 好男人在线观看视频观看高清视频免费 | 超碰国产人人做人人爽 | 久久久久夜 | 国产精品第一综合首页 | 久久久久综合网久久 | 亚洲高清在线mv | 少妇伦子伦精品无码 | 肉动漫3D卡通无修在线播放 | 男人一进一出桶女人视频 | md2.pud 麻豆传媒官网 | 人禽l交视频在线播放 视频 | jizz日本美女 | 日本一本二本三区免费免费高清 | 闺蜜撬开我的腿用黄瓜折磨我 | 午夜国产精品视频在线 | 色多多污污在线播放免费 | 久99re视频9在线观看 | 日日摸夜添夜夜夜添高潮 | 熟女久久久久久久久久久 | 国产a级午夜毛片 | 亚洲AV精品无码成人 | 欧美伦理片第7页 | 日产2021免费一二三四区在线 |