新建
上传
首页
助手
最?/div>
资料?/div>
工具

#include "DSP281x_Device.h" 

 

 

 

 

 

#include "DSP281x_Examples.h" 

 

 

#include "f2812a.h" 

 

#include "stdio.h" 

#include "math.h" 

int ConversionCount,f; 

int V

oltage[1024],Vmax,Vmin,Vavr; 

 

 

//

电压转换结果存储数组及一个周期内的采样值数?/p>

 

float RMS=0,U0[1024],SV[]; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

电压有效?/p>

 

interrupt void adc_isr(void); 

main() 

 

{ 

 

InitSysCtrl(); 

 

 

 

 

//

初始化时钟,

CPU

?/p>

15M,

高速时?/p>

Hspclk

?/p>

1.5M 

 

DINT; 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

关闭中断

 

 

InitPieCtrl(); 

 

 

 

 

//

初始?/p>

Pie

寄存?/p>

 

 

IER=0x0000; 

 

 

 

 

 

 

 

//

禁止所有可屏蔽中断

 

 

IFR=0x0000; 

 

InitPieVectTable(); 

 

//

初始?/p>

Pie

中断向量?/p>

 

 

 

EALLOW; 

 

 

 

 

 

 

 

 

 

 

 

 

//

打开寄存器写保护

 

 

PieVectTable.ADCINT=&adc_isr; 

 

 

//

?/p>

Adc

中断子程序的服务地址写入中断向量?/p>

 

 

EDIS; 

 

 

 

 

 

 

 

 

 

 

//

禁止寄存器的访问

 

 

 

InitAdc(); 

 

 

 

 

 

 

 

 

 

 

//

初始?/p>

Adc

,完?/p>

Adc

的上?/p>

 

 

InitLcd(); 

 

 

 

 

 

 

 

 

 

 

//

液晶初始?/p>

 

 

 

/*

?/p>

Pie

中使?/p>

Adc

的中?/p>

ADCINT*/ 

 

PieCtrlRegs.PIEIER1.bit.INTx6=1; 

 

 

//

查表?/p>

ADCINT

对应的是

INT1,INTx.6 

 

IER=M_INT1; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

使能

CPU

中断

 

 

EINT; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

使能全局中断

 

 

 

/*

配置

Adc

模块

*/ 

 

AdcRegs.ADCMAXCONV

.all=0x0000; 

 

//

设置

SEQ1

的最大转换通道数为

1 

 

AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0; 

 

//

选择

0

通道

 

 

AdcRegs.ADCTRL2.bit.EV

A_SOC_SEQ1=1; 

 

 

//

选择

EV

A

作为

SEQ1

的触发启动信?/p>

 

 

AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1; 

 

 

//

使能

SEQ1

的中断操作(中断方式

0

?/p>

 

 

 

 

/*

配置

EVA*/  

 

EvaRegs.T1CNT=0x0000; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

计数初?/p>

 

 

EvaRegs.T1PR=0x007D; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

设置周期寄存器值为

125

,因为下面设?/p>

是增减计数模式,

EV

A

的下溢启?/p>

Adc

,所以采样周期是

250

个计数周?/p>

 

 

EvaRegs.GPTCONA.bit.T1TOADC=0x1; 

 

 

 

 

//

设置

EV

A

的下溢启?/p>

Adc 

 

EvaRegs.T1CON.all=0x0842; 

 

 

 

 

 

 

 

 

 

 

//

设置

T1

为连续增减计数模式,不分频,

即时

钟为高速时?/p>

Hspclk

?/p>

1.5M 

?/p>

 

Ͼλ
新建
上传
首页
助手
最?/div>
资料?/div>
工具

#include "DSP281x_Device.h" 

 

 

 

 

 

#include "DSP281x_Examples.h" 

 

 

#include "f2812a.h" 

 

#include "stdio.h" 

#include "math.h" 

int ConversionCount,f; 

int V

oltage[1024],Vmax,Vmin,Vavr; 

 

 

//

电压转换结果存储数组及一个周期内的采样值数?/p>

 

float RMS=0,U0[1024],SV[]; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

电压有效?/p>

 

interrupt void adc_isr(void); 

main() 

 

{ 

 

InitSysCtrl(); 

 

 

 

 

//

初始化时钟,

CPU

?/p>

15M,

高速时?/p>

Hspclk

?/p>

1.5M 

 

DINT; 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

关闭中断

 

 

InitPieCtrl(); 

 

 

 

 

//

初始?/p>

Pie

寄存?/p>

 

 

IER=0x0000; 

 

 

 

 

 

 

 

//

禁止所有可屏蔽中断

 

 

IFR=0x0000; 

 

InitPieVectTable(); 

 

//

初始?/p>

Pie

中断向量?/p>

 

 

 

EALLOW; 

 

 

 

 

 

 

 

 

 

 

 

 

//

打开寄存器写保护

 

 

PieVectTable.ADCINT=&adc_isr; 

 

 

//

?/p>

Adc

中断子程序的服务地址写入中断向量?/p>

 

 

EDIS; 

 

 

 

 

 

 

 

 

 

 

//

禁止寄存器的访问

 

 

 

InitAdc(); 

 

 

 

 

 

 

 

 

 

 

//

初始?/p>

Adc

,完?/p>

Adc

的上?/p>

 

 

InitLcd(); 

 

 

 

 

 

 

 

 

 

 

//

液晶初始?/p>

 

 

 

/*

?/p>

Pie

中使?/p>

Adc

的中?/p>

ADCINT*/ 

 

PieCtrlRegs.PIEIER1.bit.INTx6=1; 

 

 

//

查表?/p>

ADCINT

对应的是

INT1,INTx.6 

 

IER=M_INT1; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

使能

CPU

中断

 

 

EINT; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

使能全局中断

 

 

 

/*

配置

Adc

模块

*/ 

 

AdcRegs.ADCMAXCONV

.all=0x0000; 

 

//

设置

SEQ1

的最大转换通道数为

1 

 

AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0; 

 

//

选择

0

通道

 

 

AdcRegs.ADCTRL2.bit.EV

A_SOC_SEQ1=1; 

 

 

//

选择

EV

A

作为

SEQ1

的触发启动信?/p>

 

 

AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1; 

 

 

//

使能

SEQ1

的中断操作(中断方式

0

?/p>

 

 

 

 

/*

配置

EVA*/  

 

EvaRegs.T1CNT=0x0000; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

计数初?/p>

 

 

EvaRegs.T1PR=0x007D; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

设置周期寄存器值为

125

,因为下面设?/p>

是增减计数模式,

EV

A

的下溢启?/p>

Adc

,所以采样周期是

250

个计数周?/p>

 

 

EvaRegs.GPTCONA.bit.T1TOADC=0x1; 

 

 

 

 

//

设置

EV

A

的下溢启?/p>

Adc 

 

EvaRegs.T1CON.all=0x0842; 

 

 

 

 

 

 

 

 

 

 

//

设置

T1

为连续增减计数模式,不分频,

即时

钟为高速时?/p>

Hspclk

?/p>

1.5M 

?/p>

 

">
新建
上传
首页
助手
最?/div>
资料?/div>
工具

#include "DSP281x_Device.h" 

 

 

 

 

 

#include "DSP281x_Examples.h" 

 

 

#include "f2812a.h" 

 

#include "stdio.h" 

#include "math.h" 

int ConversionCount,f; 

int V

oltage[1024],Vmax,Vmin,Vavr; 

 

 

//

电压转换结果存储数组及一个周期内的采样值数?/p>

 

float RMS=0,U0[1024],SV[]; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

电压有效?/p>

 

interrupt void adc_isr(void); 

main() 

 

{ 

 

InitSysCtrl(); 

 

 

 

 

//

初始化时钟,

CPU

?/p>

15M,

高速时?/p>

Hspclk

?/p>

1.5M 

 

DINT; 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

关闭中断

 

 

InitPieCtrl(); 

 

 

 

 

//

初始?/p>

Pie

寄存?/p>

 

 

IER=0x0000; 

 

 

 

 

 

 

 

//

禁止所有可屏蔽中断

 

 

IFR=0x0000; 

 

InitPieVectTable(); 

 

//

初始?/p>

Pie

中断向量?/p>

 

 

 

EALLOW; 

 

 

 

 

 

 

 

 

 

 

 

 

//

打开寄存器写保护

 

 

PieVectTable.ADCINT=&adc_isr; 

 

 

//

?/p>

Adc

中断子程序的服务地址写入中断向量?/p>

 

 

EDIS; 

 

 

 

 

 

 

 

 

 

 

//

禁止寄存器的访问

 

 

 

InitAdc(); 

 

 

 

 

 

 

 

 

 

 

//

初始?/p>

Adc

,完?/p>

Adc

的上?/p>

 

 

InitLcd(); 

 

 

 

 

 

 

 

 

 

 

//

液晶初始?/p>

 

 

 

/*

?/p>

Pie

中使?/p>

Adc

的中?/p>

ADCINT*/ 

 

PieCtrlRegs.PIEIER1.bit.INTx6=1; 

 

 

//

查表?/p>

ADCINT

对应的是

INT1,INTx.6 

 

IER=M_INT1; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

使能

CPU

中断

 

 

EINT; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

使能全局中断

 

 

 

/*

配置

Adc

模块

*/ 

 

AdcRegs.ADCMAXCONV

.all=0x0000; 

 

//

设置

SEQ1

的最大转换通道数为

1 

 

AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0; 

 

//

选择

0

通道

 

 

AdcRegs.ADCTRL2.bit.EV

A_SOC_SEQ1=1; 

 

 

//

选择

EV

A

作为

SEQ1

的触发启动信?/p>

 

 

AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1; 

 

 

//

使能

SEQ1

的中断操作(中断方式

0

?/p>

 

 

 

 

/*

配置

EVA*/  

 

EvaRegs.T1CNT=0x0000; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

计数初?/p>

 

 

EvaRegs.T1PR=0x007D; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

设置周期寄存器值为

125

,因为下面设?/p>

是增减计数模式,

EV

A

的下溢启?/p>

Adc

,所以采样周期是

250

个计数周?/p>

 

 

EvaRegs.GPTCONA.bit.T1TOADC=0x1; 

 

 

 

 

//

设置

EV

A

的下溢启?/p>

Adc 

 

EvaRegs.T1CON.all=0x0842; 

 

 

 

 

 

 

 

 

 

 

//

设置

T1

为连续增减计数模式,不分频,

即时

钟为高速时?/p>

Hspclk

?/p>

1.5M 

?/p>

 

Ͼλ">
Ͼλ
Ŀ

DSP adc采集程序 - 百度文库
新建
上传
首页
助手
最?/div>
资料?/div>
工具

#include "DSP281x_Device.h" 

 

 

 

 

 

#include "DSP281x_Examples.h" 

 

 

#include "f2812a.h" 

 

#include "stdio.h" 

#include "math.h" 

int ConversionCount,f; 

int V

oltage[1024],Vmax,Vmin,Vavr; 

 

 

//

电压转换结果存储数组及一个周期内的采样值数?/p>

 

float RMS=0,U0[1024],SV[]; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

电压有效?/p>

 

interrupt void adc_isr(void); 

main() 

 

{ 

 

InitSysCtrl(); 

 

 

 

 

//

初始化时钟,

CPU

?/p>

15M,

高速时?/p>

Hspclk

?/p>

1.5M 

 

DINT; 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

关闭中断

 

 

InitPieCtrl(); 

 

 

 

 

//

初始?/p>

Pie

寄存?/p>

 

 

IER=0x0000; 

 

 

 

 

 

 

 

//

禁止所有可屏蔽中断

 

 

IFR=0x0000; 

 

InitPieVectTable(); 

 

//

初始?/p>

Pie

中断向量?/p>

 

 

 

EALLOW; 

 

 

 

 

 

 

 

 

 

 

 

 

//

打开寄存器写保护

 

 

PieVectTable.ADCINT=&adc_isr; 

 

 

//

?/p>

Adc

中断子程序的服务地址写入中断向量?/p>

 

 

EDIS; 

 

 

 

 

 

 

 

 

 

 

//

禁止寄存器的访问

 

 

 

InitAdc(); 

 

 

 

 

 

 

 

 

 

 

//

初始?/p>

Adc

,完?/p>

Adc

的上?/p>

 

 

InitLcd(); 

 

 

 

 

 

 

 

 

 

 

//

液晶初始?/p>

 

 

 

/*

?/p>

Pie

中使?/p>

Adc

的中?/p>

ADCINT*/ 

 

PieCtrlRegs.PIEIER1.bit.INTx6=1; 

 

 

//

查表?/p>

ADCINT

对应的是

INT1,INTx.6 

 

IER=M_INT1; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

使能

CPU

中断

 

 

EINT; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

使能全局中断

 

 

 

/*

配置

Adc

模块

*/ 

 

AdcRegs.ADCMAXCONV

.all=0x0000; 

 

//

设置

SEQ1

的最大转换通道数为

1 

 

AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0; 

 

//

选择

0

通道

 

 

AdcRegs.ADCTRL2.bit.EV

A_SOC_SEQ1=1; 

 

 

//

选择

EV

A

作为

SEQ1

的触发启动信?/p>

 

 

AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1; 

 

 

//

使能

SEQ1

的中断操作(中断方式

0

?/p>

 

 

 

 

/*

配置

EVA*/  

 

EvaRegs.T1CNT=0x0000; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

计数初?/p>

 

 

EvaRegs.T1PR=0x007D; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//

设置周期寄存器值为

125

,因为下面设?/p>

是增减计数模式,

EV

A

的下溢启?/p>

Adc

,所以采样周期是

250

个计数周?/p>

 

 

EvaRegs.GPTCONA.bit.T1TOADC=0x1; 

 

 

 

 

//

设置

EV

A

的下溢启?/p>

Adc 

 

EvaRegs.T1CON.all=0x0842; 

 

 

 

 

 

 

 

 

 

 

//

设置

T1

为连续增减计数模式,不分频,

即时

钟为高速时?/p>

Hspclk

?/p>

1.5M 

?/p>

 



ļ׺.doc޸Ϊ.docĶ

  • ƶ˻е۵Ľṹ
  • 2012ʦм-ϵ
  • 1020112003995-ԶԶҵ
  • 10ֿòֿ
  • 뵼ϰ⼰
  • 2018㶫ʡǻ۳нҵ״չƷĿ¼
  • עľʦ(ˮˮ)ˮְ
  • Ϸнίڽܲƹ㡢ơֹʹòĿ¼ļ
  • ֵⶨı׼
  • ĵѧĩϰ

վ

԰ Ͼλ
ϵͷ779662525#qq.com(#滻Ϊ@)