📄 dactestmain.c
字号:
/****************************************************************************
DAC12转换模块。
MCLK:DCO ACLK:32.768kHz
*****************************************************************************/
#include <msp430x16x.h>
#include "dac12.h"
#include "df_timera.h"
#include"math.h"
void InitSys();
void write(unsigned int adrs) ;
int main() {
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
InitSys();
TimerAInit(); //初始化定时器A
InitDac12(); //初始化DAC12
_EINT(); //打开全局中断控制,若不需要打开,可以屏蔽本句
write(0xf000);
//GoDac12(100,0); //打开DAC12通道0
GoDac12(100,1); //打开DAC12通道1
GotimeDfA(100,60); //打开定时器A
while(1) {
LPM0;
_NOP();
}
}
/*****************************************************************************
系统初始化
******************************************************************************/
void InitSys() {
unsigned int iq0;
//使用XT2振荡器
BCSCTL1&=~XT2OFF; //打开XT2振荡器
do {
IFG1 &= ~OFIFG; //清除振荡器失效标志
for (iq0 = 0xFF; iq0 > 0; iq0--); //延时,等待XT2起振
}
while ((IFG1 & OFIFG) != 0); //判断XT2是否起振
BCSCTL2 =SELM_2+SELS; //选择MCLK、SMCLK为XT2
}
/****************************************************************************************
向FLASH写入正弦列表
开头地址为 adrs ,写入一个周期共628个值
********************************************************************************************/
void write(unsigned int adrs)
{
signed int* adr;
int i;
float k;
FCTL2=FWKEY+FSSEL0+FN0;
adr=(signed int *)adrs;
FCTL1=FWKEY+ERASE;
FCTL3=FWKEY;
*adr=0;
FCTL1=FWKEY+WRT;
k=0;
for(i=0;i<629;i++)
{
*adr++=(signed int)((sin(k))*2048);
k=k+0.01;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -