一种经典的STM32 ADC多通道转换详细解析.doc
《一种经典的STM32 ADC多通道转换详细解析.doc》由会员分享,可在线阅读,更多相关《一种经典的STM32 ADC多通道转换详细解析.doc(6页珍藏版)》请在三一文库上搜索。
1、一种经典的STM32 ADC多通道转换详细解析STM32ADC多通道转换描述:用ADC连续采集11路模拟信号,并由DMA传输到内存。ADC配置为扫描并且连续转换模式,ADC的时钟配置为12MHZ。在每次转换结束后,由DMA循环将转换的数据传输到内存中。ADC可以连续采集N次求平均值。最后通过串口传输出最后转换的结果。程序如下:includestm32f10x.h/这个头文件包括STM32F10x所有外围寄存器、位、内存映射的定义includeeval.h/头文件(包括串口、按键、LED的函数声明)includeSysTIckDelay.hincludeUART_INTERFACE.hinclu
2、de#defineN50/每通道采50次#defineM12/为12个通道vu16AD_ValueNM;/用来存放ADC转换结果,也是DMA的目标地址vu16After_filterM;/用来存放求平均值之后的结果inTI;voidGPIO_ConfiguraTIon(void)GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;/因为USART1管脚是以复用的形式接到GPIO口上的,所以使用复用推挽式输出GP
3、IO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,GPIO_InitStructure);/PA0/1/2作为模拟通道输入引脚GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;GP
4、IO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;/模拟输入引脚GPIO_Init(GPIOA,GPIO_InitStructure);/PB0/1作为模拟通道输入引脚GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;/模拟输入引脚GPIO_Init(GPIOB,GPIO_InitStructure);/PC0/1/2/3/4/5作为模拟通道输入引脚GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|G
5、PIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;/模拟输入引脚GPIO_Init(GPIOC,GPIO_InitStructure);voidRCC_Configuration(void)ErrorStatusHSEStartUpStatus;RCC_DeInit();/RCC系统复位RCC_HSEConfig(RCC_HSE_ON);/开启HSEHSEStartUpStatus=RCC_WaitForHSEStartUp();/等待HSE准备好if
6、(HSEStartUpStatus=SUCCESS)FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/EnablePrefetchBufferFLASH_SetLatency(FLASH_Latency_2);/Set2LatencycyclesRCC_HCLKConfig(RCC_SYSCLK_Div1);/AHBclock=SYSCLKRCC_PCLK2Config(RCC_HCLK_Div1);/APB2clock=HCLKRCC_PCLK1Config(RCC_HCLK_Div2);/APB1clock=HCLK/2RCC_PL
7、LConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_6);/PLLCLK=12MHz*6=72MHzRCC_PLLCmd(ENABLE);/EnablePLLwhile(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)=RESET);/WaittillPLLisreadyRCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/SelectPLLassystemclocksourcewhile(RCC_GetSYSCLKSource()!=0x08);/WaittillPLLisusedassystemclocks
8、ourceRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_ADC1|RCC_APB2Periph_AFIO|RCC_APB2Periph_USART1,ENABLE);/使能ADC1通道时钟,各个管脚时钟RCC_ADCCLKConfig(RCC_PCLK2_Div6);/72M/6=12,ADC最大时间不能超过14MRCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);/使能DMA传输voidADC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一种经典的STM32 ADC多通道转换详细解析 一种 经典 STM32 ADC 通道 转换 详细 解析
链接地址:https://www.31doc.com/p-3364810.html