MSP430 时钟的初始化和GPIO

2019-07-26 16:24发布

MSP430时钟:
1、在MSP430单片机中一共有三个或四个时钟源
(1)LFXT1CLK,为低速/高速晶振源,通常接32.768kHz,也可以接(400kHz~16Mhz);
(2)XT2CLK,可选高频振荡器,外接标准高速晶振,通常是接8Mhz,也可以接(400kHz~16Mhz);     
(3)DCOCLK,数控振荡器,为内部晶振,由RC震荡回路构成;
(4)VLOCLK,内部低频振荡器,12kHz标准振荡器。
2、在MSP430单片机内部一共有三个时钟系统
(1)ACLK,Auxiliary Clock,辅助时钟,通常由LFXT1CLK或VLOCLK作为时钟源,可以通过软件控制更改时钟的分频系数;   
(2)MCLK,Master Clock,系统主时钟单元,为系统内核提供时钟,它可以通过软件从四个时钟源选择;
(3)SMCLK,Sub-Main Clock,系统子时钟,也是可以由软件选择时钟源。
Basic Clock Module Registers(基础时钟寄存器)
DCO control register                        
DCOCTL
Basic clock system control 1            
     BCSCTL1
Basic clock system control 2            
      BCSCTL2
Basic clock system control 3               
   BCSCTL3
SFR interrupt enable register 1         
       IE1
SFR interrupt flag register 1            
     IFG1
3、MSP430的时钟设置包括3个寄存器,DCOCTL、BCSCTL1、BCSCTL2、BCSCTL3
DCOCTL,DCO控制寄存器,地址为56H,初始值为60H
DCO2
DCO1
DCO0
MOD4
MOD3
MOD2
MOD1
MOD0
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
一品人生
2019-07-27 08:42
五、BCSCTL2 |= SELM_3 + DIVM_3;           // MCLK = VLO/8
    BCSCTL2 |= SELM_3 + DIVM_3;           // MCLK = 32768/8
    BCSCTL2 |= SELM_0 + DIVM_3;          // MCLK = DCO
    BCSCTL2 |= SELM_0 + DIVM_3;          // MCLK = DCO/8
MSP430中有如下定义:
#define RSEL0                  (0x01)        
#define RSEL1                  (0x02)        
#define RSEL2                  (0x04)        
#define RSEL3                  (0x08)         
#define DIVA0                  (0x10)        
#define DIVA1                  (0x20)        
#define XTS                    (0x40)      

#define XT2OFF                 (0x80)        

#define DIVA_0                 (0x00)        
#define DIVA_1                 (0x10)        
#define DIVA_2                 (0x20)        
#define DIVA_3                 (0x30)        

#define DIVS0                  (0x02)        
#define DIVS1                  (0x04)        
#define SELS                   (0x08)      

#define DIVM0                  (0x10)        
#define DIVM1                  (0x20)        
#define SELM0                  (0x40)        
#define SELM1                  (0x80)        

#define DIVS_0                 (0x00)        
#define DIVS_1                 (0x02)        
#define DIVS_2                 (0x04)        
#define DIVS_3                 (0x06)        

#define DIVM_0                 (0x00)        
#define DIVM_1                 (0x10)        
#define DIVM_2                 (0x20)        
#define DIVM_3                 (0x30)        

#define SELM_0                 (0x00)   
#define SELM_1                 (0x40)   
#define SELM_2                 (0x80)   
#define SELM_3                 (0xC0)        

六、BCSCTL1 = CALBC1_1MHZ;                //设置值     (例3、4)
#ifndef __DisableCalData
SFR_8BIT(CALDCO_16MHZ);         
SFR_8BIT(CALBC1_16MHZ);         
SFR_8BIT(CALDCO_12MHZ);         
SFR_8BIT(CALBC1_12MHZ);         
SFR_8BIT(CALDCO_8MHZ);         
SFR_8BIT(CALBC1_8MHZ);         
SFR_8BIT(CALDCO_1MHZ);         
SFR_8BIT(CALBC1_1MHZ);         
#endif                              

关于SFR_8BIT的相关说明:
External references resolved by a device-specific linker command file
(外部引用解决的特定于设备的连接器命令文件)
#define SFR_8BIT(address)   extern volatile unsigned char address
#define SFR_16BIT(address)  extern volatile unsigned int address

一周热门 更多>