新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430內(nèi)部時(shí)鐘(DCO)頻率測(cè)量

        MSP430內(nèi)部時(shí)鐘(DCO)頻率測(cè)量

        作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò) 收藏
        時(shí)鐘電路——數(shù)字振蕩器(DCO

        本文引用地址:http://www.104case.com/article/201611/316441.htm

        電路按信號(hào)形式可分為數(shù)字和模擬。

        數(shù)字電路處理的是數(shù)字信號(hào)。數(shù)字電路又可分為組合邏輯電路與時(shí)序邏輯電路。時(shí)序電路可以完成組合電路的功能,反之則不成立。兩者的區(qū)別是時(shí)序電路與信號(hào)的時(shí)間有關(guān),即有一個(gè)時(shí)鐘信號(hào)。

        MSP430芯片中有3個(gè)時(shí)鐘源,內(nèi)部晶體振蕩器(DCO)、外部低速時(shí)鐘源(XT1)、外部高速時(shí)鐘源(XT2)。DCO的工作可以不要外部不要外部器件的支持,因此降低了電路的復(fù)雜程度,但是它是基于RC的工作原理,工作頻率不穩(wěn)定。XT1、XT2需要外接一個(gè)晶振,所以工作頻率穩(wěn)定。采用兩個(gè)外部晶振是讓一個(gè)工作在高頻一個(gè)工作在低頻,高頻晶體可以使程序執(zhí)行速度快,低速晶體使芯片功耗降低。

        //程序名稱: Clock_DCO.C

        //程序功能: 產(chǎn)生周期為 160 個(gè)系統(tǒng)時(shí)鐘周期的方波信號(hào),通過(guò)測(cè)量方波信號(hào)頻率獲得 DCO 時(shí)鐘頻率

        #include 430x14x.h> //包含名稱定義和對(duì)應(yīng)地址或數(shù)據(jù)的頭函數(shù)

        void int_clk(void); //聲明系統(tǒng)時(shí)鐘初始化函數(shù)

        void delay(void); //聲明延時(shí)函數(shù)

        int main(void) //主函數(shù)

        {

        int_clk( ); //系統(tǒng)時(shí)鐘初始化

        WDTCTL=WDTPW+WDTHOLD; //關(guān)閉看門狗

        //看門狗控制寄存器 WDTCTL 地址以及密碼位 WDTPW 內(nèi)容和

        //使能位 WDTHOLD 內(nèi)容在頭函數(shù) MSP430x14x.h 定義

        //WDTPW 內(nèi)容加 WDTHOLD 內(nèi)容向 WDTCTL 賦值

        P3SEL=0x00; //設(shè)置 P3 端口為數(shù)字輸入 / 輸出口

        P3DIR=0xff; //設(shè)置 P3 端口為輸出口

        while(1) //重復(fù)執(zhí)行

        {

        //產(chǎn)生周期為 160 個(gè)系統(tǒng)時(shí)鐘周期的方波

        P3OUT&=~BIT0; // P3.0 輸出低電平

        delay( ); //延時(shí) 75 個(gè)系統(tǒng)時(shí)鐘周期,保持方波信號(hào)低電平

        P3OUT|=BIT0; // P3.0 輸出高電平

        delay( ); //延時(shí) 75 個(gè)系統(tǒng)時(shí)鐘周期,保持方波信號(hào)高電平

        }

        }

        void delay(void) //延時(shí)函數(shù)

        {

        unsigned char i; //聲明實(shí)現(xiàn)延時(shí)的整型數(shù)據(jù)類型循環(huán)變量

        for(i=0; i<10; i++) //利用循環(huán)實(shí)現(xiàn)延時(shí)調(diào)整

        {

        _NOP( ); //產(chǎn)生一個(gè)MSP430系統(tǒng)時(shí)鐘周期的延時(shí)

        }

        }

        void int_clk(void) //系統(tǒng)時(shí)鐘初始化函數(shù)

        {

        unsigned char i; //聲明實(shí)現(xiàn)延時(shí)的循環(huán)變量

        DCOCTL = 0x00; //設(shè)置數(shù)字控制振蕩器的工作頻率***

        BCSCTL1 = 0x80; //關(guān)閉 XT2

        //設(shè)置數(shù)字控制振蕩器的工作頻率***

        BCSCTL2&=~DCOR; //選擇 MCLK 時(shí)鐘源為 DCOCLK,分頻比 1

        //選擇 SMCLK 時(shí)鐘源為 DCOCLK,分頻比 1

        //選擇芯片內(nèi)部 DCO 電阻

        do

        {

        IFG1&=~OFIFG; //清除振蕩器錯(cuò)誤標(biāo)志

        for(i=0; i<100; i++) //利用循環(huán)實(shí)現(xiàn)延時(shí)調(diào)整

        {

        _NOP( ); //產(chǎn)生一個(gè)MSP430系統(tǒng)時(shí)鐘周期的延時(shí)

        }

        }

        while((IFG1 & OFIFG)!=0); //如果標(biāo)志為1,繼續(xù)等待

        IFG1&=~OFIFG; //清除振蕩器錯(cuò)誤標(biāo)志

        }



        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 赫章县| 吉隆县| 苏州市| 霞浦县| 广州市| 永丰县| 社会| 开远市| 耒阳市| 康乐县| 福清市| 永福县| 冷水江市| 亳州市| 南康市| 长兴县| 民和| 白水县| 咸阳市| 资兴市| 凉山| 普格县| 云安县| 石狮市| 库伦旗| 棋牌| 连山| 平顶山市| 茌平县| 古交市| 财经| 绩溪县| 玉树县| 凌源市| 玉溪市| 科技| 长丰县| 琼海市| 南皮县| 胶南市| 丹棱县|