欢迎来到天天文库
浏览记录
ID:43463728
大小:15.48 KB
页数:8页
时间:2019-10-03
《STM32利用DMA实现多通道ADC转换程序实例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、网上很多类似资料,总结就是要么给出不完整的一部分,要么就是没有标注说明之类的,鞋面我给大家贴出实用型的,包括如何配置DMA和ADC,如何采集数据,如何处理数据//系统时钟使用72MHZunsignedshortAD_Value[5]={0};//定义成半字节数组voidRCC_Config(void){ErrorStatusHSEStartUpStatus;//定义枚举型变量RCC_DeInit();RCC_HSEConfig(RCC_HSE_ON);HSEStartUpStatus=RCC_WaitForHSEStartUp();if(HSEStartUpStatus==SUCCESS)
2、{RCC_HCLKConfig(RCC_SYSCLK_Div1);RCC_PCLK2Config(RCC_HCLK_Div1);RCC_PCLK1Config(RCC_HCLK_Div2);FLASH_SetLatency(FLASH_Latency_2);FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);RCC_PLLCmd(ENABLE);while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESE
3、T);RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);while(RCC_GetSYSCLKSource()!=0x08);}//---打开设备时钟---//RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA
4、RCC_APB2Periph_GPIOB
5、RCC_APB2Periph_GPIOF,ENABLE);//RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//开串口1和ADC1的时钟}voidADC_Start(void){DMA_Cmd(DMA1_Chan
6、nel1,ENABLE);//启动DMA通道ADC_SoftwareStartConvCmd(ADC1,ENABLE);//软件启动转换}voidDMA_ADC_Config(void){ADC_InitTypeDefADC_InitStructure;DMA_InitTypeDefDMA_InitStructure;GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=(GPIO_Pin_4
7、GPIO_Pin_5
8、GPIO_Pin_6
9、GPIO_Pin_7);GPIO_InitStructure.GPIO_Mode=
10、GPIO_Mode_AIN;//设置成模拟输入GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=(GPIO_Pin_0);GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//设置成模拟输入GPIO_Init(GPIOB,&GPIO_InitStructure);RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);//开ADC1的时钟RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE
11、);//开DMA时钟RCC_ADCCLKConfig(RCC_PCLK2_Div8);//配置ADC时钟,为PCLK2的8分频,即9MHzDMA_DeInit(DMA1_Channel1);//ADC挂接在DMA的通道1上DMA_InitStructure.DMA_PeripheralBaseAddr=ADC_DR_ADDRESS;//DMA外设ADC基地址DMA_InitStructure.DMA_MemoryBaseAddr=(u32)&AD_Value;DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;//内存作为数据传输的目的地DMA_
12、InitStructure.DMA_BufferSize=5;//DMA通道的DMA缓存的大小系统用5个通道DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;//外设地址寄存器不变即地址ADC1->DR不变DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;//内存地址寄存器递增即数组AD_Va
此文档下载收益归作者所有