dsp28335 adc采样代码,中断方式获取采样值、
时间: 2023-08-28 18:03:43 浏览: 619
以下是DSP28335的ADC采样中断方式获取采样值的代码:
```c
#include "DSP2833x_Device.h"
// 定义ADC采样结果缓存数组
Uint16 ADC_Result[16];
// ADC采样中断服务函数
interrupt void ADC_ISR(void)
{
Uint16 i;
// 清除ADC中断标志位
ADC_clearIntFlag(ADC_INT_NUMBER1);
// 读取ADC采样结果,并保存到缓存数组中
for (i = 0; i < 16; i++)
{
ADC_Result[i] = ADC_readResult(i);
}
}
void main(void)
{
// 初始化系统时钟和GPIO
InitSysCtrl();
InitGpio();
// 初始化ADC
ADC_enableBandgap(ADC_ADCA);
ADC_enableRefBuffers(ADC_ADCA);
ADC_powerUp(ADC_ADCA);
DELAY_US(1000);
ADC_calibrate(ADC_ADCA);
ADC_setIntMode(ADC_ADCA, ADC_INT_NUMBER1, ADC_INT_MODE_EOC);
ADC_setIntSrc(ADC_ADCA, ADC_INT_NUMBER1, ADC_SOC_NUMBER0);
ADC_setSocChanNumber(ADC_ADCA, ADC_SOC_NUMBER0, ADC_CH_ADCIN0);
ADC_setSocTrigSrc(ADC_ADCA, ADC_SOC_NUMBER0, ADC_TRIG_EPWM1_SOCA);
ADC_enableSocInt(ADC_ADCA, ADC_SOC_NUMBER0);
ADC_enableInt(ADC_ADCA, ADC_INT_NUMBER1);
ADC_enableContinuousMode(ADC_ADCA);
ADC_startConversion(ADC_ADCA, ADC_SOC_NUMBER0);
// 配置ADC中断
EALLOW;
PieVectTable.ADCINT1 = &ADC_ISR;
PieCtrlRegs.PIEIER1.bit.INTx1 = 1;
IER |= M_INT1;
EINT;
// 循环等待ADC采样完成并打印结果
while (1)
{
// TODO: 等待ADC采样完成
// TODO: 打印ADC采样结果
}
}
```
在上面的代码中,通过`ADC_enableContinuousMode`函数使ADC进入连续采样模式,然后通过`ADC_startConversion`函数启动ADC采样,并在`ADC_ISR`中断服务函数中读取ADC采样结果,并保存到`ADC_Result`数组中。在主程序中,可以通过循环等待ADC采样完成,并通过`ADC_Result`数组获取采样结果。
阅读全文