[mw_shl_code=c,true]结合LCD的显示,老是显示为0.困扰很久。[/mw_shl_code]
[mw_shl_code=c,true]下面是我按照原子哥,在KEIL 5 下面的ADC.C的编程,各位大神,请指点。[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]#include "stm32f10x_adc.h"
#include "GPIO_STM32F10x.h"
#include "stm32f10x_rcc.h"
#include "delay.h"
#include "LCD12864.h"
#include "adc.h"
#include "stm32F10x_dma.h"
//#include "stm32F10x_adc.h"
#include "ADC22.h"
#define ad_port1 GPIOA
#define ad_pin1 1
void Adc_Init(void)
{
ADC_InitTypeDef ADC_InitStructure;
ADC1_GPIO_Config();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div8);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE ;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
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_DMACmd(ADC1,ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1))
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
}
void ADC1_GPIO_Config(void) 设置AD转换的端口。
{
GPIO_PortClock(ad_port1,ENABLE);
GPIO_PinConfigure(ad_port1,ad_pin1,GPIO_IN_ANALOG,GPIO_MODE_INPUT);
}
u16 Get_Adc(u8 ch) 获取每次的ADC转换值
{
ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_239Cycles5);
ADC_SoftwareStartConvCmd(ADC1,ENABLE);
while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC))
return ADC_GetConversionValue(ADC1);
}
u16 Get_ADC_Average(u8 ch,u8 times) 取平均值,提高精度,取得次数根据自己设置times
{
u32 temp_val=0;
u8 t;
for(t=0;t<times;t++)
{
temp_val+=Get_Adc(ch);
delay_ms(5);
}
temp_val=temp_val/times;
return temp_val;
}
void show_adc(void) 显示ADC的值在LCD上面,显示为0 。
{
u16 adcx1,adcx2,adcVal;
float temp;
//Adc_Init();
/* Show A/D conversion bargraph */
adcx1=Get_ADC_Average(ADC_Channel_1,10);
lcd12864_showLineEx(0,0,16,"%d6 ",adcx1);
lcd12864_refreshEx(0);
temp=(float)adcx1*(3.3/4096);
adcx2=temp;
lcd12864_showLineEx(0,1,16,"%d7 ",adcx2);
lcd12864_refreshEx(1);
}
[/mw_shl_code]
|