您的位置 首页 资料

MSP430单片机的DCO初始化

MSP430单片机的DCO初始化-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)

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);

}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/346528.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部