stm32adc两路转换程序.docx

上传人:牧羊曲112 文档编号:3166236 上传时间:2023-03-11 格式:DOCX 页数:5 大小:37.51KB
返回 下载 相关 举报
stm32adc两路转换程序.docx_第1页
第1页 / 共5页
stm32adc两路转换程序.docx_第2页
第2页 / 共5页
stm32adc两路转换程序.docx_第3页
第3页 / 共5页
stm32adc两路转换程序.docx_第4页
第4页 / 共5页
stm32adc两路转换程序.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《stm32adc两路转换程序.docx》由会员分享,可在线阅读,更多相关《stm32adc两路转换程序.docx(5页珍藏版)》请在三一办公上搜索。

1、stm32adc两路转换程序我用的DMA,分时读取,把程序贴给你,我用的3路,你可以选择其中两路vu16 ADC_ConvertedValue3=0,0,0; /内存区存的AD转换结果,随时变化 分别存PB0和PB1,PC4的数据/*函数功能:AD配置函数入口参数:无出口参数:无*/void ADC_Converted(void)GPIO_InitTypeDef GPIO_InitStructure; /定义GPIO初始化结构体ADC_InitTypeDef ADC_InitStructure; /定义ADC初始化结构体变量DMA_InitTypeDef DMA_InitStructure;

2、/定义DMA初始化结构体RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);/使能DMA时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);/使能ADC1,GPIOB,GPIOA时钟/配置PB0,PB1为模拟输入,GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;GPIO_InitStructure.G

3、PIO_Mode = GPIO_Mode_AIN;GPIO_Init(GPIOB, &GPIO_InitStructure);/配置PC4为模拟输入,GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_Init(GPIOC, &GPIO_InitStructure);/配置DMADMA_DeInit(DMA1_Channel1);/复位DMA通道1DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;

4、/定义 DMA通道外设基地址=ADC1_DR_AddressDMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue; /定义DMA通道存储器地址DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; /指定外设为源地址DMA_InitStructure.DMA_BufferSize = 3; /定义DMA缓冲区大小3 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; /当前外设寄存器地址不变DMA_

5、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通道操作模式位环形缓冲模式DMA_I

6、nitStructure.DMA_Priority = DMA_Priority_High; /禁止DMA通道存储器到存储器传输DMA_Init(DMA1_Channel1, &DMA_InitStructure); /DMA通道优先级高DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; /初始化DMA通道1DMA_Cmd(DMA1_Channel1, ENABLE); /使能DMA通道1/配置ADCADC_InitStructure.ADC_Mode = ADC_Mode_Independent; /ADC1和ADC2工作在独立模式ADC_InitStr

7、ucture.ADC_ScanConvMode = ENABLE; /使能扫描ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; /ADC转换工作在连续模式ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;/由软件控制转换ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; /转换数据右对齐ADC_InitStructure.ADC_NbrOfChannel = 3; /转换通道数目为3,一路电压,一路电流

8、,一路温度ADC_Init(ADC1, &ADC_InitStructure); /初始化ADCADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_71Cycles5);/ADC1选择信道8,音序器等级1,采样时间13.5个周期ADC_RegularChannelConfig(ADC1, ADC_Channel_9, 2, ADC_SampleTime_71Cycles5);/ADC1选择信道9,音序器等级2,采样时间13.5个周期ADC_RegularChannelConfig(ADC1, ADC_Channel_1

9、4, 3, ADC_SampleTime_239Cycles5); /温度采样时间较长/ADC1选择信道14,音序器等级2,采样时间13.5个周期ADC_DMACmd(ADC1, ENABLE); /使能ADC1模块DMAADC_Cmd(ADC1, ENABLE); /使能ADC1ADC_ResetCalibration(ADC1); /重置ADC1校准寄存器while(ADC_GetResetCalibrationStatus(ADC1);/等待ADC1校准重置完成ADC_StartCalibration(ADC1); /开始ADC1校准while(ADC_GetCalibrationStatus(ADC1); /等待ADC1校准完成ADC_SoftwareStartConvCmd(ADC1, ENABLE); /软件使能ADC1开始转换

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号