主要代码
#include <msp430.h>
#include "./USART/usart.h"
#include "./TIM/tim.h"
void sys_clock_conf(uint8_t dco)
{
uint16_t dco_val=0;
dco_val=dco*31.25-1;
UCSCTL3 = SELREF_2; //设置 DCO FLL 引用 = REFO
UCSCTL4 |= SELA_2; // 设置 ACLK = REFO
UCSCTL0 = 0x0000; //设置尽可能低的DCOx,MODx
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);// 清除 XT2、XT1、DCO 故障标志
SFRIFG1 &= ~OFIFG; // 清除故障标志
}while (SFRIFG1&OFIFG); // 测试振荡器故障标志
__bis_SR_register(SCG0); //禁用 FLL 控制环路
UCSCTL1 = DCORSEL_5; // 选择 DCO 范围 16MHz 操作
UCSCTL2 |=dco_val; // 将 DCO 乘法器设置为 8MHz
// (249 + 1) * 32768 = 8MHz 公式:fDCOCLKDIV= (N + 1) × (fFLLREFCLK÷ n)
__bic_SR_register(SCG0); //启动FLL 控制环路
__delay_cycles(250000);
}
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
sys_clock_conf(8);//设置系统时钟为8Mhz
__bis_SR_register(GIE);//中断使能
while(1)
{
}
}