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

[复制链接]
2895|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

主题

463

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部