完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用的芯片是STM32f407ve,ucos_iii,keil5
我在程序中这样几个赋值的语句 其中 #define Speed 6400 Speed1 = Speed; vx1 = Speed1; 程序中 Speed1 的数据类型是 uint32_t,vx1的数据类型是float。 现在遇到了这样一个问题,就是赋值完后 vx1的值为0.5; 出现这个现象是因为,我把程序中几个全局变量的类型由 uint16_t 改成了 uint32_t。 后来我尝试强制类型转换 vx1 = (float)Speed1; 没有效果 尝试直接赋值 vx1 = 6400; vx1 = 6400.0f; 都没有效果 但是下面的几个尝试可以得到正确的值 1、vx1的数据类型改为 uint32_t 2、keil中的优化等级改为不优化 3、赋一个其他的值,6399 , 800等其他的值都没有问题。 其中上面第三个尝试最让我迷惑,为什么只有6400这个值不行呢?(可能也有别的值不行,但是我没有挨个实验) 想着应该是由于程序空间的问题,被优化的结果,但是不是很明白,有没有哪个前辈给解答一下 非常感谢 |
|
相关推荐
3个回答
|
|
|
|
|
|
要么是程序里面哪边赋值了把
|
|
|
|
可以设置下static 试试
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1321 浏览 1 评论
1057 浏览 1 评论
MCU友好过渡MPU,米尔基于STM32MP135开发板裸机开发应用笔记
642 浏览 0 评论
自定义系统时钟频率后,用库函数和微带两种方式点亮LED灯,为什么灯的闪烁频率不一致?
1602 浏览 2 评论
1828 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-25 15:09 , Processed in 0.374781 second(s), Total 44, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号