1256|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

DSP对位操作的C++的简单封装 [复制链接]

位操作在为硬件编程中是非常普遍的。往往是寄存器的各位都具有不同的意义,包括获取位状态,给位置数等。

正因为位操作这么普遍,往往容易出现错误,而且除了那些对HEX编码,以及二进制编码非常熟悉的大牛之外,一般很难发现错在哪。

另外,尤其是在中断之类的要求快速处理完成的过程中,对位操作的执行效率要求也高。

我使用模板对位操作做了一个简单的封装


定义各种类型的位掩码:


[cpp] view plain copy
print?


  • /**
  • * 位掩码
  • */  
  • template  
  • class BitMaskSet{  
  • public:  
  •     static const T v ;  
  • };  
  •   
  • template  
  • const T BitMaskSet::v = (1u<


这个类定义了简单的某位的掩码值,比如双字节的位8的掩码

BitMaskSet::v;


[cpp] view plain copy
print?


  • /**
  • * 清除位掩码
  • */  
  • template  
  • class BitMaskClr{  
  • public:  
  •     static const T v;  
  • };  
  •   
  • template  
  • const T BitMaskClr::v = ~(1u<


同时还封装了一些简化的操作函数

[cpp] view plain copy
print?


  • /**
  • * 获取位值
  • * @param v
  • * @return
  • */  
  • template  
  • inline Tmask getBit( const Tv& v ){  
  •     return v&(BitMaskSet::v);  
  • }  
  •   
  • /**
  • * 位值是否设置
  • * @param v
  • * @return
  • */  
  • template  
  • inline bool isBitSet( const Tv& v ){  
  •     return 0!=v&(BitMaskSet::v);  
  • }  
  •   
  • /**
  • * 设置位
  • * @param v
  • */  
  • template  
  • inline void bitSet( Tv& v ){  
  •     v |= BitMaskSet::v;  
  • }  
  •   
  • /**
  • * 清除位
  • * @param v
  • */  
  • template  
  • inline void bitClr( Tv& v ){  
  •     v &= BitMaskClr::v;  
  • }  


下面来举几个例子

比如在PIE模块中,使能PDPINTA或者禁用,可以使用一下代码:


[cpp] view plain copy
print?


  • inline void en_pdpIntA(){   NDm::bitSet(m_ier1);    }  
  • inline void dis_pdpIntA(){  NDm::bitClr(m_ier1);    }  


从编码风格上看,上面的两行代码非常整齐,而且很直观的看出都是对位0进行操作,一个是设置,一个是清除。

即使有书写错误也很容易识别出来。


点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表