MSP430单片机各种寄存器总结(2)——UCS
2019-10-18 来源:eefocus
第二章 UCS寄存器
2.1 UCSCTL0
上述的两个区域并不需要设置,在配置FFL的时候直接设置成0即可,FLL配置完成后会自动被设置。
2.2 UCSCTL1
DCORSEL,DCOCLK的频率范围设置参数,通过它来设置DCOCLK的频率范围,比如:设置DCOCLK的输出频率范围为0.64~14.0MHz
如下图所示,可知设置频率为0.64~14.0MHz的DCO需要将DCORSEL的值设置为3.
UCSCTL1 = DCORSEL_3; //DCORSEL_3是宏定义,为0x0030
2.3 UCSCTL2 & UCSCTL3
2.3.1 寄存器示意图
2.3.2 锁频环FLL
上述两个是关于锁频环FLL的控制寄存器,FLL示意图如下,务必背过此图
2.3.3 FLL的计算公式
2.3.4 寄存器中各个位的解释
2.4 UCSCTL4
2.4.1 寄存器示意图
这个寄存器的作用是,为SMCLK、ACLK、MCLK选取信号源。在UCS的实验中几乎是必用的。
2.4.2 寄存器功能
2.4.3 例程
SMCLK=MCLK=DCOCLK,ACLK=XT1CLK
//注意这里的赋值用“=”,而不是“|=”,区别不讲了,重复过很多次了
UCSCTL4 = SELA__XT1CLK + SELM__DCOCLK + SELS__DCOCLK;
/*
#define SELA__XT1CLK (0x0000)
#define SELS__DCOCLK (0x0030)
#define SELM__DCOCLK (0x0003)
*/
2.5 UCSCTL6
这个寄存器只需要知道两个位:
BITS FIELD Description 默认
8 XT2OFF 关闭XT2CLK 关闭
0 XT1CLK 关闭XT1CLK 关闭
注意,这里的关闭的条件是,该时钟信号没有被作为ACLK、SMCLK、MCLK、FLL参考时钟的时钟源。
2.6 UCSCTL7
振荡器故障标志位寄存器,如果想要稳定XT1CLK,需要将这个寄存器的相应区域置0(复位)。
例如下列程序:
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG); // Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
}while (SFRIFG1&OFIFG); // Test oscillator fault flag
* 2.7 SFRIE1 & SFRIFG1
*2.8 BAKCTL
LOCKBAK:在使用XT1CLK的时候,需要先将这一位置0来解锁XT1CLK的引脚。
while(BAKCTL & LOCKBAK) // Unlock XT1 pins
BAKCTL &= ~(LOCKBAK);