打印

用STM32执行下面两种滤波代码,那个时间长?

[复制链接]
1855|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jw_andy|  楼主 | 2012-9-27 18:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jw_andy 于 2012-9-27 18:25 编辑

unsigned short wADC_Voltage_X,wADC_Voltage_Y; // 采样ADC的电压,存储到wADC_Voltage_X,wADC_Voltage_Y为上一次的采样值
  unsigned long dwADCTemp,dwADCTemp1;

第一种计算方法:
  dwADCTemp = wADC_Voltage_X*80 + 48*wADC_Voltage_Y; //放大了128倍
  
第二种计算方法:  
dwADCTemp = wADC_Voltage_X;
dwADCTemp <<=6;
dwADCTemp1 =wADC_Voltage_Y;
dwADCTemp1 <<=5;
dwADCTemp += dwADCTemp1;
dwADCTemp1 =wADC_Voltage_X+wADC_Voltage_Y;
dwADCTemp1 <<=4;
dwADCTemp += dwADCTemp1;

请问是直接用乘法快还是移位快?
沙发
zhuyl456| | 2012-9-28 08:24 | 只看该作者
移位快点,不过现在的处理器的频率很高了,这一点区别不大

使用特权

评论回复
板凳
figo20042005| | 2012-9-28 10:11 | 只看该作者
2L说的正确,这个有没有意义得你的系统时钟频率

使用特权

评论回复
地板
jw_andy|  楼主 | 2012-9-28 14:15 | 只看该作者
如果放到ADC采样中断中处理,在频率50K的情况下,20us一个ADC中断,除了采样还要做很多处理,时间非常紧张,用STM32F103处理,区别就有了。

使用特权

评论回复
5
香水城| | 2012-9-28 15:29 | 只看该作者
用103,其实区别十分小

你两种算法都可以试试,用个GPIO在算法前后翻转一下,用示波器看一下,就可以得到确切的数值

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

47

帖子

1

粉丝