完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本程序采用STM32F103C8T6的3通道adc采集,其中为PA1(ADC1,ch,1,),PA2(ADC1,ch,2,),PA3(ADC1,ch,1,)
adc.c文件 #include "adc.h" #include "delay.h" extern int adcr,adcg,adcb; void Adc_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1,ENABLE); RCC_ADCCLKConfig(RCC_PCLK2_Div4); GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; GPIO_Init(GPIOA,&GPIO_InitStructure); ADC_DeInit(ADC1); ADC_InitStructure.ADC_ContinuousConvMode=ENABLE; ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right; ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_Mode=ADC_Mode_Independent; ADC_InitStructure.ADC_NbrOfChannel=1; ADC_InitStructure.ADC_ScanConvMode=DISABLE; ADC_Init(ADC1,&ADC_InitStructure); ADC_Cmd(ADC1,ENABLE); ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1)); } u16 Get_Adc(u8 ch) { ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_1Cycles5); ADC_RegularChannelConfig(ADC1,ch,2,ADC_SampleTime_1Cycles5); ADC_RegularChannelConfig(ADC1,ch,3,ADC_SampleTime_1Cycles5); ADC_SoftwareStartConvCmd(ADC1,ENABLE); while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)); return ADC_GetConversionValue(ADC1); } u16 Get_Adc_Average(u8 ch,u8 times) { u32 temp_val=0; u8 t; for(t=0;t temp_val+=Get_Adc(ch); delay_ms(5); } return temp_val/times; } int get_adc(u8 dex) { int over; while(1) { switch(dex) { case 0x01: over = adcr; break; case 0x02: over = adcg; break; case 0x03: over = adcb; break; } return over; } } adc.h文件 #ifndef __ADC_H #define __ADC_H #include "sys.h" void Adc_Init(void); u16 Get_Adc(u8 ch); u16 Get_Adc_Average(u8 ch,u8 times); int get_adc(u8 dex); #endif main.c文件 #include "sys.h" #include "delay.h" #include "usart.h" #include "adc.h" #include "led.h" int main(void) { u8 t=0; delay_init(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); uart_init(115200); Adc_Init(); LED_Init(); while(1) { if(t%10==0) { adcr=Get_Adc_Average(ADC_Channel_1,10); adcg=Get_Adc_Average(ADC_Channel_2,10); adcb=Get_Adc_Average(ADC_Channel_3,10); printf("adc1:%d adc2:%d adc3:%dn",adcr,adcg,adcb); } delay_ms(10); t++; if(t==20) { t=0; } } } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1935浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
728浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
567浏览 3评论
593浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
551浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 10:33 , Processed in 0.648256 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号