新手入门
- 积分
- 18
- 金钱
- 18
- 注册时间
- 2021-5-9
- 在线时间
- 3 小时
|
1金钱
代码如下,调了半天了,用xcom一打开串口收到的全是“电压值为0.00000”
extern u16 result;
int main()
{ float v;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
Adc_Init();
Led_Init();
while(1)
{ LED0=!LED0;
delay_ms(3000);
v=(float)result*3.3/4096.0;
printf("\nμçÑ1ÖμÎa:%f\n",v);
}
}
u16 result;
void ADC_GPIO_Config()
{ GPIO_InitTypeDef GPIO_success;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//ê1GPIOA¿úê±Öó
GPIO_success.GPIO_Mode=GPIO_Mode_AIN;
GPIO_success.GPIO_Pin =GPIO_Pin_1;
GPIO_success.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_success);//ê1ÄüGPIOA¿ú£¬Ä£ÄaêäèëÄ£ê½
}
void ADC_NVIC_Config()
{
NVIC_InitTypeDef NVIC_success;
NVIC_success.NVIC_IRQChannel =ADC1_2_IRQn;
NVIC_success.NVIC_IRQChannelCmd =ENABLE;
NVIC_success.NVIC_IRQChannelPreemptionPriority =1;
NVIC_success.NVIC_IRQChannelSubPriority =1;
NVIC_Init(&NVIC_success);
}
void Adc_Congfig()
{
ADC_InitTypeDef ADC_success;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);//ê1ÄüADC1ê±Öó
ADC_DeInit(ADC1); //¸′λADC1,½«íaéè ADC1 μÄè«2¿¼Ä′æÆ÷ÖØéèÎaè±ê¡Öμ
ADC_success.ADC_ContinuousConvMode =DISABLE;
ADC_success.ADC_DataAlign =ADC_DataAlign_Right;
ADC_success.ADC_ExternalTrigConv =ADC_ExternalTrigConv_None;
ADC_success.ADC_Mode =ADC_Mode_Independent;
ADC_success.ADC_NbrOfChannel =1;
ADC_success.ADC_ScanConvMode = DISABLE;
ADC_Init(ADC1,&ADC_success);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);//ê±ÖóÔ¤·ÖÆμÏμêyÎa6
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5 );
ADC_SoftwareStartConvCmd(ADC1,ENABLE);
ADC_ITConfig(ADC1, ADC_IT_EOC,ENABLE);
ADC_Cmd(ADC1,ENABLE);
ADC_ResetCalibration(ADC1); //ADCD£×¼
while(ADC_GetResetCalibrationStatus(ADC1)){};
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
}
void ADC1_2_IRQHandler()
{
/* ???????? */
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//μè′yADC×a»»
result=ADC_GetConversionValue(ADC1);
/* ?????? */
ADC_ClearITPendingBit(ADC1, ADC_IT_EOC);
}
/*u16 ADC_Return()
{
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//μè′yADC×a»»
return ADC_GetConversionValue(ADC1);
}
*/
void Adc_Init()
{
ADC_GPIO_Config();
ADC_NVIC_Config();
Adc_Congfig();
}
|
|