在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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)用 > LM3S9b96 系統(tǒng)延時(shí)和計(jì)數(shù)延時(shí)

            LM3S9b96 系統(tǒng)延時(shí)和計(jì)數(shù)延時(shí)

            作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò) 收藏
            使用9b96芯片,免不了用到延遲,例如:讓LED閃爍。于是,出現(xiàn)延時(shí)時(shí)間的問(wèn)題。
            下面是兩種常見(jiàn)的延時(shí)方式:
            1. 系統(tǒng)延時(shí):這是9b96芯片的固有的,用其API函數(shù)即可搞定,并且定時(shí)時(shí)間比較精確。

            函數(shù)原型:
            void SysCtlDelay (unsigned long ulCount)
            參數(shù):
            ulCount 是要執(zhí)行的延時(shí)循環(huán)反復(fù)的次數(shù)。
            描述:
            該函數(shù)提供了一個(gè)產(chǎn)生恒定長(zhǎng)度延時(shí)的方法。它是用用匯編寫的,以保持跨越工具鏈的
            延時(shí)一致,從而避免了在應(yīng)用上依據(jù)工具鏈來(lái)調(diào)節(jié)延時(shí)的要求。
            循環(huán)占用3個(gè)周期/循環(huán)。
            返回:
            無(wú)。

            本文引用地址:http://www.biyoush.com/article/201611/317005.htm2. 計(jì)數(shù)延時(shí):粗略延時(shí)方法。

            void Delay(unsigned long nCount)
            {
            for(; nCount != 0; nCount--);
            }

            下面是一個(gè)LED閃爍的例子:

            #include "inc/hw_memmap.h"
            #include "inc/hw_types.h"
            #include "driverlib/gpio.h"
            #include "driverlib/sysctl.h"

            /* 用于調(diào)試 PF1 <-> LED -----------------------------------------------------*/
            #define LED_PERIPH SYSCTL_PERIPH_GPIOF
            #define LED_PORT GPIO_PORTF_BASE
            #define LED_PIN GPIO_PIN_1
            #define LED_OFF 1 << 1
            #define LED_ON ~(1 << 1) // 低電平點(diǎn)亮LED


            void Delay(unsigned long nCount)
            {
            for(; nCount != 0; nCount--);
            }


            int main(void)
            {
            // Set the clocking to run directly from the crystal.
            SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);

            SysCtlPeripheralEnable(LED_PERIPH); // 使能LED所在的GPIO端口

            GPIOPinTypeGPIOOutput(LED_PORT, LED_PIN); // 設(shè)置LED所在管腳為輸出

            while (1)
            {
            GPIOPinWrite(LED_PORT, LED_PIN, LED_ON); // 點(diǎn)亮LED
            Delay(0xfff); // 實(shí)驗(yàn)測(cè)得延時(shí)2.5ms
            GPIOPinWrite(LED_PORT, LED_PIN, LED_OFF); // 熄滅LED
            Delay(0xfff); // 實(shí)驗(yàn)測(cè)得延時(shí)2.5ms

            /*
            GPIOPinWrite(LED_PORT, LED_PIN, LED_ON); // 點(diǎn)亮LED
            SysCtlDelay(SysCtlClockGet() / 3000); // 精確延時(shí)1ms
            GPIOPinWrite(LED_PORT, LED_PIN, LED_OFF); // 熄滅LED
            SysCtlDelay(SysCtlClockGet() / 3000); // 精確延時(shí)1ms
            */
            }
            }

            系統(tǒng)時(shí)鐘設(shè)置為16M,用示波器測(cè)得兩種延時(shí)方法的時(shí)間:
            提示:在系統(tǒng)時(shí)鐘為16M的情況下,大家可以直接使用下面延時(shí)時(shí)間。
            1) SysCtlDelay(SysCtlClockGet() / 3); // 精確延時(shí)1000ms
            2) SysCtlDelay(SysCtlClockGet() / 30); // 精確延時(shí)100ms
            3) SysCtlDelay(SysCtlClockGet() / 300); // 精確延時(shí)10ms
            4) SysCtlDelay(SysCtlClockGet() / 3000); // 精確延時(shí)1ms
            5) SysCtlDelay((SysCtlClockGet() / 3000) * 2); // 精確延時(shí)2ms
            6) Delay(0xf); // 實(shí)驗(yàn)測(cè)得延時(shí)11us
            7) Delay(0xff); // 實(shí)驗(yàn)測(cè)得延時(shí)160.7us
            8) Delay(0xfff); // 實(shí)驗(yàn)測(cè)得延時(shí)2.5ms
            9) Delay(0xffff); // 實(shí)驗(yàn)測(cè)得延時(shí)40.94ms
            a) Delay(0xfffff); // 實(shí)驗(yàn)測(cè)得延時(shí)657.4ms
            b) Delay(0xffffff); // 實(shí)驗(yàn)測(cè)得延時(shí)10.49s
            重點(diǎn):1) 計(jì)數(shù)延時(shí)時(shí)間與系統(tǒng)時(shí)鐘頻率有關(guān),如果用PLL將系統(tǒng)時(shí)鐘設(shè)置成50M,其延時(shí)時(shí)間變短。
            2)系統(tǒng)延時(shí)時(shí)間與系統(tǒng)時(shí)鐘頻率無(wú)關(guān),即使將用PLL將系統(tǒng)時(shí)鐘設(shè)置成50M,其延時(shí)時(shí)間不變。
            系統(tǒng)時(shí)鐘16M50M
            計(jì)數(shù)延時(shí):Delay(0xfff);2.5ms819us
            系統(tǒng)延時(shí):SysCtlDelay(SysCtlClockGet() / 3000);1ms1ms

            推薦:系統(tǒng)延時(shí)方法更方便些,我們可以將其封裝成一個(gè)帶參函數(shù)。

            //*****************************************************************************
            //
            // 精確延時(shí)nms
            //
            //*****************************************************************************

            void Delay(DWORD nms)
            {
            SysCtlDelay((SysCtlClockGet() / 3000) * nms);
            }




            評(píng)論


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

            關(guān)閉