资源描述:
《STM32多路ADC+DMA+串口发送程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、主函数#include"stm32f10x.h"#include#include"ADC.h"#include"DMA.h"#include"UASRT.h"u16*dyz;//建立指针u16sum[16];//printf重定向函数//intfputc(intch,FILE*f){USART_SendData(USART1,(uint8_t)ch);while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);return(ch);}//延时函数//voiddelay_ms
2、(u16time){u16i=0;while(time--){i=12000;//????while(i--);}}//主函数//intmain(void){inti,m,n;SystemInit();adc_ini();USART_int();ADC_SoftwareStartConvCmd(ADC1,ENABLE);//ADC1软启动使能dma();while(1){//求10次采集的平均值for(m=0;m<10;m++){dyz=ADC_ConvertedValue;//给指针赋值while(!DMA_GetFlagStatus(DM
3、A1_FLAG_TC1));//等待DAM传输完毕for(i=0;i<16;i++){sum[i]+=*dyz;dyz++;DMA_ClearFlag(DMA1_FLAG_TC1);//清楚DMA发送完成标志位}}for(n=0;n<16;n++){sum[n]/=10;//计算ADC对应通道的平均值printf("%d=%d",n,sum[n]);//通过串口输出delay_ms(200);}}}ADC的.h文件#ifndef__ADC_H_#define__ADC_H_voidadc_ini(void){ADC_InitTypeDef
4、ADC_InitStructure;GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);//开启ADC1时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA
5、RCC_APB2Periph_GPIOB
6、RCC_APB2Periph_GPIOC,ENABLE);//使能GPIO的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//开启
7、AFIO时钟//配置模拟输入引脚GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0
8、GPIO_Pin_1
9、GPIO_Pin_2
10、GPIO_Pin_3
11、GPIO_Pin_4
12、GPIO_Pin_5
13、GPIO_Pin_6
14、GPIO_Pin_7;//选择第0脚GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//模拟输入模式GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0
15、GPIO_Pin
16、_1;//选择第0脚GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//模拟输入模式GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0
17、GPIO_Pin_1
18、GPIO_Pin_2
19、GPIO_Pin_3
20、GPIO_Pin_4
21、GPIO_Pin_5;//选择第0脚GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//模拟输入模式GPIO_Init(GPIOC,&GPIO_In
22、itStructure);//配置ADCRCC_ADCCLKConfig(RCC_PCLK2_Div6);//ADC时钟6分频ADC_DeInit(ADC1);//ADC1填入缺省值ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//ADC工作在独立模式ADC_InitStructure.ADC_ScanConvMode=ENABLE;//ADC工作在多通道模式ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;//ADC工作在连续模式ADC_Init
23、Structure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//转换由软件启动ADC_InitStructur