在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 如何用好WinAVR里的延時(shí)函數(shù)

            如何用好WinAVR里的延時(shí)函數(shù)

            作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
            剛對(duì)WinAVR自帶的延時(shí)函數(shù)進(jìn)行一下研究,有些收獲,與大家分享,不對(duì)之處請(qǐng)斧正,謝謝。

            先看_delay_loop_1(uint8_t__count)函數(shù),從其函數(shù)注釋里面可以了解到,該函數(shù)用來(lái)延遲3個(gè)晶振時(shí)鐘周 期,不包括程序調(diào)用和退出該函數(shù)所花費(fèi)的時(shí)間。該函數(shù)的形參__count是一個(gè)8位的變量,由此,我們就可以根據(jù)系統(tǒng)采用的晶振頻率算出該函數(shù)最大的延 遲時(shí)間了:
            1MHz時(shí):MAX_DELAY_TIME=(1/1000000)*3*256=0.000768S=768uS
            8MHz時(shí):MAX_DELAY_TIME=(1/8000000)*3*256=0.000096S=96uS
            ............
            F_CPUMAX_DELAY_TIME=(1/F_CPU)*3*256
            依此類推。


            同樣再看_delay_loop_2(uint16_t__count)函數(shù),該函數(shù)延時(shí)4個(gè)晶振周期,形參是一個(gè)16位的變量,同樣 我們也可以算出該函數(shù)最大的延遲時(shí)間:
            1MHz時(shí):MAX_DELAY_TIME=(1/1000000)*4*65535=0.26214S=262.1mS
            8MHz時(shí):MAX_DELAY_TIME=(1/8000000)*4*65535=0.03277S=32.8mS
            ............
            F_CPUMAX_DELAY_TIME=(1/F_CPU)*4*65535
            依此類推。

            重要提示:_delay_loop_1(0)、_delay_loop_1(256)延時(shí)是一樣的?。?br />同理,_delay_loop_2(0)、_delay_loop_2(65536)延時(shí)也是一樣的?。∵@些函數(shù)的延時(shí)都是最長(zhǎng)的延時(shí)。

            重量級(jí)函數(shù)出 場(chǎng)>>>>>>>>>>>>>_delay_us()and_delay_ms()!?。?<<<<<<<<<<<<<<<<

            先說(shuō)_delay_us(double__us),不要以為該函數(shù)的形參是double形就為所欲為,隨便付值都不會(huì)溢出了,其實(shí)這個(gè) 函數(shù)的調(diào)用是有限制的,不然就會(huì)出現(xiàn)延時(shí)不對(duì)的情況。函數(shù)的注釋里說(shuō)明如下:

            Themaximalpossibledelayis768us/F_CPUinMHz.
            在1MHz時(shí)最大延時(shí)768us?。。?!

            也就是說(shuō)double__us這個(gè)值在1M系統(tǒng)時(shí)鐘時(shí)最大只能是768。如果大于768,比如這樣調(diào)用延時(shí)函數(shù) _delay_us(780)會(huì)怎么樣呢??那就會(huì)和調(diào)用_delay_loop_1(0)一樣的效果了!能延遲多少各位可以算出來(lái)。具體在各種系統(tǒng)時(shí)鐘 之下這個(gè)值是多少可以通過(guò)一個(gè)公式算出來(lái):
            MAX_VALUE=256*3000000/F_CPU

            同理,分析程序,可以知道_delay_ms(double__ms)函數(shù),在1MHz系統(tǒng)時(shí)鐘下其最大延時(shí)是262.14ms!在這 里也給出該函數(shù)的形參的最大值,調(diào)用此函數(shù)時(shí)的實(shí)參都不要大于這個(gè)值,大于這個(gè)限制值的話就和調(diào)用_delay_loop_2(0)同樣的延時(shí)效果!
            MAX_VALUE=65536*4000/F_CPU

            總結(jié)完畢!不正確之處還望各位不吝指正!謝謝


            關(guān)鍵詞: WinAVR延時(shí)函

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉