STM32利用DMA实现多通道ADC转换程序实例

STM32利用DMA实现多通道ADC转换程序实例

ID:43463728

大小:15.48 KB

页数:8页

时间:2019-10-03

STM32利用DMA实现多通道ADC转换程序实例_第1页
STM32利用DMA实现多通道ADC转换程序实例_第2页
STM32利用DMA实现多通道ADC转换程序实例_第3页
STM32利用DMA实现多通道ADC转换程序实例_第4页
STM32利用DMA实现多通道ADC转换程序实例_第5页
资源描述:

《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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。