新闻中心

EEPW首页>嵌入式系统>设计应用> MSP430内部时钟(DCO)频率测量

MSP430内部时钟(DCO)频率测量

作者: 时间:2016-11-13 来源:网络 收藏
时钟电路——数字振荡器(DCO

本文引用地址://m.amcfsurvey.com/article/201611/316441.htm

电路按信号形式可分为数字和模拟。

数字电路处理的是数字信号。数字电路又可分为组合逻辑电路与时序逻辑电路。时序电路可以完成组合电路的功能,反之则不成立。两者的区别是时序电路与信号的时间有关,即有一个时钟信号。

MSP430芯片中有3个时钟源,内部晶体振荡器(DCO)、外部低速时钟源(XT1)、外部高速时钟源(XT2)。DCO的工作可以不要外部不要外部器件的支持,因此降低了电路的复杂程度,但是它是基于RC的工作原理,工作频率不稳定。XT1、XT2需要外接一个晶振,所以工作频率稳定。采用两个外部晶振是让一个工作在高频一个工作在低频,高频晶体可以使程序执行速度快,低速晶体使芯片功耗降低。

//程序名称: Clock_DCO.C

//程序功能: 产生周期为 160 个系统时钟周期的方波信号,通过测量方波信号频率获得 DCO 时钟频率

#include 430x14x.h> //包含名称定义和对应地址或数据的头函数

void int_clk(void);//声明系统时钟初始化函数

void delay(void);//声明延时函数

int main(void)//主函数

{

int_clk( );//系统时钟初始化

WDTCTL=WDTPW+WDTHOLD;//关闭看门狗

//看门狗控制寄存器 WDTCTL 地址以及密码位 WDTPW 内容和

//使能位 WDTHOLD 内容在头函数 MSP430x14x.h 定义

//WDTPW 内容加 WDTHOLD 内容向 WDTCTL 赋值

P3SEL=0x00;//设置 P3 端口为数字输入 / 输出口

P3DIR=0xff;//设置 P3 端口为输出口

while(1)//重复执行

{

//产生周期为 160 个系统时钟周期的方波

P3OUT&=~BIT0;// P3.0 输出低电平

delay( );//延时 75 个系统时钟周期,保持方波信号低电平

P3OUT|=BIT0;// P3.0 输出高电平

delay( );//延时 75 个系统时钟周期,保持方波信号高电平

}

}

void delay(void)//延时函数

{

unsigned char i;//声明实现延时的整型数据类型循环变量

for(i=0; i<10; i++)//利用循环实现延时调整

{

_NOP( );//产生一个MSP430系统时钟周期的延时

}

}

void int_clk(void)//系统时钟初始化函数

{

unsigned char i;//声明实现延时的循环变量

DCOCTL = 0x00;//设置数字控制振荡器的工作频率***

BCSCTL1 = 0x80;//关闭 XT2

//设置数字控制振荡器的工作频率***

BCSCTL2&=~DCOR;//选择 MCLK 时钟源为 DCOCLK,分频比 1

//选择 SMCLK 时钟源为 DCOCLK,分频比 1

//选择芯片内部 DCO 电阻

do

{

IFG1&=~OFIFG;//清除振荡器错误标志

for(i=0; i<100; i++)//利用循环实现延时调整

{

_NOP( );//产生一个MSP430系统时钟周期的延时

}

}

while((IFG1 & OFIFG)!=0);//如果标志为1,继续等待

IFG1&=~OFIFG;//清除振荡器错误标志

}



评论


技术专区

关闭