MSP430f6773单片机学习记录(MSP430F5XX/MSP430F6XX系列通用)

时钟模块:UCS

整个系统主要分为左右两大块——时钟源模块和时钟调整模块。

时钟源模块主要由XT1、内建时钟(DCO)、XT2用来产生时钟源,也就是时钟调整模块最终输出的时钟信号的基准信号。

时钟调整模块负责将源时钟信号选通、分频输出成系统使用的三大时钟信号——MCLK,ACLK和SMCLK,分别是系统的主时钟(供CPU使用),辅助时钟(可给外设模块使用,也可以从管脚引出),子系统时钟(外设模块时钟,可从管教引出)。

时钟调整模块的主要工作分为两步:选通、分频。

UCS上电默认状态

PUC(上电清除信号)后,UCS模块的默认状态如下:

(1)XT1处于LF模式作为XT1CLK时钟源。ACLK选通为XT1CLK。
(2)MCLK选通为DCOCLKDIV
(3)SMCLK选通为DCOCLKDIV
(4)FLL使能,且将XT1CLK作为FLL参考时钟。
(5)XIN和XOUT脚设置为通用IO,XIN和XOUT配置为XT1功能前,XT1保持禁用。
(6)如果可用的话,XT2IN和XT2OUT被设置为通用IO且保持禁止状态。

这里解释一下PUC

系统复位 POR与PUC

1.MSP430单片机复位逻辑图

可以看到,它在复位时会产生两个信号,一个是POR信号,一个是PUC信号。

POR信号叫做power-on reset。PUC信号叫做power-up clear。翻译成中文就是:POR为上电复位信号,PUC为上电清除信号。这两个信号都可以导致MSP430单片机发生复位中断。但是他们之间的级别是不一样的。

2. POR信号来源

POR信号的复位级别更高一些,POR信号主要来自于硬件:

※芯片上电;

※RST/NMI设置成复位模式,并在RST/NMI引脚上出现低电平信号;

※超级电压监视电路发现电压不稳。

3. PUC信号来源

POR信号的产生总会产生PUC信号,但PUC信号的发生不一定会产生POR信号。PUC信号是上电清除信号,产生PUC信号的情况有:

※发生POR信号;

※处于看门狗模式下,看门狗定时时间到;

※看门狗定时器写入错误的安全键值;

※FLASH存储器写入错误的安全键值;

※CPU从外设地址范围0H-01FF取数据。

 我的理解是:芯片上电时会产生POR(上电复位)信号,继而产生PUC(上电清除)信号

void System_Init(void)
{
    // Set up XT1
    UCSCTL6 &= ~(XT1OFF);                   // XT1 On
    UCSCTL6 |= XCAP_3;                      // Internal load cap 
    // Loop until XT1 fault flag is cleared
    do
    {
       UCSCTL7 &= ~(XT2OFFG | XT1LFOFFG | DCOFFG);  // Clear XT2,XT1,DCO fault flags
       SFRIFG1 &= ~OFIFG;                  // Clear fault flags
    } while (SFRIFG1 & OFIFG);             // Test oscillator fault flag 
    
  
    //Initialize DCO 
    __bis_SR_register(SCG0);               // Disable the FLL control loop
    UCSCTL0 = 0x0000;                      // Set lowest possible DCOx, MODx
    UCSCTL1 = DCORSEL_3;                   // Set RSELx 1.51~6.07MHZ; 
    UCSCTL2 = FLLD_1 |60;                 // Set DCO Multiplier for 2*(60+1)*32768 = 3.99MHz
    UCSCTL4 = 0x43;                      // SMCLK-DCOCLKDIV  MCLK-DCOCLK 
                                           // MCLK=DCOCLK=2*(60+1)*32768=3.99MHz
                                           // SMCLK=DCOCLKDIV = (60+1)*32768 = 1.99MHz 
                                                
    __bic_SR_register(SCG0);               // Enable the FLL control loop
}

void System_Unistall(void)
{
   UCSCTL6 &= XT1OFF;
   UCSCTL6 &= XCAP_3;                      // Internal load cap 
}
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值