历史上的今天
返回首页

历史上的今天

今天是:2024年10月06日(星期日)

2018年10月06日 | STM32ADC单次转换DMA读取

2018-10-06 来源:eefocus

      DMA读取方式很适合高频率的ADC采样信号。

     ADC的DMA读取方式,其实和上一篇的中断读取方式差不多,初始化代码更是相似。初始化代码如下:

static void ADC_GPIO_Config(void)

{

  GPIO_InitTypeDef  GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //ʹÄÜPB,PE¶Ë¿ÚʱÖÓ

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;

GPIO_Init(GPIOA, &GPIO_InitStructure);

}

static void ADC_Mode_Config(void)

{

  ADC_InitTypeDef ADC_InitStructure;

  DMA_InitTypeDef DMA_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);

DMA_DeInit(DMA1_Channel1);

DMA_InitStructure.DMA_PeripheralBaseAddr=(uint32_t)&ADC1->DR;

DMA_InitStructure.DMA_MemoryBaseAddr=(uint32_t)&adcconverdata;

DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;

DMA_InitStructure.DMA_BufferSize=1;

DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;

DMA_InitStructure.DMA_PeripheralInc =DMA_PeripheralInc_Disable ;

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(DMA1_Channel1,&DMA_InitStructure);

DMA_Cmd(DMA1_Channel1,ENABLE);

ADC_DeInit(ADC1);

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;

ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;

ADC_InitStructure.ADC_ScanConvMode=DISABLE;

ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

ADC_InitStructure.ADC_NbrOfChannel=ADC_Channel_1;

ADC_Init(ADC1,&ADC_InitStructure);

RCC_ADCCLKConfig(RCC_PCLK2_Div8); 

ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5);

ADC_DMACmd(ADC1,ENABLE);

  ADC_Cmd(ADC1,ENABLE);

ADC_ResetCalibration(ADC1);

while(ADC_GetResetCalibrationStatus(ADC1));

ADC_StartCalibration(ADC1);

while(ADC_GetCalibrationStatus(ADC1));

ADC_SoftwareStartConvCmd(ADC1,ENABLE);

}

void ADC_InitConfig(void)

{

  ADC_GPIO_Config();

  ADC_Mode_Config();

}

上面代码写的很清楚了,虽然没有标注,相信也能看懂,代码很简单,就不做解释了


推荐阅读

史海拾趣

Califia Lighting公司的发展小趣事

随着产品质量的不断提升和市场份额的逐步扩大,Califia Lighting开始积极寻求与国际市场的合作。他们与多个国家和地区的合作伙伴建立了稳定的合作关系,将产品出口到全球各地。同时,公司还参加了多个国际电子照明展会,与全球同行交流学习,进一步提升了公司的国际影响力。

ANOVA公司的发展小趣事

ANOVA深知,成功的关键在于与合作伙伴的紧密合作。因此,公司始终与客户保持紧密的合作关系,共同开发特定的解决方案,协助制定部署策略。ANOVA的服务团队以客户的需求为导向,以十几种语言提供个性化的服务,确保每一位客户都能得到满意的解决方案。此外,ANOVA还积极与商业伙伴合作,共同开拓市场,实现共赢。

Alorium Technology公司的发展小趣事

ANOVA公司的成功并非偶然,它始终站在技术创新的前沿。公司积极推动新通信技术、电池寿命和移动应用等方面的创新,不断推动电子行业的发展。ANOVA的研发团队不断探索新技术,致力于为客户提供最先进的解决方案,帮助客户在激烈的市场竞争中保持领先地位。

杰力(EMC)公司的发展小趣事

杰力(EMC)公司成立于XXXX年,由一群具有丰富电子行业经验的专业人士创立。公司初期专注于功率组件和集成电路(IC)的设计与开发,以满足不断增长的电子市场需求。通过引进先进的生产设备和工艺,杰力迅速建立起一条高效的生产线,并开始为一些小型电子厂商提供定制化的产品。随着产品质量的不断提升和客户口碑的积累,杰力逐渐在市场中树立了良好的品牌形象。

Crydom公司的发展小趣事

随着公司规模的扩大和产品线的丰富,杰力开始积极拓展市场。公司参加各类电子展会和论坛,与国内外客户建立联系和合作。同时,杰力还加强了品牌宣传和推广力度,通过媒体广告、网络营销等方式提高品牌知名度和美誉度。这些努力使得杰力的产品在国内外市场上获得了更广泛的认可和应用。

DFI公司的发展小趣事

DFI公司自创立之初,就致力于技术创新。在电子主板领域,DFI凭借其对高性能主板的深入研究,成功开发出多款领先行业的产品。例如,在2002年,DFI推出了LanParty UT nF4 SLI-DR Venus限量版主板,这款产品凭借其出色的性能和稳定性,迅速赢得了全球玩家的青睐。这一系列的创新举措不仅提升了DFI的品牌知名度,也为其在电子主板市场占据了重要地位。

问答坊 | AI 解惑

dsp2812评估板 LCD例程

dsp2812评估板 LCD例程…

查看全部问答>

assertion failed! afxcmn2.inl 110行

在winXP下 VC写的SOCKET通信的程序可以正常运行,但是在EVC写进行改写,Wince上运行出现了assertion failed! afxcmn2.inl 110行 请教一下,这是什么错误?…

查看全部问答>

怎么修改对话框的边界?

我在对话框上加了个Picutre Control,里面显示了一张宽度为240的位图,可是对话框两边始终有一些空白,怎么消除掉? 谢谢…

查看全部问答>

ST让我如何相信你?

                                 申请 付费 的样片几个月了(答应3月底)还是音信全无啊?!…

查看全部问答>

用ftp下载vxworks镜像到目标机的时候,网络有问题,求助各位前辈

通过ftp将vxworks镜像从PC机下到目标机的时候,是通过ftpXfer这个函数从PC机读取文件,每次读完镜像之后关闭套接字,但套接字指定的端口变成就会time_wait状态,就要等一段时间才能通过这个函数,从PC机再次通过ftp下载镜像,但这段时间有一分半钟 ...…

查看全部问答>

求一个S3C2440 WINCE6.0 的BSP

求一个S3C2440   WINCE6.0 的BSP,我网上下载了一个  总是编译出错,哪位高人那里有通过编译的BSP,发我一份吧! 感激不尽! eyob@163.com  …

查看全部问答>

大家看下这个 到底哪错了

#include #include #define         F_CPU        7372800                                  &nb ...…

查看全部问答>

【建议】C2000 LaunchPad一学二做

现在坛子里相信有很多人拥有C2000 LaunchPad,给学习C2000带来了方便。如果能组织一下编写它的学习及应用方面的文章,将会给广大网友、特别是以后入门C2000的人带来福音。 我建议: 1、写学习经验。    组织有使用经验的人,写出系 ...…

查看全部问答>

2013全国大学生电子竞赛本科题组(全)

本帖最后由 paulhyde 于 2014-9-15 03:20 编辑    …

查看全部问答>

在zigbee协议栈定时器中断问题

不加入协议栈时,定时器能正常工作,加入协议栈后定时器不能正常工作,求指点 这是我的定时器吃时候函数 void Timer1_Init(void) {      /*设置P1.0为输出模式*/   P1DIR = 0xff; //  P1_0=0; &n ...…

查看全部问答>