因为ADC的输入电压在0~3.3V。我用信号发生器设置一个0~2V正弦波输出频率为500HZ也就是周期为2ms。ADC采样周期ADC_SampleTime_28Cycles也就是大概(2us)。从串口发送数据显示,可基本上是3.299V测出来。
然后我直接测adcx的值,也基本上出来4095。为什么啊?
int main(void)
{
u16 adcx;
float temp;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168); //初始化延时函数
uart_init(115200); //初始化串口波特率为115200
LED_Init(); //初始化LED
LCD_Init(); //初始化LCD接口
Adc_Init(); //初始化ADC
POINT_COLOR=RED;
LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");
LCD_ShowString(30,70,200,16,16,"ADC TEST");
LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,110,200,16,16,"2014/5/6");
POINT_COLOR=BLUE;//设置字体为蓝 {MOD}
LCD_ShowString(30,130,200,16,16,"ADC1_CH5_VAL:");
LCD_ShowString(30,150,200,16,16,"ADC1_CH5_VOL:0.000V"); //先在固定位置显示小数点
while(1)
{
adcx=Get_Adc_Average(ADC_Channel_5,1);//获取通道5的转换值,20次取平均
printf("%d
",adcx);
}
}
这是主程序。
下面是串口数据
哈哈哈哈,之前用的那块板子VDDA和VREF+本身就是接好的。现在换了一块了,所以这个我没注意到。手动比心哦
一周热门 更多>