找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3216|回复: 0
收起左侧

stm32 ADC12路采集DMA程序源码

[复制链接]
ID:280323 发表于 2018-11-21 17:38 | 显示全部楼层 |阅读模式
这里配置一个ADC多路ADC同时触发的DMA程序,

ADC配置
ADC_DeInit(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 = N;                                                                //顺序进行规则转换的ADC通道的数目
        ADC_Init(ADC1, &ADC_InitStructure);        

DMA配置

DMA_DeInit(DMA1_Channel1);                                                                                                                   //将DMA的通道1寄存器重设为缺省值          DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&ADC1->DR;                                          //定义DMA外设基地址为ADC1          DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&ADC_RCVTab;                                         //定义DMA内存基地址          DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;                                                                  //外设作为数据传输的来源          DMA_InitStructure.DMA_BufferSize = N*16;                                                                                          //定义指定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);

配置ADC转换顺序及周期
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 0, ADC_SampleTime_1Cycles5);        ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_1Cycles5);        ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 2, ADC_SampleTime_1Cycles5);                ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 3, ADC_SampleTime_1Cycles5);        ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 4, ADC_SampleTime_1Cycles5);         ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 5, ADC_SampleTime_1Cycles5);        ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 6, ADC_SampleTime_1Cycles5);        ADC_RegularChannelConfig(ADC1, ADC_Channel_7, 7, ADC_SampleTime_1Cycles5);        ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 8, ADC_SampleTime_1Cycles5);         ADC_RegularChannelConfig(ADC1, ADC_Channel_9, 9, ADC_SampleTime_1Cycles5);        ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 10, ADC_SampleTime_1Cycles5);        ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 11, ADC_SampleTime_1Cycles5);

         

stm32adc12路采集DMA.rar

345.94 KB, 下载次数: 41, 下载积分: 黑币 -5

源代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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