本文记录了我在stm32里面对一个整数进行适当的四则运算后,作为10的指数次幂进行幂指数运算时,遇到的问题,以及最终解决问题的方法。上传于此,用于记录,也为了给大家参考。

背景

因为要用到RSSI转距离(公式如下)
d=10∣RSSI∣−A010×nd=10^{\frac{|RSSI|-A_0}{10\times n}}d=1010×n∣RSSI∣−A0​​
原有RSSI因为存在int型里面了,所以不能直接减去A0A_0A0​后直接除以10n,而是要转成float或double。

问题

用代码将int转成double后:

juli=(double) distance[num];
juli=pow(10,((juli-30)/20))*10;
distance[num]=(int)juli;  //距离,单位是分米

用以下代码进行显示:

printf("\r\ndistance为:(单位是分米)\r\n\r\n");{USART_SendData(USART1, distance[num]/100+0x30);//向串口1发送数据while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束USART_RX_STA=0;USART_SendData(USART1, distance[num]/10%10+0x30);//向串口1发送数据while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束USART_RX_STA=0;USART_SendData(USART1, distance[num]%10+0x30);//向串口1发送数据while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束USART_RX_STA=0;}

十进制按照百位、十位、个位分别存储,并由串口输出,但是用串口查看,发现计算结果是乱码:


手动计算一下,RSSI为71时,按照公式d=10×10∣RSSI∣−3010×2d=10\times10^{\frac{|RSSI|-30}{10\times 2}}d=10×1010×2∣RSSI∣−30​计算的距离应该是1122分米,也就是一百多米,因为没有考虑到会出现四位数,所以最高位出现乱码。

解决方法

既然位数不对,那么如果添加到四位数显示,可以吗?
也不行,调成四位数,也就是加上模1000的结果,还是计算错误。其实最大的问题是int位数不够,要把它改成长整型。如下:

juli=(double) distance[num];
juli=pow(10,((juli-30)/20))*10;
distance[num]=(long)juli;  //计算距离,单位是分米。这里long为juli转成long型
//同理,在开头定义变量类型时,distance的定义也要从int改成long。

测试一下,成功

stm32幂指数运算时的错误显示与解决方案相关推荐

  1. 化境上传的时出现 错误 '800a0bbc' 的解决方案

    化境上传的时出现 错误 '800a0bbc' 的解决方案 我使用化境上传的时候出现 ADODB.Stream 错误 '800a0bbc' 写入文件失败. /upload_5xsoft.inc,行 18 ...

  2. Win10系统假死..\TileDataLayer\Database\EDB.log 时出现错误 -1023 (0xfffffc01)解决方案

    现象 win10系统桌面无响应.日志报错svchost (14128,R,98) TILEREPOSITORYS-1-5-18: 打开日志文件 C:\WINDOWS\system32\config\s ...

  3. Mybatis Plus——以XML方式使用 Wrapper 自定义SQL时IDEA错误[**expected, got ‘${‘]解决方案

    问题描述 '(', ',', CROSS, FOR, GROUP, HAVING, INNER, INTO, JOIN, LEFT, LIMIT, LOCK, NATURAL, ORDER, PROC ...

  4. EasyCHM编译的文件在点击节点时出现错误:确保Web地址//ieframe.dll/dnserrordiagoff.htm#正确

    EasyCHM编译后的文件打开时出现错误提示: 解决方案: 一.mht文件的文件名及路径中不能包含中文. 二.修改节点的属性,检查路径是否正确.

  5. oracle drop user失败,升级失败后,在drop user时出现错误ORA-00600 kkpo_rcinfo_defstg:objnotfound...

    关于升级失败后,在drop user时出现错误ORA-00600的解决方案: 当前DB版本: SQL> select * from v$version where rownum<5; BA ...

  6. vs code编辑php时,突然显示红色波浪线的错误提示的解决方案

    vs code编辑php时,突然显示红色波浪线的错误提示的解决方案 参考文章: (1)vs code编辑php时,突然显示红色波浪线的错误提示的解决方案 (2)https://www.cnblogs. ...

  7. 解决MacOS系统升级时显示安装所选更新时发生错误的问题

    如果您在Mac偏好设置中勾选了"自动保持我的Mac最新"功能,那么您的Mac电脑会在自动在apple发布新的MacOS版本时,下载与更新您的macOS.有部分用户在升级比较大的&q ...

  8. 单据点击套打设置报错,显示可用的套打单据列表时发生错误处理方法

    单据点击套打设置报错,显示可用的套打单据列表时发生错误.提示如下: 请按照下列步骤操作: 1.登录 K/3 主控台后,依次单击[系统设置]→[系统设置]→[销售管理],双击[打印控制]: 2.打开[系 ...

  9. 张老太养了两只猫:一只叫小花,今年3岁白色。另一只叫小白,今年3岁花色,编写一个程序,当用户输入小猫的名字时,就显示该猫的名字、年龄、颜色。如果输入的小猫名错误, 则显:张老太没有这只猫。

    //    1. 案例题目描述:   按要求完成以下题目 //    张老太养了两只猫:一只叫小花,今年3岁白色.另一只叫小白,今年3岁花色. //    请 编写一个程序,当用户输入小猫的名字时,就 ...

  10. 磁盘显示执行页内操作时的错误要如何找到资料

    执行页内操作时的错误说明这个盘的文件系统结构损坏了.在平时如果数据不重要,那么可以直接格式化就能用了.但是有的时候里面的数据很重要,那么就必须先恢复出数据再格式化.具体恢复方法可以看正文了解(不格式化 ...

最新文章

  1. 已知机器人阿木木_LOL殇之机器人 阿木木皮肤
  2. stl-map的一道很好的题目
  3. 左神算法:判断 t1 树是否包含t2 树全部的拓扑结构(剑指 Offer 26. 树的子结构,Java版)
  4. reduceByKey和groupByKey区别与用法
  5. data:text/html firefox钓鱼,JS DataURL 整理(一)
  6. 08-Flutter移动电商实战-dio基础_伪造请求头获取数据
  7. java swing进度条_Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)
  8. python旋转矩阵_python – 来自两个3D点的Euler角度和旋转矩阵
  9. mysql取系统当前时间的函数
  10. APP测试之Monkey压力测试(一)
  11. 体育馆预约系统java_基于SSM框架下的JAVA体育场地预约系统
  12. linux+qq+输入法下载,QQ拼音输入法下载
  13. python进阶例题
  14. 逆向工具Cutter
  15. C语言练习作品 - U盘病毒模拟
  16. 【WPS表格】避免数据重复录入快速核对某列数据是否相同对比两个工作表的数据
  17. Windows 优质软件
  18. 色色教你玩魔方(傻瓜式全程图解教学)
  19. Java小试牛刀—运算符
  20. QtQuick串口编程Demo

热门文章

  1. 近期你已经授权登录过_不查不知道,我的微信、QQ 居然授权登录过这么多应用!...
  2. 计算32768晶体的负载电容,与晶体手册电容匹配
  3. C# webBrowser打开网页出现脚本错误解决
  4. 【撸大湿】Storm 分布式BP神经网络(开源)
  5. 我爱淘二次冲刺阶段2
  6. Jeffrey Dean联署论文 The Case for Learned Index Structures
  7. 小心,Android木马工具SpyNote免费啦!远程监听就是这么简单
  8. 笔记本电脑共享WiFi
  9. 一键生成App图标所有尺寸的三个酷站分享
  10. lunix 下编译draco遇到的问题及解决办法