STM32F4多通道ADC转换.docx_第1页
STM32F4多通道ADC转换.docx_第2页
STM32F4多通道ADC转换.docx_第3页
STM32F4多通道ADC转换.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include stm32f4_discovery.h#include #define ADC1_DR_Address (uint32_t)0X4001204C) _IO uint16_t AD_Value4 = 0,0,0,0; / 0-3 store Voltage value, 4 store temperature value._IO uint32_t ADC1ConvertedVolt_0 = 0;_IO uint32_t ADC1ConvertedVolt_1 = 0;_IO uint32_t ADC1ConvertedVolt_2 = 0;_IO uint32_t ADC1ConvertedVolt_3 = 0;void ADC1_DMA_Config(void);int main(void)ADC1_DMA_Config();/* Start ADC1 Software Conversion */ ADC_SoftwareStartConv(ADC1);while(1)ADC1ConvertedVolt_0 = AD_Value0 *3300/0xFFF;ADC1ConvertedVolt_1 = AD_Value1 *3300/0xFFF;ADC1ConvertedVolt_2 = AD_Value2 *3300/0xFFF;ADC1ConvertedVolt_3 = AD_Value3 *3300/0xFFF;void ADC1_DMA_Config(void)ADC_InitTypeDef ADC_InitStructure; ADC_CommonInitTypeDef ADC_CommonInitStructure; DMA_InitTypeDef DMA_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; /* Enable ADC1, DMA2 and GPIO clocks */ADC1 in DMA2 channel_0 , Stream0 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2 | RCC_AHB1Periph_GPIOC, ENABLE); /DMA2,GPIO use AHB1 BUS RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); /ADC use APB2 BUS DMA_InitStructure.DMA_Channel = DMA_Channel_0; DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC1_DR_Address; /ADC1 DATA ADDRESS DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&AD_Value; /DMA memory base address DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; DMA_InitStructure.DMA_BufferSize = 4; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; /periphera inc mode: when have multi peripheras need to use DMA 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; /need continue visit DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; DMA_Init(DMA2_Stream0, &DMA_InitStructure); DMA_Cmd(DMA2_Stream0, ENABLE);/ config GPIO GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ; GPIO_Init(GPIOC, &GPIO_InitStructure); /* ADC Common Init */ ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent; /if doubul ADC channels need to synchronous, set dependent. ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2; ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_1; ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles; /ADC_delay_between_2_sampling_phases ADC_CommonInit(&ADC_CommonInitStructure); /* ADC1 Init */ ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; ADC_InitStructure.ADC_ScanConvMode = ENABLE; /if used multi channels set enable ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; /software trig,need function to start:ADC_SoftwareStartConv(ADC3); others: extern trig or timer trig ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; /right align ADC_InitStructure.ADC_NbrOfConversion = 4; /when have 7 channels analoy need to conv,set =7 ADC_Init(ADC1, &ADC_InitStructure);ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_15Cycles);ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 2, ADC_SampleTime_15Cycles);ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 3, ADC_SampleTime_15Cycles);ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 4, ADC_SampleTime_15Cycles); ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE); /if not have this function , cant get new value /* Enable ADC1 DMA */ ADC_DMACmd(ADC1, ENABLE); /make enable ADC1 WITH DMA2 /* Enable ADC1 */ ADC_Cmd(ADC1, ENABLE);#ifdef USE_FULL_ASSERT/* * brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * param file: pointer to the source file name * param line: assert_param error line source number * retval None */void assert_failed(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论