1. 第一个用来把每次采的点建成数组,即每次把新采的数据加到数组最后。
2. 当25s后或数组长度满如旦100后,蚂袜取此数组的最后100个数据建立子数组,然后对此子数组求平均值,存到第二个移位寄存器中。
3. 然后把上述数组清空,准备再存入新采的另外100个数据。满100后再取平均,然后与第二个寄存器比较。
4. 如果第二个寄存器中的值比新平均值小,得到闷橡激结果,结束循环。
5. 如果不比新平均值小,则把新平均值存入第二个寄存器,返回第2步。
简单点,建立32位变伍稿灶量A,每采样一次就加到A,采样完8次再除以8就好了,u16 ADC_ZKB(u8 Channel)
{
u32 value1=0
u16 value
u8 i
for(i=0i<8i++)
{
ADC_CSR = Channel &0x0F // 选择AD转换通道
ADC_CR1 |= 0x01 // 启动AD转换
while(!(ADC_CSR &0x80))// 等待AD转换完成
value = ADC_DRL
value |=((ADC_DRH<<8)&0X0300)
value1+=value
ADC_CSR = 0x00
}
return (value1/8)
}
大概这意思,怎敬雹么定义32位数,这个自己去查,因为AD采样时间比较久,估计这样FOR可能不合适,腔扮自己可以改改。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)