1.渠道阐明MSP430F5438。
2.ACLK挑选XT1,频率为32.768K,MCLK和SMCLK挑选DCOCLKDIV,频率为8000K。
//辅佐时钟ACLK32.768K
//体系时钟子体系时钟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坚持输出状况
GPIO_setAsOutputPin(GPIO_PORT_P4,GPIO_PIN0);
//初始化P7.0和P7.1为复用功用
GPIO_setAsPeripheralModuleFuncTIonInputPin(GPIO_PORT_P7,GPIO_PIN0|GPIO_PIN1);
//发动XT1
UCS_LFXT1Start(UCS_BASE,UCS_XT1_DRIVE0,UCS_XCAP_3);
//DCO参阅时钟挑选XT1,挑选了默许参数
//UCS_clockSignalInit(UCS_BASE,UCS_FLLREF,UCS_XT1CLK_SELECT,UCS_CLOCK_DIVIDER_1);
//DCO时钟8MHz
//该函数第二个参数为体系作业频率8000K,第三个参数为作业频率/DCO参阅频率
UCS_initFLLSettle(UCS_BASE,8000,244);
//使能大局中止
__bis_SR_register(GIE);
while(1)
{
//翻转P4.0
GPIO_toggleOutputOnPin(GPIO_PORT_P4,GPIO_PIN0);
//软件延时
__delay_cycles(1000000);
}
}
从代码的视点来看,运用MSPWare使编程愈加简练,修正愈加便利。
最终增加UCS_getSMCLK等函数验证成果,代码如下:
//辅佐时钟ACLK32.768K
//体系时钟子体系时钟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坚持输出状况
GPIO_setAsOutputPin(GPIO_PORT_P4,GPIO_PIN0);
//初始化P7.0和P7.1为复用功用
GPIO_setAsPeripheralModuleFuncTIonInputPin(GPIO_PORT_P7,GPIO_PIN0|GPIO_PIN1);
//发动XT1
UCS_LFXT1Start(UCS_BASE,UCS_XT1_DRIVE0,UCS_XCAP_3);
//DCO参阅时钟挑选XT1,实践挑选了默许参数
//UCS_clockSignalInit(UCS_BASE,UCS_FLLREF,UCS_XT1CLK_SELECT,UCS_CLOCK_DIVIDER_1);
//DCO时钟8MHz
//该函数第二个参数为体系作业频率8000K,第三个参数为作业频率/DCO参阅频率
UCS_initFLLSettle(UCS_BASE,8000,244);
//假如运用XT1或许XT2,需求调用该函数
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)
{
//翻转P4.0
GPIO_toggleOutputOnPin(GPIO_PORT_P4,GPIO_PIN0);
//软件延时
__delay_cycles(1000000);
}
}