y∩__∩y 发表于 2021-7-24 20:26 没有变量进行储存是啥意思呀,不是存给temp了吗 |
daemondong 发表于 2021-7-23 08:43 麻烦帮忙看看是什么的问题 |
temp=(float)adcx*3.3/4096要这样写才对,要把括号去掉,不然3.3/4096都等于零了,而且这计算的结果也没有变量进行储存 |
cpu小白白 发表于 2021-7-23 08:43 你好,第一点就是测量的GND接单片机的GND,然后模拟信号的值接单片机的ADC引脚对吧 2.这些我都检查了,感觉没有问题 3.ADC历程怎么找呀,引脚我换过了也没用 量程检查过了,不是这个的问题 |
lishengaha 发表于 2021-7-24 07:14 你好,16 18是ADC测出来的值。不是公式转换后的电压值 |
daemondong 发表于 2021-7-23 08:43 void Adc_Init(void) { ADC_InitTypeDef ADC_InitStructure; ADC_CommonInitTypeDef ADC_CommonInitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_AHB1Periph_GPIOA |RCC_APB2Periph_ADC1 , ENABLE ); // // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //PA1 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;// GPIO_Init(GPIOA, &GPIO_InitStructure); RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,ENABLE); // RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,DISABLE); // // // // ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent; // ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;// ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; // ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4; // ADC_CommonInit(&ADC_CommonInitStructure); // // ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; // ADC_InitStructure.ADC_ScanConvMode = DISABLE;// ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;// ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;// ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; // ADC_InitStructure.ADC_NbrOfConversion = 1; // ADC_Init(ADC1, &ADC_InitStructure); // ADC_Cmd(ADC1, ENABLE); //开启ADC } |
stm32的参考电压都是直接接电源的也就是3.3v。。你这个16 18是咋算出来的,首先公式肯定错了,看你adc转换出的 数字结果 |
查一下手册,看看硬件连接是否符合要求,参考电压是否选对。 |
Adc_Init()的代码要发上来,应该是初始化的问题。 |
1.测量电压的时候要共地,不知道你公地没有 2.看一下ADC是否使能,时钟是否打开等等,配置问题,查看一下初始化引脚是否对应。 3.上面三个都不对,找ADC历程走一遍(换个引脚) 107的ADC都是3.3V的量程,407的不太清楚量程,要是3.3最好不要接5v的吧 |