📄 driver430.c
字号:
/******************************************************************************
* files name DRIVER430.c
*说明:msp430单片机内部模块驱动c文件
******************************************************************************/
#include <msp430x16x.h>
/*****************************************************************************
* 系统时钟初始化模块
******************************************************************************/
/***********************************************************************
** 函数名称: XT2_ON
** 功能描述: 外部时钟XT2振荡,并赋给MCLK
** 输 入: unsigned char DIVM MCLK 主时钟分频
** unsigned char DIVA ACLK 辅助时钟分频
** unsigned char DIVS SMCLK 外设主时钟分频
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
***********************************************************************/
void XT2_ON(unsigned char DIVM,unsigned char DIVA,unsigned char DIVS)
{
unsigned char i;
BCSCTL1 &= ~XT2OFF; //XT2振荡器开启
do
{
IFG1 &= ~OFIFG;
for (i = 0X20;i > 0;i--);
}
while((IFG1 & OFIFG) == OFIFG);//waiting for the Oscillator is notfault
//BCSCTL1 |= XTS;
BCSCTL1 |= DIVA << 4;
BCSCTL2 |= SELM_2; //MCLK 选择XT2
BCSCTL2 |= DIVM << 4;
BCSCTL2 |= DIVS << 1;
BCSCTL2 |= SELS; //SMCLK 选择XT2
}
/***********************************************************************
** 函数名称: DCO_ON
** 功能描述: 内部RC振荡,并赋给MCLK
** 输 入: unsigned char RSELX RC RSEL选择
** unsigned char DCOX DCO 输出选择
** unsigned char DIVM MCLK 主时钟分频
** unsigned char DIVA ACLK 辅助时钟分频
** unsigned char DIVS SMCLK 外设主时钟分频
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
***********************************************************************/
void DCO_ON(unsigned char RSELX,unsigned char DCOX,unsigned char DIVM,
unsigned char DIVA,unsigned char DIVS)
{
unsigned char i;
BCSCTL1 |= XT2OFF; //XT2振荡器关闭
BCSCTL1 |= RSELX; //选择DCO 频率
DCOCTL |= DCOX << 5;
do
{
IFG1 &= ~OFIFG;
for (i = 0x20;i > 0;i--);
}
while((IFG1 & OFIFG) == OFIFG);
BCSCTL1 |= DIVA << 4;
BCSCTL2 |= SELM_0; //MCLK 选择DCO
BCSCTL2 |= DIVM << 4;
BCSCTL2 |= DIVS << 1;
BCSCTL2 &= ~SELS; //SMCLK 选择DCO
}
/***********************************************************************
* USART串口通信模块
***********************************************************************/
/***********************************************************************
** 函数名称: USART_Init
** 功能描述: USART 模块初始化
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
***********************************************************************/
void USART_Init(void)
{
P3SEL |= 0xC0;
P3DIR |= 0x40;
UTCTL1 |= SSEL1;
UCTL1 = CHAR;
UBR01 = 0x41;
UBR11 = 0x03;
UMCTL1 = 0x00;
ME2 |= UTXE1 + URXE1;
UCTL1 &= ~SWRST;
IE2 |= URXIE1;
}
/***********************************************************************
* AD/DA模块
***********************************************************************/
/***********************************************************************
** 函数名称: AD12_Init
** 功能描述: AD采样模块初始化
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
***********************************************************************/
void AD12_Init(void)
{
unsigned int i;
P6SEL |= BIT5; // enable channel 5
ADC12CTL0 = ADC12ON + SHT0_2 + REFON + REF2_5V; // Turn on and set up ADC12
ADC12CTL1 = SHP; // Use sampling timer
ADC12MCTL0 = SREF_1+INCH_5; // Vr+=Vref+
for ( i=0; i<0x3600; i++) // Delay for reference start-up
{
}
ADC12CTL0 |= ENC; // Enable conversions
}
/***********************************************************************
** 函数名称: DA_Init
** 功能描述: DA模块初始化
** 输 入: 无
** 输 出: 无
** 全局变量: 无.
** 调用模块: 无
***********************************************************************/
void DA_Init(void)
{
ADC12CTL0 = REFON + REF2_5V;
DAC12_0CTL = DAC12IR + DAC12AMP_7 + DAC12ENC;
DAC12_1CTL = DAC12IR + DAC12AMP_7 + DAC12ENC;
DAC12_0DAT = 0x0000;
DAC12_1DAT = 0x0000;
}
/***********************************************************************
** 函数名称: AD_one
** 功能描述: AD采样一次
** 输 入: 无
** 输 出: unsigned int AD采样结果
** 全局变量: 无
** 调用模块: 无
***********************************************************************/
unsigned int AD_one(void)
{
ADC12CTL0 |= ADC12SC;
while((ADC12IFG&BIT0)==0);
return(ADC12MEM0);
}
/**********************************************************************
* TIMERA模块
***********************************************************************/
/***********************************************************************
** 函数名称: TimerA_Init
** 功能描述: TimerA初始化
** 输 入: unsigned char mode TimerA 工作模式
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
***********************************************************************/
void TimerA_Init(unsigned char mode)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -