资源描述:
《stm32多路adcdma串口发送程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、主函数#include"stm32fl0x.h"#include#include"ADC.h"include"DMA.h"include"UASRT.h"ul6*dyz;〃建立指针ul6sum[16];//printf重定向函数〃intfputc(intch,FILE*f){USART_SendData(USARTl,(uint8_t)ch);while(USART_GetFlagStatus(USARTl,USART_FLAG_TC)==RESET);return(ch);}〃延吋函数〃void
2、delay_ms(ul6time){ul6i=0;while(time-){i=12000;//????while(i-);}}〃主函数〃intmain(void){inti,m,n;Systemlnit();adcjni();USART_int();ADC_SoftwareStartConvCmd(ADCl,ENABLE);//ADC1软启动使能dma();while(l){〃求10次采集的平均值for(m=0;m<10;m卄){dyz=ADC_ConvertedValue;//给指针赋值while(!DMA_G
3、etFlagStatus(DMAl_FLAG_TCl));//等待DAM传输完毕for(i=0;i<16;i++)sum[i]+=*dyz;dyz++;DMA_ClearFlag(DMAl_FLAG_TCl);//清楚DMA发送完成标志位}}for(n=0;n<16;n++){sum[n]/=10;//计算ADC对应通道的平均值printf(,,%d=%d,,,n/sum[n]);//通过串口输出delay_ms(200);ADC的・h文件#讦门def_ADC_H_#define_ADC_H_voidadc_i
4、ni(void){ADC_lnitTypeDefADC_lnitStructure;GPIO」nitTypeDefGPIO」nitStructure;RCC_APB2PenphClockCmd(RCC_APB2Penph_ADCl,ENABLE);//开启ADC1时钟RCC_APB2PenphClockCmd(RCC_APB2Penph_GPIOA
5、RCC_APB2Penph_GPIOB
6、RCC_APB2Periph_GPIOC,ENABLE);//使能GPIO的时钟RCC_APB2PeriphClockCmd(R
7、CC_APB2Periph_AFIO/ENABLE);//开启AFIO时钟〃配置模拟输入引脚GPIO」nitStructure.GPIO_Pin=GPIO_Pin_01GPIO_Pin_l
8、GPIO_Pin_21GPIO_Pin_31GPIO_Pin_41GPIO_Pin_51GPIO_Pin_61GPIO_Pin_7;//选择第0脚GPIO」nitStructure.GPIO_Mode=GPIO_Mode_AIN;//模拟输入模式GPIO」nit(GPIOA,&GPIO」nitStructure);GPIO」ni
9、tStructure.GPIO_Pin=GPIO_Pin_0
10、GPIO_Pin_l;〃选择第0脚GPIO」nitStructure.GPIO_Mode=GPIO_Mode_AIN;//模拟输入模式GPIO」nit(GPIOB,&GPIO」nitStructure);GPIO」nitStructure.GPIO_PinGPIO_Pin_0
11、GPIO_Pin_l
12、GPIO_Pin_2
13、GPIO_Pin_3
14、GPIO_Pin_4
15、GPIO_Pin_5;//选择第0脚GPIO」nitStructure.GPIO_IVIod
16、e=GPIO_Mode_AIN;//模拟输入模式GPIO」nit(GPIOC,&GPIO」nitStructure);〃配置ADCRCC_ADCCLKConfig(RCC_PCLK2_Div6);//ADC吋钟6分频ADC.ADCADCADCADCADCADCADCADCDelnit(ADCl);//ADCl填入缺省值lnitStructure.ADC_Mode=ADC_Mode_lndependent;//ADC匸作在独立模式lnitStructure.ADC_ScanConvMode=ENABLE;//ADC工
17、作在多通道模式lnitStructure.ADC_ContinuousConvMode=ENABLE;//ADC工作在连续模式lnitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//转换由软件启动lnitStructure.ADC_DataAlign二ADC_DataAlign_Right