作者:BerenCamlost
本文针对于南京理工大学的王宏波老师的MSP430单片机原理与应用课程,请在复习时使用。
参考资料:
- 王宏波老师的PPT
- MSP430F6638用户手册
- 王宏波老师实验教程
本章最新更新日期:2018.12.22
第二章 UCS寄存器
2.1 UCSCTL0
bit | Field | Description |
---|---|---|
12-8 | DCO | DCO输出频率范围控制参数 |
7-3 | MOD | DCO输出频率范围控制参数 |
上述的两个区域并不需要设置,在配置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
上述两个是关于锁频环FFL的控制寄存器,FLL示意图如下,务必背过此图
2.3.3 FLL的计算公式
2.3.4 寄存器中各个位的解释
Field | Description | 默认值 | 默认值对应的分频系数 |
---|---|---|---|
FLLD | 图中的FLLD分频,公式中的D | 1H | 2 |
FLLN | 图中的FLLN分频,公式中的N,实际的分频系数是N+1 | 1FH | 31+1 |
FLLREFDLV | 图中的FLLREFDLV分频,公式中的n | 0 | 1 |
2.4 UCSCTL4
2.4.1 寄存器示意图
- 这个寄存器的作用是,为SMCLK、ACLK、MCLK选取信号源。在UCS的实验中几乎是必用的。
2.4.2 寄存器功能
BIT | Field | Description | 默认值 | 默认值对应的选项 |
---|---|---|---|---|
10-8 | SELA | ACLK时钟源选择 | 0 | XT1CLK |
6-4 | SELS | SMCLK时钟源选择 | 4 | DCOCLKDIV |
2–0 | SELM | MCLK时钟源选择 | 4 | DCOCLKDIV |
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
Name | Description | 默认 |
---|---|---|
OFIE | 振荡器故障中断使能 | 0 |
OFIFG | 振荡器失效中断标志位 | 1 |
WDTIE | 看门狗在间隔定时器模式下的中断使能 | 0 |
WDTIFG | 看门狗中断标志位 | 0 |
*2.8 BAKCTL
- LOCKBAK:在使用XT1CLK的时候,需要先将这一位置0来解锁XT1CLK的引脚。
while(BAKCTL & LOCKBAK) // Unlock XT1 pins
BAKCTL &= ~(LOCKBAK);