求修改单片机AD口多次采样求平均值的程序

u16ADC_ZKB(u8Channel){u16value;ADC_CSR=Channel&0x0F;//选择AD转换通道ADC_CR1|=0x01;//启动AD转换w... u16 ADC_ZKB(u8 Channel)
{
u16 value;
ADC_CSR = Channel & 0x0F; // 选择AD转换通道
ADC_CR1 |= 0x01; // 启动AD转换
while(!(ADC_CSR & 0x80)); // 等待AD转换完成
value = ADC_DRL;
value |=((ADC_DRH<<8)&0X0300);

ADC_CSR = 0x00;
return value;
}
这个是采样一次的例子,请在这个函数里面添加采样8次,然后求平均值赋值给value。如果满意后会再给分的。
展开
 我来答
jmhyys
推荐于2017-12-15 · TA获得超过524个赞
知道小有建树答主
回答量:1052
采纳率:62%
帮助的人:284万
展开全部
简单点,建立32位变量A,每采样一次就加到A,采样完8次再除以8就好了,

u16 ADC_ZKB(u8 Channel)
{
u32 value1=0;
u16 value;
u8 i;
for(i=0;i<8;i++)
{
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可能不合适,自己可以改改。
迪凯特科技(北京)有限公司
2023-07-28 广告
单片机的UART口通信速度通常取决于以下几个因素:1. 硬件规格:不同的单片机UART接口具有不同的最大传输速率,通常在数百Kbps到数Mbps的范围内。例如,某些常见的单片机,如STM32F103C8T6,其UART接口的最大传输速率可达... 点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
tony_sgt
2014-10-23 · TA获得超过8423个赞
知道大有可为答主
回答量:5330
采纳率:66%
帮助的人:1199万
展开全部
用个数组跟for回圈就可以了当for回圈完成之后再做平均值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-10-23
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式