- 打卡等级:常住居民III
- 打卡总天数:174
- 最近打卡:2025-07-04 17:20:41
已绑定手机
高级会员
- 积分
- 799
|
发表于 2024-8-1 11:14:26
|
显示全部楼层
找到原因了:
void ADC_Init( void )
{
P1M0 = 0x00; P1M1 = 0xff;
P0PU = 0x00;
P0PD = 0x00;
ADCTIM = 0X3F; //
ADCCFG = 0X37; //数据右对齐,时钟选择位SYSCLK/2/16最慢
ADC_POWER = 1;
}
//
float ADC_PIPE_READ(u8 p)
{
u16 adcval; //adc数值保存变量
float v=0;
ADC_RES =0;
ADC_RESL =0;
ADC_CONTR &= 0xf0;//清空通道
ADC_CONTR |= p;
// ADC_POWER = 1;
ADC_START = 1; //开启ADC转化
_nop_(); //空操作指令
_nop_();
while(!ADC_FLAG); //等待ADC转换结束
ADC_FLAG = 0;
printf("ADC_RES:->0x%X\r\n",ADC_RES);
printf("ADC_RESL:->0x%X\r\n",ADC_RESL);
adcval = (ADC_RES << 8) + ADC_RESL; //计算adc的数值
printf("ADC_Data: %x\r\n",adcval);
v=(4.86/(float)4096)*(float)adcval;
printf("电压值:%.2f\r\n",v);
return v;
}
[11:14:16.357]接收←ADC_RES:->0x6
ADC_RESL:->0x13
ADC_Data: 613
电压值:1.85
电压:1.85 |
|