MSP430Ware使用筆記 初始化DCO至8MHz
1.平臺(tái)說明MSP430F5438。
2.ACLK選擇XT1,頻率為32.768K,MCLK和SMCLK選擇DCOCLKDIV,頻率為8000K。
//輔助時(shí)鐘ACLK32.768K
//系統(tǒng)時(shí)鐘子系統(tǒng)時(shí)鐘8000K
#include"inc/hw_memmap.h"
#include"ucs.h"
#include"wdt_a.h"
#include"gpio.h"
#include"sfr.h"
voidmain(void)
{
//停止看門狗
WDT_A_hold(WDT_A_BASE);
//P4.0保持輸出狀態(tài)
GPIO_setAsOutputPin(GPIO_PORT_P4,GPIO_PIN0);
//初始化P7.0和P7.1為復(fù)用功能
GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P7,GPIO_PIN0|GPIO_PIN1);
//啟動(dòng)XT1
UCS_LFXT1Start(UCS_BASE,UCS_XT1_DRIVE0,UCS_XCAP_3);
//DCO參考時(shí)鐘選擇XT1,選擇了默認(rèn)參數(shù)
//UCS_clockSignalInit(UCS_BASE,UCS_FLLREF,UCS_XT1CLK_SELECT,UCS_CLOCK_DIVIDER_1);
//DCO時(shí)鐘8MHz
//該函數(shù)第二個(gè)參數(shù)為系統(tǒng)工作頻率8000K,第三個(gè)參數(shù)為工作頻率/DCO參考頻率
UCS_initFLLSettle(UCS_BASE,8000,244);
//使能全局中斷
__bis_SR_register(GIE);
while(1)
{
//翻轉(zhuǎn)P4.0
GPIO_toggleOutputOnPin(GPIO_PORT_P4,GPIO_PIN0);
//軟件延時(shí)
__delay_cycles(1000000);
}
}
從代碼的角度來(lái)看,使用MSPWare使編程更加簡(jiǎn)潔,修改更加方便。
最后添加UCS_getSMCLK等函數(shù)驗(yàn)證結(jié)果,代碼如下:
//輔助時(shí)鐘ACLK32.768K
//系統(tǒng)時(shí)鐘子系統(tǒng)時(shí)鐘8000K
#include"inc/hw_memmap.h"
#include"ucs.h"
#include"wdt_a.h"
#include"gpio.h"
#include"sfr.h"
uint32_tclockValue_ACLK=0;
uint32_tclockValue_MCLK=0;
uint32_tclockValue_SMCLK=0;
voidmain(void)
{
//uint16_tstatus;
//停止看門狗
WDT_A_hold(WDT_A_BASE);
//P4.0保持輸出狀態(tài)
GPIO_setAsOutputPin(GPIO_PORT_P4,GPIO_PIN0);
//初始化P7.0和P7.1為復(fù)用功能
GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P7,GPIO_PIN0|GPIO_PIN1);
//啟動(dòng)XT1
UCS_LFXT1Start(UCS_BASE,UCS_XT1_DRIVE0,UCS_XCAP_3);
//DCO參考時(shí)鐘選擇XT1,實(shí)際選擇了默認(rèn)參數(shù)
//UCS_clockSignalInit(UCS_BASE,UCS_FLLREF,UCS_XT1CLK_SELECT,UCS_CLOCK_DIVIDER_1);
//DCO時(shí)鐘8MHz
//該函數(shù)第二個(gè)參數(shù)為系統(tǒng)工作頻率8000K,第三個(gè)參數(shù)為工作頻率/DCO參考頻率
UCS_initFLLSettle(UCS_BASE,8000,244);
//如果使用XT1或者XT2,需要調(diào)用該函數(shù)
UCS_setExternalClockSource(UCS_BASE,32768,8000000);
clockValue_SMCLK=UCS_getSMCLK(UCS_BASE);
clockValue_MCLK=UCS_getMCLK(UCS_BASE);
clockValue_ACLK=UCS_getACLK(UCS_BASE);
//使能全局中斷
__bis_SR_register(GIE);
while(1)
{
//翻轉(zhuǎn)P4.0
GPIO_toggleOutputOnPin(GPIO_PORT_P4,GPIO_PIN0);
//軟件延時(shí)
__delay_cycles(1000000);
}
}