你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于stm32解决校验和计算问题

[复制链接]
攻城狮Melo 发布时间:2023-3-14 17:16
常用的通信中,经常会有一些校验方法,比如DHT22的单总线协议。

20181124194632337.jpg

根据参考手册,只需要计算
  1. if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
复制代码

就可以了,但是!!!

对于stm32来说,其计算结果可能不是想象中的那样,举个例子,buf0-4的值都为0x80,那么和就是0x200,至少对于stm32来说,结果是0x00000200,而buf[4]的值是0,那么0x200和0相等吗?
所以这个判断不成立,就得不到我们想要的值。
只需要在判断计算的时候加一个变量强制转换,或者对256取模就可以了。
  1. if((u8)(buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
  2.         {
  3.             *humi=(buf[0]*256+buf[1])/10;
  4.             *temp=(buf[2]*256+buf[3])/10;
  5.         }
复制代码
  1. if(((buf[0]+buf[1]+buf[2]+buf[3])%256)==buf[4])
  2.         {
  3.             *humi=(buf[0]*256+buf[1])/10;
  4.             *temp=(buf[2]*256+buf[3])/10;
  5.         }
复制代码

————————————————
版权声明:小盼你最萌哒
如有侵权请联系删除



收藏 评论0 发布时间:2023-3-14 17:16

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版