新手上路
- 积分
- 30
- 金钱
- 30
- 注册时间
- 2017-10-22
- 在线时间
- 6 小时
|
1金钱
#include "delay.h"
#include "timer.h"
#include "adc.h"
#include "dma.h"
#include "usart.h"
extern u8 ADC_Ok;
u32 a[512];
int main(void)
{
int i,j=0;
u32 Range,Range_i,temp;
delay_init();//延时初始化
Adc_Init();//adc初始化
uart_init(115200); //串口初始化为115200
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
MYDMA_Config(DMA1_Channel1,(u32)Get_Adc(ADC_Channel_1), (u32)a[0],512);//DMA1通道1,取地址为 adc ,存储器为 数组a ,长度512.
DMA_Cmd(DMA1_Channel4, ENABLE);
while(1)
{
i=DMA1_Channel1->CNDTR;
j= Get_Adc(ADC_Channel_1);
printf("RANGE=:%d %d \r\n",i,j);//打印总的高点平时间 //显示
delay_ms(50);
if(ADC_Ok==1) //当DMA传送结束时,开始进行数据处理及显示
{
FFT_transform(); //FFT变换
for(i=0;i<512;i++)//求得频率和幅度
{
if(Range<s[i].real)
{
Range=s[i].real;
Range_i =i;
}
}
temp= 47619*Range_i/512; //求出频域上的点对应的频率
printf("RANGE=:%d \r\n",temp);//打印总的高点平时间 //显示
DMA_Cmd(DMA1_Channel4, ENABLE); //重新打开DMA,将标志位清零
ADC_Ok=0;
}
}
}
我这样配置dma的语句有问题吗,我每次测的时候都发现我的adc数据没有进入dma中
|
|