This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2541 协议栈的ADC采样问题



HalAdcRead (HAL_ADC_CHANNEL_1, HAL_ADC_RESOLUTION_10)

这个函数返回的是uint16

想读取负电压值

if((RESULT&0x8000)==0) //由最高位是否为0来判断正负数
{
result[0]=(uint8)(RESULT/10000)+48;
result[1]=(uint8)(RESULT%10000/1000)+48;
result[2]=(uint8)(RESULT%10000%1000/100)+48;
result[3]=(uint8)(RESULT%10000%1000%100/10)+48;
result[4]=(uint8)(RESULT%10000%1000%100%10)+48;
for(i=0;i<4;i++)
{
if(result[i]!=48)
{
for(j=i;j<5;j++)
{
U0DBUF=result[j];
while(!UTX0IF);
UTX0IF=0;
}
break;
}
else if(result[0]==48&&result[1]==48&&result[2]==48&&result[3]==48)
{
U0DBUF=result[4];
while(!UTX0IF);
UTX0IF=0;
}
}
}
else
{
RESULT -= 1;
RESULT ^= 0XFF; //负数处理,按位取反再加一

result[0]=(uint8)(RESULT/10000)+48;
result[1]=(uint8)(RESULT%10000/1000)+48;
result[2]=(uint8)(RESULT%10000%1000/100)+48;
result[3]=(uint8)(RESULT%10000%1000%100/10)+48;
result[4]=(uint8)(RESULT%10000%1000%100%10)+48;

U0DBUF='-';
while(!UTX0IF);
UTX0IF=0;

for(i=0;i<4;i++)
{
if(result[i]!=48)
{
for(j=i;j<5;j++)
{
U0DBUF=result[j];
while(!UTX0IF);
UTX0IF=0;
}
break;
}
else if(result[0]==48&&result[1]==48&&result[2]==48&&result[3]==48)
{
U0DBUF=result[4];
while(!UTX0IF);
UTX0IF=0;
}
}

}

为什么读不到呢。。。