📄 msp430_init.c
字号:
// MSP430x16x初始化模块
//********************************************
//特征说明: CPU = msp430f169 *
// CLOCK : XT2 = 8M XT1 = 32.768K *
//********************************************
#include <msp430x16x.h>
#include "MSP430_Init.h"
//看门狗设定 0: 关闭 1:开启
void WatchDog(unsigned char Set_WatchDog)
{
if(Set_WatchDog == 0)
WDTCTL = WDTPW + WDTHOLD;
else ;
}
//启动XT2振荡器
void XT2_Start(void)
{
unsigned char i;
BCSCTL1 &= ~XT2OFF;//XT2有效
do
{
IFG1 &= ~OFIFG; //清除振荡器失效标志
for(i=0xff;i>0;i--);//稳定时间
}
while((IFG1 & OFIFG) != 0);//如果振荡器失效标志存在
}
//启动XT1高频振荡器,XT1接高频晶体时使用
void XT1HF_Start(void)
{
unsigned char i;
BCSCTL1 &= XTS;
do
{
IFG1 &= ~OFIFG;
for(i=0xff;i>0;i--);
}
while((IFG1 &OFIFG) != 0);
}
//主时钟设置
//**********************************************************
//入口参数:
// mclk_select 默认选项为 DCOCLK
// (0/1)/2/3 DCOCLK/XT2CLK/LFXT1CLK
// div_select 默认为 1分频
// 0/1/2/3 1分频/2分频/4分频/8分频
//*********************************************************
void Mclk_Init(unsigned char mclk_select,unsigned char div_select)
{
BCSCTL2 |= (mclk_select<<6) + (div_select<<4);
}
//子时钟设置
//**********************************************************
//入口参数:
//smclk_select 默认选项为 DCOCLK
// 0/1 DCOCLK/XT2CLK
//div_select 默认为 1分频
//0/1/2/3 1分频/2分频/4分频/8分频
//***********************************************************
void Smclk_Init(unsigned char smclk_select,unsigned char div_select)
{
BCSCTL2 |= (smclk_select<<3) + (div_select<<1);
}
//辅助时钟设置
//***********************************************************
//辅助时钟默认启动
//入口参数:
//aclk_div 默认为 1分频
//0/1/2/3 1分频/2分频/4分频/8分频
//***********************************************************
void Aclk_Init(unsigned char aclk_div)
{
BCSCTL1 |= (aclk_div<<4);
}
//***************************************
//常用 MSP430x16x 系统时钟配置
//
void CPU_Init(void)
{
WatchDog(0);//关闭看门狗
XT2_Start();//开启XT2振荡器
Mclk_Init(2,0);//设置主时钟为 XT2(8M),且不分频
Smclk_Init(1,0);//设置子时钟为 XT2(8M),且不分频
//Aclk_Init(0);//设置辅助时钟不分频
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -