久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430內部時鐘(DCO)頻率測量

MSP430內部時鐘(DCO)頻率測量

作者: 時間:2016-11-13 來源:網絡 收藏
時鐘電路——數字振蕩器(DCO

本文引用地址:http://cqxgywz.com/article/201611/316441.htm

電路按信號形式可分為數字和模擬。

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

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

//程序名稱: Clock_DCO.C

//程序功能: 產生周期為 160 個系統(tǒng)時鐘周期的方波信號,通過測量方波信號頻率獲得 DCO 時鐘頻率

#include 430x14x.h> //包含名稱定義和對應地址或數據的頭函數

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

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

int main(void) //主函數

{

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

WDTCTL=WDTPW+WDTHOLD; //關閉看門狗

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

//使能位 WDTHOLD 內容在頭函數 MSP430x14x.h 定義

//WDTPW 內容加 WDTHOLD 內容向 WDTCTL 賦值

P3SEL=0x00; //設置 P3 端口為數字輸入 / 輸出口

P3DIR=0xff; //設置 P3 端口為輸出口

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

{

//產生周期為 160 個系統(tǒng)時鐘周期的方波

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

delay( ); //延時 75 個系統(tǒng)時鐘周期,保持方波信號低電平

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

delay( ); //延時 75 個系統(tǒng)時鐘周期,保持方波信號高電平

}

}

void delay(void) //延時函數

{

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

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

{

_NOP( ); //產生一個MSP430系統(tǒng)時鐘周期的延時

}

}

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

{

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

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

BCSCTL1 = 0x80; //關閉 XT2

//設置數字控制振蕩器的工作頻率***

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

//選擇 SMCLK 時鐘源為 DCOCLK,分頻比 1

//選擇芯片內部 DCO 電阻

do

{

IFG1&=~OFIFG; //清除振蕩器錯誤標志

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

{

_NOP( ); //產生一個MSP430系統(tǒng)時鐘周期的延時

}

}

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

IFG1&=~OFIFG; //清除振蕩器錯誤標志

}



評論


技術專區(qū)

關閉