OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6792|回复: 12

STM32F103 keil环境下 float 赋值异常,有些疑问

[复制链接]

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2016-10-16
在线时间
11 小时
发表于 2016-10-16 17:24:00 | 显示全部楼层 |阅读模式
我用3.5寸的触摸屏时,里面用到一个变量体,下图是定义,其中倒数第2到倒数第5个是,屏幕校准的参数,因为我用的是最小系统没焊flash或者24c02之类的上去,就取消了自动校准,自己测了几次把参数求出来直接赋值,但是在赋值时遇到了一点问题。
      

变量体的定义

变量体的定义


于是我就在定义变量的时候直接赋值,但是提示数据有错,把double型的赋值给 u16(unsigned short)型的,但是定义明明是float 怎么就变成了u16了?一开始我没有理它,编译也可用通过,但是触摸有问题,也就是赋值出错了。
fz2.PNG

我想既然说我是double型的,而我定义的又是float,那我强制转化一下好了,于是问题更大了…………

赋值

赋值

报错

报错


不知道为什么定义的明明是float型的,但系统好像把它当u16型的,赋值也就失败了。


但是后来我先定义好,再在主程序里赋值又没问题了,编译通过,触摸也可以正常使用。就像 int a=8;和int a;a=8;等价,一样才对呀,为什么这个数据体定义的时候赋值会出错。
fz3.png

后来我又把float改成double试了下还是不行,再接着我发现我改回float 也没用强制转换了,编译也通不过了,感觉莫名其妙,幸好先定义再赋值没问题,有人可以解答一下为什么不可以在定义时就赋值吗。是有什么规制我不知道,还是arm或者keil的bug,或者其他什么

最后再附上一个没验证过的,也说float有问题的帖子链接 http://bbs.21ic.com/icview-694560-1-1.html




追风九度八
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2016-10-16 18:58:19 | 显示全部楼层
你好好数一下数吧。你定义的float变量在第七个和第八个,你使用的在第八个和第九个,所以那个错误报在第九个赋值-0.091,第八个赋值却没有报错。
回复 支持 1 反对 0

使用道具 举报

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2016-10-16
在线时间
11 小时
 楼主| 发表于 2016-10-16 17:27:10 | 显示全部楼层
不好意思没看论坛规则,帖子分类发错了,不知道有没有人解答
追风九度八
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2016-10-16
在线时间
11 小时
 楼主| 发表于 2016-10-16 17:38:21 | 显示全部楼层
枫渔 发表于 2016-10-16 17:27
不好意思没看论坛规则,帖子分类发错了,不知道有没有人解答

如果把这当成问题探讨是不是也可以算分享帖呢
追风九度八
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2016-10-16
在线时间
11 小时
 楼主| 发表于 2016-10-17 15:24:58 来自手机 | 显示全部楼层
BMN李 发表于 2016-10-16 18:58
你好好数一下数吧。你定义的float变量在第七个和第八个,你使用的在第八个和第九个,所以那个错误报在第九 ...

居然不小心多了个0我待会再试试,谢谢啦
回复 支持 反对

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-10-17 16:26:56 | 显示全部楼层
错误的英文提示不是说的很清楚吗?又不是提示不让你赋值。
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2016-10-16
在线时间
11 小时
 楼主| 发表于 2016-10-17 19:28:52 | 显示全部楼层
BMN李 发表于 2016-10-16 18:58
你好好数一下数吧。你定义的float变量在第七个和第八个,你使用的在第八个和第九个,所以那个错误报在第九 ...

  我改后,试了一下,还是有问题D:\zxw\QT\1.float赋值疑问\fz4.bmp

修改后赋值

修改后赋值

修改后赋值结果

修改后赋值结果

追风九度八
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2016-10-16
在线时间
11 小时
 楼主| 发表于 2016-10-17 19:31:04 | 显示全部楼层
ysq7120 发表于 2016-10-17 16:26
错误的英文提示不是说的很清楚吗?又不是提示不让你赋值。

但是我给它定义的就是float型的,怎么就莫名其妙的变u16了,定义完之后也正常的,就是在定义时赋值有问题
追风九度八
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2016-10-16
在线时间
11 小时
 楼主| 发表于 2016-10-17 19:42:41 | 显示全部楼层
我用的就是原子的源代码,你们可以自己试试看
追风九度八
回复 支持 反对

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-10-18 08:58:56 | 显示全部楼层
枫渔 发表于 2016-10-17 19:31
但是我给它定义的就是float型的,怎么就莫名其妙的变u16了,定义完之后也正常的,就是在定义时赋值有问题

你问的问题都好晕。
你将一个float赋值给u16,难道这个u16就应该是float吗?这是什么逻辑
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2016-10-16
在线时间
11 小时
 楼主| 发表于 2016-10-19 14:44:07 | 显示全部楼层
ysq7120 发表于 2016-10-18 08:58
你问的问题都好晕。
你将一个float赋值给u16,难道这个u16就应该是float吗?这是什么逻辑

155128ody2yx0ekype0r0t.png 我一开始定义的就是float,只是系统莫名其妙的把它当u16了
追风九度八
回复 支持 反对

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-10-19 15:39:22 | 显示全部楼层
short xoff; 哪里看出是float。怪我眼花咯
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2016-10-16
在线时间
11 小时
 楼主| 发表于 2016-10-20 18:00:28 | 显示全部楼层
ysq7120 发表于 2016-10-19 15:39
short xoff; 哪里看出是float。怪我眼花咯

我说的是float xfac 和float yfac
追风九度八
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 09:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表