单片机MSP430入门--理论③--时钟模块-DCO和BCS寄存器

单片机MSP430入门--理论③--时钟模块-DCO和BCS寄存器

上期大概给大家汇总介绍了,MSP430时钟模块的3个晶振和3个主要时钟信号,要知道时钟是单片机的脉搏,如果时钟没设置好,单片机将无法工作

本期将重点介绍下,在MSP430环境下的时钟寄存器BCSCTL1,BCSCTL2,以及他们的设置方法

1.0 DCOCTL,DCO寄存控制器

DCO0-DCO2(BIT5-7):定义了8种频率,而频率由直流发生器的不同电流来定义

MOD0-MOD4(BIT0-4):频率的微调

1.1 DCO的调节:

①设置BCSCTL2的DCOR的bit来选择是1为外部电阻还是0为内部电阻,以确定一个基准频率,默认为0

②通过BCSCTL1寄存器的RSELx来进行分频,确定16种时钟频率;

③通过DCOCTL寄存器中,DCOx在标称频率基础上分段粗调,选择频率;

④通过DCOCTL寄存器中,MODx的值对频率进行细调,选择DCOx与DCOx+1之间的频率;

示例:

//DCOCTL初始值为60H,即DCOCTL |= DCO1 +DCO2;

DCOCTL |= DCO0 + DCO1 +DCO2 ;//MAX DCO

//MOD0-MOD4:频率的微调一般保持默认即可

//系统默认BCSCTL1寄存器的RSELx =4

2.0 BCSCTL1(Basic Clock System Control 1)寄存器,地址58H,初始值84H

XT2OFF:控制XT2振荡器的启停,0为开启,1为关闭

XTS:选择LFXT1工作在低频晶体模式(XTS=0)还是高频晶体模式(XTS=1)

DIVA0-DIVA1:选择ACLK的分频系数,当DIVA0跟DIVA1分别组合成0,1,2,3时,对应的ACLK分频系数为1,2,4,8

RSELx(bit0-bit3):当DCOR=1使用外部电阻时,忽略RSEL3,当RSELx=0为最小频率,当为7时为最高

示例:

BCSCTL1 &= ~XT2OFF; //清OSCOFF/XT2

  do

  {

    IFG1 &= ~OFIFG; //清OFIFG

    OSC_Delay = 255; //设定延时时间

    while(OSC_Delay--); //延时等待约50us

  }

  while(IFG1&OFIFG); //再次检查OFIFG,直至等于0,才表示已经起振

  BCSCTL1 |= RSEL0 +RSEL1 +RSEL2; //三个位111就为7,maxRSEL

  BCSCTL1 |= DIVA_2; //对ACLK进行2分频

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容