OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10627|回复: 10

关于ADC1与DMA协同工作问题。。。。

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2011-6-2
在线时间
0 小时
发表于 2011-7-10 11:31:39 | 显示全部楼层 |阅读模式

经过测试,单独的ADC和单独的DMA都能正常工作, 但是合在一起ADC仍然在转换, 但是DMA不能传输,请教高手指点,下面是相关程序。
#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"  
#include "delay.h" 
#include "led.h"
#include "key.h"
#include "exti.h"
#include "wdg.h"
#include "timer.h"
#include "lcd.h"   
#include "rtc.h"
#include "wkup.h"
#include "adc.h"
#include "dma.h"
//Mini STM32开发板范例代码15
//DMA 实验
//正点原子@ALIENTEK
//技术论坛:www.openedv.com

//u16 SendBuff[16];
//const u8 TEXT_TO_SEND[]={"ALIENTEK MiniSTM32 DMA 串口实验"};
u32 i[10];
u16 Get_Temp(void)
{
 u16 temp_val=0;
 u8 t;
 for(t=0;t<10;t++)
 {
  temp_val+=i[t];
  delay_ms(5);
 }
 return temp_val/10;

int main(void)
{  
 
 u16 t=0;
 float temp;    
   Stm32_Clock_Init(9);//系统时钟设置
 delay_init(72);  //延时初始化
 uart_init(72,9600);
 LCD_Init(); 
 LED_Init();
 Adc_Init();
 MYDMA_Config(DMA1_Channel1,(u32)&ADC1->DR,(u32)i,10);//DMA1通道4,外设为ADC,存储器为i,长度1.

  OINT_COLOR=RED;//设置字体为蓝色   
 LCD_ShowString(60,50,"Mini STM32"); 
 LCD_ShowString(60,70,"DMA ADC TEST"); 
 LCD_ShowString(60,90,"ATOM@ALIENTEK");
 LCD_ShowString(60,110,"2010/12/30");
 //显示提示信息 
 OINT_COLOR=BLUE;//设置字体为蓝色  

 while(1)
 {   
  Get_Adc(ADC_CH1);
  MYDMA_Enable(DMA1_Channel1);//开始一次DMA传输!  
//  等待DMA传输完成,此时我们来做另外一些事,点灯
//  实际应用中,传输数据期间,可以执行另外的任务
     while(1)
     {
   if(DMA1->ISR&(1<<1))//等待通道1传输完成
   {
    DMA1->IFCR|=1<<1;//清除通道1传输完成标志
    LED0=!LED0;//提示系统正在运行
    break;
         }
 
     }
  
  t=Get_Temp();
  LCD_ShowNum(156,130,t,4,16);//显示ADC的值
  temp=(float)t*(3.3/4096);
  t=temp;
  LCD_ShowNum(156,150,t,1,16);//显示电压值
  temp-=t;
  temp*=1000;
  LCD_ShowNum(172,150,temp,3,16);       
  delay_ms(250);
//  if(i==20)
//  {
    
//   i=0;
//  }    
 }
}
下面是ADC1设置程序:
void  Adc_Init(void)
{   
 //先初始化IO口
  RCC->APB2ENR|=1<<2;    //使能PORTA口时钟
 GPIOA->CRL&=0XFFFF0000;//PA0 1 2 3 anolog输入
 //通道10/11设置   
 RCC->APB2ENR|=1<<9;    //ADC1时钟使能  
 RCC->APB2RSTR|=1<<9;   //ADC1复位
 RCC->APB2RSTR&=~(1<<9);//复位结束    
 RCC->CFGR&=~(3<<14);   //分频因子清零 
 //SYSCLK/DIV2=12M ADC时钟设置为12M,ADC最大时钟不能超过14M!
 //否则将导致ADC准确度下降!
 RCC->CFGR|=2<<14;       
 ADC1->CR1&=0XF0FFFF;   //工作模式清零
 ADC1->CR1|=0<<16;      //独立工作模式 
 ADC1->CR1&=~(1<<8);    //非扫描模式
      
 ADC1->CR2&=~(1<<1);    //单次转换模式

 ADC1->CR2&=~(1<<8);
 ADC1->CR2|=(1<<8);

 ADC1->CR2&=~(7<<17);
 
 ADC1->CR2|=7<<17;    //软件控制转换 
 ADC1->CR2|=1<<20;      //使用用外部触发(SWSTART)!!! 必须使用一个事件来触发
 ADC1->CR2&=~(1<<11);   //右对齐
// ADC1->CR2|=1<<23;      //使能温度传感器

 ADC1->SQR1&=~(0XF<<20);
 ADC1->SQR1&=0<<20;     //1个转换在规则序列中 也就是只转换规则序列1      
 //设置通道0~3的采样时间
 ADC1->SMPR2&=0XFFFFF000;//通道0,1,2,3采样时间清空  
 ADC1->SMPR2|=7<<9;      //通道3  239.5周期,提高采样时间可以提高精确度 
 ADC1->SMPR2|=7<<6;      //通道2  239.5周期,提高采样时间可以提高精确度 
 ADC1->SMPR2|=7<<3;      //通道1  239.5周期,提高采样时间可以提高精确度 
 ADC1->SMPR2|=7<<0;      //通道0  239.5周期,提高采样时间可以提高精确度
  
// ADC1->SMPR1&=~(7<<18);  //清除通道16原来的设置 
// ADC1->SMPR1|=7<<18;     //通道16  239.5周期,提高采样时间可以提高精确度 

 ADC1->CR2|=1<<0;     //开启AD转换器 
 ADC1->CR2|=1<<3;        //使能复位校准 
 while(ADC1->CR2&1<<3);  //等待校准结束    
    //该位由软件设置并由硬件清除。在校准寄存器被初始化后该位将被清除。   
 ADC1->CR2|=1<<2;        //开启AD校准   
 while(ADC1->CR2&1<<2);  //等待校准结束
 //该位由软件设置以开始校准,并在校准结束时由硬件清除 
}
下面是DMA设置程序:
u16 DMA1_MEM_LEN;//保存DMA每次数据传送的长度      
//DMA1的各通道配置
//这里的传输形式是固定的,这点要根据不同的情况来修改
//从存储器->外设模式/8位数据宽度/存储器增量模式
//DMA_CHxMA通道CHx
//cpar:外设地址
//cmar:存储器地址
//cndtr:数据传输量 
void MYDMA_Config(DMA_Channel_TypeDef*DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
{
 u32 DR_Base;  //做缓冲用,不知道为什么.非要不可
 RCC->AHBENR|=1<<0;//开启DMA1时钟
 DR_Base=cpar;
 DMA_CHx->CPAR=DR_Base;   //DMA1 外设地址
 DMA_CHx->CMAR=(u32)cmar; //DMA1,存储器地址
 DMA1_MEM_LEN=cndtr;      //保存DMA传输数据量
 DMA_CHx->CNDTR=cndtr;    //DMA1,传输数据量
 DMA_CHx->CCR=0X00000000;//复位
 DMA_CHx->CCR&=0<<4;  //从外设读
 DMA_CHx->CCR|=0<<5;  //普通模式
 DMA_CHx->CCR|=0<<6;  //外设地址增量模式
 DMA_CHx->CCR|=1<<7;  //存储器增量模式
 DMA_CHx->CCR|=2<<8;  //外设数据宽度为32位
 DMA_CHx->CCR|=2<<10; //存储器数据宽度32位
 DMA_CHx->CCR|=1<<12; //中等优先级
 DMA_CHx->CCR|=0<<14; //非存储器到存储器模式     
}
//开启一次DMA传输
void MYDMA_Enable(DMA_Channel_TypeDef*DMA_CHx)
{
 DMA_CHx->CCR&=~(1<<0);       //关闭DMA传输
 DMA_CHx->CNDTR=DMA1_MEM_LEN; //DMA1,传输数据量
 DMA_CHx->CCR|=1<<0;          //开启DMA传输
}
请教高手指点是哪个寄存器的问题。。, 研究2天了,谢谢。。。。

知识就像内裤,看不见,但很重要。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-7-10 11:41:22 | 显示全部楼层
这是我写的,可以用的:
adc.c的内容:
#include "adc.h"
#include "dma.h"
//ADC转换       
//正点原子@SCUT
//2008/12/15 
//V1.0
//针对PC0口(ADC_IN10)的转换,采用单次软触发    
u16 ADC_Buf[512];

//ADCIO初始化
void adc_ioinit(void)
{
  RCC->APB2ENR|=1<<2;    //使能PORTA口时钟 
GPIOA->CRL&=0XFFFFFFF0;//PA.0 anolog输入
}
//初始化ADC
//ADC采样频率为:Fadc/Tcovn
//Fadc=11Mhz
//Tcovn=252
//所以采样频率为:43.65Khz
//做512点的FFT,得到每点对应频率为:43.65/512=85.255Hz    
void  adc_init(void)
{    
adc_ioinit();          //IO设置
//通道10/11设置  
RCC->APB2ENR|=1<<9;    //ADC1时钟使能      

RCC->APB2RSTR|=1<<9;   //ADC1复位
RCC->APB2RSTR&=~(1<<9);//复位结束  
RCC->CFGR|=3<<14;      //SYSCLK/DIV2=88M/8=11Mhz 得到ADC采样率位43.65Khz   
 
ADC1->CR1&=0XF0FFFF;   //独立工作模式
ADC1->CR1|=1<<8;       //扫描模式   
ADC1->CR2|=1<<1;       //连续转换模式 
ADC1->CR2|=0x000E0000; //软件控制转换 由bit21控制
ADC1->CR2|=1<<20;      //使用用外部触发(SWSTART)!!! 必须使用一个事件来触发
ADC1->CR2&=~(1<<11);   //右对齐

ADC1->SQR1&=0xFFF0FFFF;//1个转换在规则序列中  
ADC1->SQR3&=0XFFFFFFE0;//规则序列1=通道0
ADC1->SQR3|=0;    
ADC1->SMPR2|=0X07;     //通道0的转换时间为:239.5+12.5个ADC时钟周期    
ADC1->CR2|=1<<0;       //开启AD转换器,第一次唤醒AD转换器  
ADC1->CR2|=1<<3;       //使能复位校准  
while(ADC1->CR2&1<<3); //等待校准结束   
    //该位由软件设置并由硬件清除。在校准寄存器被初始化后该位将被清除。    
ADC1->CR2|=1<<2;       //开启AD校准    
while(ADC1->CR2&1<<2); //等待校准结束
//该位由软件设置以开始校准,并在校准结束时由硬件清除    
ADC1->CR2|=1<<8;    //开启ADC DMA转换

MYDMA_Config(DMA1_Channel1);//配置DMA通道1
MYDMA_Enable(DMA1_Channel1);//开启DMA通道1 
ADC1->CR2|=1<<0;    //开启AD转换   
}
void ReStarAdc(void)
{
adc_init();
//MYDMA_Config(DMA1_Channel1);//配置DMA通道1
//MYDMA_Enable(DMA1_Channel1);//开启DMA通道1 
}
  
//获得ADC值
u16 get_adc(void)   
{     
ADC1->CR2|=1<<22;       //启动规则转换通道 
while(!(ADC1->SR&1<<1));//等待转换结束      
return ADC1->DR; //返回adc值         
}


dma.c的内容:
#include "dma.h"

//DMA1的各通道配置
//DMA_CHxMA1的通道 参考手册

void MYDMA_Config(DMA_Channel_TypeDef*DMA_CHx)
{
RCC->AHBENR|=1<<0;//开启DMA1时钟
DMA_CHx->CPAR=DMA1_DEVICE_ADD;//DMA1 外设地址 ADC1_DR_Address
DMA_CHx->CMAR=DMA1_MEM_ADD;   //DMA1,ADC 存储器地址
DMA_CHx->CNDTR=DMA1_MEM_LEN;  //DMA1,传输数据量
DMA_CHx->CCR=0X00000000;//复位
DMA_CHx->CCR|=0<<4;  //从外设器件读数据
DMA_CHx->CCR|=0<<5;  //非循环模式
DMA_CHx->CCR|=0<<6;  //外设地址非增量模式
DMA_CHx->CCR|=1<<7;  //存储器增量模式
DMA_CHx->CCR|=1<<8;  //外设数据宽度为16位
DMA_CHx->CCR|=1<<10; //存储器数据宽度16位
DMA_CHx->CCR|=1<<13; //高优先级
DMA_CHx->CCR|=0<<14; //非存储器到存储器模式   
}
//开启 DMA传输
void MYDMA_Enable(DMA_Channel_TypeDef*DMA_CHx)
{
DMA_CHx->CCR|=1<<0;  //开启DMA传输
}   
//开启一次DMA传输
//单次DMA转换之后,必须把DMA关闭,再次启动,才能实现第二次DMA传输!!!
void MYDMA_GOnes(DMA_Channel_TypeDef*DMA_CHx)
{   
DMA_CHx->CCR&=~(1<<0);  //关闭DMA传输
DMA_CHx->CNDTR=DMA1_MEM_LEN;  //DMA1,传输数据量
DMA_CHx->CCR|=1<<0;  //开启DMA传输
}

dma.h的内容:
#ifndef __DMA_H
#define __DMA_H    
#include <stm32f10x_lib.h>
//外设地址和存储器地址定义
#define USART1_DR_Base  0x40013804 
#define ADC1_DR_Address 0x4001244C //0x40012400+0x4C


extern u16 ADC_Buf[512];//512个字节,用来存储512点的adc采样值


//DMA1外设器件地址
#define DMA1_DEVICE_ADD ADC1_DR_Address 
//DMA1对应外设的数据存储地址
#define DMA1_MEM_ADD    (u32)ADC_Buf
//DMA1 外设存储长度
#define DMA1_MEM_LEN    (u32)512

 
void MYDMA_Config(DMA_Channel_TypeDef*DMA_CHx);//配置DMA1_CHx
void MYDMA_Enable(DMA_Channel_TypeDef*DMA_CHx);//使能DMA1_CHx
void MYDMA_GOnes(DMA_Channel_TypeDef*DMA_CHx); //执行一次DMA
 
#endif


主函数的内容:
int main(void)
{    
u16 times=0,t;
Stm32_Clock_Init(11);//88M
delay_init(88);     //延时初始化
uart_init(88,9600); //设置波特率
LCD_Init();
LCD_ShowString(0,0," Zhou Li ",16,GREEN); 
LCD_ShowString(0,16,"I Love You",12,RED); 
 
adc_init();

 
  while (1)
    {     
  if(DMA1->ISR&(1<<1)) //传输完成了
{
times++;  
DMA1->IFCR|=1<<1;
MYDMA_GOnes(DMA1_Channel1);
 
for(t=0;t<512;t++)fftres[t].real=ADC_Buf[t];
 
    //for(t=0;t<512;t++)dd[t].imag=0;     
    //delay_ms(10);      
}
                         
    } 
}































我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2011-4-6
在线时间
0 小时
发表于 2011-7-10 16:59:21 | 显示全部楼层
不错,留下备用
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2011-6-2
在线时间
0 小时
 楼主| 发表于 2011-7-11 14:11:02 | 显示全部楼层
回复【3楼】victor:
---------------------------------
哥们,你的这个子函数用到了么?
void MYDMA_Config(DMA_Channel_TypeDef*DMA_CHx) 
还有就是ADC用DMA模式不用开启adc规则通道的转换么?直接开启adc转换器就行么? 
知识就像内裤,看不见,但很重要。。。
回复 支持 反对

使用道具 举报

15

主题

87

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2013-3-5
在线时间
0 小时
发表于 2013-5-20 21:43:01 | 显示全部楼层
标记个,留着以后用
回复 支持 反对

使用道具 举报

26

主题

467

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
876
金钱
876
注册时间
2013-10-3
在线时间
23 小时
发表于 2014-3-13 14:48:05 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,,我用DMA转移ADC的一个通道可以,但是当我规则组中有2个通道时就读不了额 ,为什么啊??我以前用大容量的STM32可以的,就是stm32f103vct6 ,但是换成你的mini板中容量的怎么就不行了呢?这个问题困扰我好几天了,
避免犯错本是错误所在,我错故我在……
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-13 16:41:51 | 显示全部楼层
回复【6楼】zhang164534:
---------------------------------
这个应该是你配置的问题哦。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

467

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
876
金钱
876
注册时间
2013-10-3
在线时间
23 小时
发表于 2014-3-13 19:40:35 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
原子哥,再麻烦你给我看看啊,小弟非常非常感谢啦。实在找不到哪里配置出错了,我感觉很对的啊,你有相同功能的代码吗???求指教
配置如下:
main.c
u32 ADC_ConvertedValue[2]={1};
{
ADC_Configuration();
ADC_DMACmd(ADC1, ENABLE);
  DMA_Configuration(DMA1_Channel1,ADC1_DR_Address,(u32)&ADC_ConvertedValue, 2 );
  //  DMA1通道1,   外设为ADC1,  存储器为ADC_ConvertedValue, 长度2. 
  NVIC_ConfigurationADC();
  DMA_Enable(DMA1_Channel1); //使能DMA1_CHx
while(1)
{
    LED0=1; LED1=0;
   delay_ms(300);

printf("ADC1_0 = %d  \n",ADC_ConvertedValue[0]&0x00000FFF);
printf("ADC1_1 = %d  \n",ADC_ConvertedValue[1]&0x00000FFF);

LED0=0;LED1=1;
delay_ms(300);
}
}

adc.c:
void ADC_InitGPIO()
{
GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能GPIO对应时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入引脚
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIOA->LCKR |= 1<<0; //锁定PA.0模拟输入 
GPIOA->LCKR |= 1<<1; //锁定PA.1模拟输入 
GPIOA->LCKR |= 1<<2; //锁定PA.2模拟输入 
}
void ADC_Configuration()
{
ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE); //使能ADC对应时钟

ADC_InitGPIO();
ADC_DeInit(ADC1); //ADC1复位到缺省值
RCC_ADCCLKConfig(RCC_PCLK2_Div8); //ADC时钟:72M/6 = 12M,ADC时钟最大不能超过14M

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; 
ADC_InitStructure.ADC_ScanConvMode = ENABLE;  //扫描模式(多通道)
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;     //连续(ENABLE)、单次(DISABLE)模式
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;  //软件触发启动,外部触发关闭
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; 
ADC_InitStructure.ADC_NbrOfChannel = 2;   //规则转换时ADC通道数目
ADC_Init(ADC1, &ADC_InitStructure);
//ADC外设 ,通道号,规则组顺序,采样时间值
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5 );
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_239Cycles5 );

ADC_Cmd(ADC1,ENABLE); //使能ADC1
ADC_DMACmd(ADC1, ENABLE); //使能ADC1的DMA

ADC_ResetCalibration(ADC1); //开启ADC1复位校准
while(ADC_GetResetCalibrationStatus(ADC1)); //等待ADC1复位校准结束
ADC_StartCalibration(ADC1); //开启ADC1校准
while(ADC_GetCalibrationStatus(ADC1)); //等待ADC1校准结束

ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}

dma.c:
u16 DMA1_MEM_LEN;     //保存DMA每次数据传送的长度
void DMA_Configuration(DMA_Channel_TypeDef* DMAy_CHx,u32 cpar,u32 cmar,u16 cndtr) 
{   
DMA_InitTypeDef DMA_InitStructure; 
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);//使能DMA时钟

DMA_DeInit(DMAy_CHx); //DMA通道CHx重设为缺省值
DMA1_MEM_LEN = cndtr;
// cmar=1;
DMA_InitStructure.DMA_PeripheralBaseAddr = cpar; 
DMA_InitStructure.DMA_MemoryBaseAddr = cmar;              //DMA的内存基地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;  //外设作为数据来源
DMA_InitStructure.DMA_BufferSize = cndtr;  //DMA缓存的大小,也就是转换的次数
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;     //外设地址不变
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                         //内存地址寄存器递增
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;  //数据宽度为半字
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;      //数据宽度为半字
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;  //循环模式
DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;  //中等优先级
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //非内存到内存传输
 
DMA_Init(DMAy_CHx, &DMA_InitStructure);     //初始化DMA通道 
}

void DMA_Enable(DMA_Channel_TypeDef* DMAy_CHx)
{
DMA_Cmd(DMAy_CHx,DISABLE); //关闭对应的DMAy_CHx通道
DMA_SetCurrDataCounter(DMA1_Channel1,DMA1_MEM_LEN); //设置DMA缓存大小
DMA_Cmd(DMAy_CHx,ENABLE);  //使能对应的DMA_CHx通道
}
避免犯错本是错误所在,我错故我在……
回复 支持 反对

使用道具 举报

26

主题

467

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
876
金钱
876
注册时间
2013-10-3
在线时间
23 小时
发表于 2014-3-13 19:44:34 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
补充:
main.c里面还有如下函数:
SystemInit ();

delay_init(72);
uart_init(115200);
LED_Init();



麻烦你了啊。。。
避免犯错本是错误所在,我错故我在……
回复 支持 反对

使用道具 举报

8

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2014-2-27
在线时间
0 小时
发表于 2014-8-10 10:55:49 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,配置完ADC并启动之后,再配置DMA,启动DMA和配置完ADC,配置DMA,启动DMA,最后启动ADC有什么不一样么?
文可提笔控萝莉,武能床头定人妻,进可欺身压正太,退能提臀迎众基
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-10 23:30:28 | 显示全部楼层
回复【10楼】liucongwoshi:
---------------------------------
这个没测试过,你自己试试吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-4 01:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表