常驻嘉宾
- 积分
- 4243
- 威望
- 2044
- 贡献
- 1199
- 兑换币
- 1205
- 注册时间
- 2012-9-27
- 在线时间
- 500 小时
|
u16 ad_mid(ADCn adcn, ADC_Ch ch, ADC_nbit bit)
{
u16 i, j, k, tmp;
ASSERT( ((adcn == ADC0) && (ch >= AD8 && ch <= AD18)) || ((adcn == ADC1) && (ch >= AD4a && ch <= AD17)) ) ; //使用断言检测ADCn_CHn是否正常
//3次ADC转换
i = ad_once(adcn, ch, bit);
j = ad_once(adcn, ch, bit);
k = ad_once(adcn, ch, bit);
//取中值
tmp = i > j ? i : j; //tmp取两者最大值
return k > tmp ? tmp : ( k > i ? k : i );
// k>tmp>i tmp>k>i tmp>i>k
}
当tmp=i的时候,即i>j;如果k>tmp,即k>i,此时k>i>j,返回tmp=i,正确;如果,k<tmp,即k<i,返回i,但是i>k,i>j,i并不是中值。
|
|