OpenEdv-开源电子网

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

dma多通道转换

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
25
金钱
25
注册时间
2015-4-3
在线时间
0 小时
发表于 2015-4-3 10:59:23 | 显示全部楼层 |阅读模式
5金钱
程序已加入#include "dma.h"及相关内置,为什么还不对


void  ADC1_DMA_Config(void)

{
    ADC_InitTypeDef ADC_InitStructure; //??ADC???
    DMA_InitTypeDef DMA_InitStructure;//??DMA???
    GPIO_InitTypeDef GPIO_InitStructure;

     

    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);  //??DMA1??

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1, ENABLE );   //??ADC1?GPIOA????

    RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //??ADC????6 72M/6=12,ADC????????14M

 

    //PA2——PA6 ??5?????????                        

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;       //????

    GPIO_Init(GPIOA, &GPIO_InitStructure); 

 

    //DMA1???1??

    DMA_DeInit(DMA1_Channel1);   //?DMA???1?????????

    DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;  //?????????

    DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&ADCConvertedValue;  //?????????

    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;  //ADC?DMA??(?????)

    DMA_InitStructure.DMA_BufferSize =5;  //DMA???DMA?????

    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;  //?????????

    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;  //?????????

    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord ;  //???????16?

    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //???????16?

    DMA_InitStructure.DMA_Mode =DMA_Mode_Circular;  //?????????

    DMA_InitStructure.DMA_Priority = DMA_Priority_High; //DMA??1??????

    DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;  //DMA??1????????????

    DMA_Init(DMA1_Channel1, &DMA_InitStructure);

     

    DMA_ITConfig(DMA1_Channel1,DMA_IT_TC,ENABLE);//??DMA1??1??????

    DMA_Cmd(DMA1_Channel1,ENABLE);//??DMA1

     

    ADC_DeInit(ADC1);  //??ADC1,??? ADC1 ????????????

    //ADC1???

    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;  //ADC????:ADC1?ADC2???????

    ADC_InitStructure.ADC_ScanConvMode = ENABLE;    //???????????

    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;  //???????????

    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //??????????????

    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;  //ADC?????

    ADC_InitStructure.ADC_NbrOfChannel = 5; //?????????ADC?????

    ADC_Init(ADC1, &ADC_InitStructure); //??ADC_InitStruct???????????ADCx????  

 

    //????????????????

    ADC_RegularChannelConfig(ADC1,ADC_Channel_2, 1, ADC_SampleTime_239Cycles5 );    //ADC1??2?????1,?????239.5??                   

    ADC_RegularChannelConfig(ADC1,ADC_Channel_3, 2, ADC_SampleTime_239Cycles5 );    //ADC1??3?????2,?????239.5??

    ADC_RegularChannelConfig(ADC1,ADC_Channel_4, 3, ADC_SampleTime_239Cycles5 );    //ADC1??4?????3,?????239.5??

    ADC_RegularChannelConfig(ADC1,ADC_Channel_5, 4, ADC_SampleTime_239Cycles5 );    //ADC1??5?????4,?????239.5??

    ADC_RegularChannelConfig(ADC1,ADC_Channel_6, 5, ADC_SampleTime_239Cycles5 );    //ADC1??6?????5,?????239.5??

     

    ADC_DMACmd(ADC1,ENABLE);//??ADC1?DMA????

    ADC_Cmd(ADC1, ENABLE);  //?????ADC1

     

    ADC_ResetCalibration(ADC1); //??ADC1??????  

    while(ADC_GetResetCalibrationStatus(ADC1)); //??ADC1??????????

    ADC_StartCalibration(ADC1);  //????ADC1

    while(ADC_GetCalibrationStatus(ADC1));   //??????

    ADC_SoftwareStartConvCmd(ADC1, ENABLE); //?????ADC1?????????   


}  

最佳答案

查看完整内容[请看2#楼]

加入#include "stm32f10x_adc.h"
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

81

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2013-11-18
在线时间
4 小时
发表于 2015-4-3 10:59:24 | 显示全部楼层
加入#include "stm32f10x_adc.h"
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 03:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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