打印

查找uint32_t型变量,某位为1最快的方法

[复制链接]
2062|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
午夜霓虹|  楼主 | 2011-7-26 17:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以前总是用与的方法查找某位是不是为1,stm32有更快的方法吗。
沙发
香水城| | 2011-7-26 17:17 | 只看该作者
用与的方法已经是最快的方法了,还要怎么快?

不然可以试试Bit banding。

使用特权

评论回复
板凳
午夜霓虹|  楼主 | 2011-7-26 17:36 | 只看该作者
有个宏定义
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr & 0xFFFFF)<<5)+(bitnum<<2))
#define MEM_ADDR(addr)  *((volatile unsigned long *) (addr))

我用MEM_ADDR(BITBAND(&b,k))  提示出错 错误类型是#31: expression must have integral type
而我填个指针地址就没有错误提示了,不知道是什么原因。

使用特权

评论回复
地板
午夜霓虹|  楼主 | 2011-7-26 17:45 | 只看该作者
好了,得出结论,位操作比与操作慢一个指令周期,省flash空间,但是综合来说速度慢一些。

使用特权

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

本版积分规则

57

主题

462

帖子

1

粉丝