DSP28335滑动平均代码
时间: 2023-11-12 14:56:44 浏览: 57
以下是一段使用DSP28335实现滑动平均的代码:
```c
#include "DSP2833x_Device.h"
#define FILTER_LENGTH 16
Uint16 counter = 0;
Uint16 index = 0;
Uint16 result = 0;
Uint16 filter[FILTER_LENGTH] = {0};
interrupt void adc_isr(void)
{
filter[index] = AdcResult.ADCRESULT0;
if(counter < FILTER_LENGTH)
{
counter++;
}
result = 0;
for(Uint16 i = 0; i < counter; i++)
{
result += filter[i];
}
result /= counter;
index++;
if(index >= FILTER_LENGTH)
{
index = 0;
}
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;
PieCtrlRegs.PIEACK.all |= M_INT1;
}
void main(void)
{
InitSysCtrl();
InitPieCtrl();
InitPieVectTable();
EALLOW;
PieVectTable.ADCINT1 = &adc_isr;
EDIS;
IER |= M_INT1;
PieCtrlRegs.PIEIER1.bit.INTx1 = 1;
AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1;
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1;
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;
AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;
while(1);
}
```
该代码使用DMA控制AD转换,每次转换的结果会存储在filter数组中,然后计算数组中所有元素的平均值。当filter数组填满后,将从头开始重新填充。