stm32ADC單通道轉換只有兩個io口可以正常使用(通道1.2可以使用),當使用通道2以上時,io口無法采集資料,新手,求大佬解答
uj5u.com熱心網友回復:
檢查其他通道引腳有沒有被占用。最好把代碼發上來,不然不好定位問題uj5u.com熱心網友回復:
#include "ADC.h"
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_ADC1 , ENABLE ); //ê1?üADC1í¨μàê±?ó
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //?£?aê?è?òy??
GPIO_Init(GPIOA, &GPIO_InitStructure);
ADC_DeInit(ADC1);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_Cmd(ADC1, ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}
u16 Get_Adc(u8 ch)
{ADC_RegularChannelConfig(ADC1, ch,1, ADC_SampleTime_239Cycles5 );
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));
return ADC_GetConversionValue(ADC1);
}
//主程式
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "ADC.h"
#include "LED.h"
#include "math.h"
#include "delay.h"
int main(void)
{ u16 adcx;
float t;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
delay_init();
uart_init(115200);
LED_Init();
Adc_Init();
while(1)
{
adcx=Get_Adc(ADC_Channel_2);
t=(float)adcx*(3.3/4096);
if (t<1)
LED0 = 1;
else
LED0=0;
}
}
uj5u.com熱心網友回復:
初始化時設定GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;對應采集ADC_Channel_2(adcx=Get_Adc(ADC_Channel_2);)沒有問題啊uj5u.com熱心網友回復:
你怎么知道 無法采集資料的話看你的程式沒有提取資料啊
在你的主回圈中
adcx=Get_Adc(ADC_Channel_2);
t=(float)adcx*(3.3/4096);
你這個提取的是哪個管腳的
uj5u.com熱心網友回復:
PA2管腳啊
ADC通道2對應的就是PA2.管腳吧
uj5u.com熱心網友回復:
那這個問題要怎么解決啊
代碼三天了都沒動
uj5u.com熱心網友回復:
大佬們,有新的發現了,我測驗了ADC1所有通道,發現只有PA2一個口不能接收資料,換了塊新板子也一樣uj5u.com熱心網友回復:
確定你的CPU有ADC1、2以外的其它口!?轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/104231.html
標籤:單片機/工控
上一篇:求大神幫幫忙感激不盡
下一篇:如何用按鍵控制oled顯示
