OpenEdv-开源电子网

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

如何用STM32的flash存入负数

[复制链接]

16

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
374
金钱
374
注册时间
2016-4-4
在线时间
54 小时
发表于 2016-11-20 23:57:00 来自手机 | 显示全部楼层 |阅读模式
如题
前提是数据在+-2000内
我想到一个方法是把int16数据的值加上2000转成u16存进去
读取的时候判断是否大于2000
如果>2000
数据=(int16)(读取值-2000)
否则
数据=-(int16)(2000-读取的值)
经过测试貌似没有成功
求解答
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

387

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1043
金钱
1043
注册时间
2016-9-8
在线时间
213 小时
发表于 2016-11-21 09:00:16 | 显示全部楼层
就是定义成s32 不要定义成u32,直接存就行,,没那么多说法
shop60994719.taobao.com
回复 支持 1 反对 0

使用道具 举报

16

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
374
金钱
374
注册时间
2016-4-4
在线时间
54 小时
 楼主| 发表于 2016-11-20 23:57:56 来自手机 | 显示全部楼层
断网了 手机上敲的 真辛苦……
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2016-11-7
在线时间
14 小时
发表于 2016-11-21 08:09:12 | 显示全部楼层
存他的补码表示
回复 支持 反对

使用道具 举报

10

主题

172

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1479
金钱
1479
注册时间
2016-1-25
在线时间
260 小时
发表于 2016-11-21 08:48:04 | 显示全部楼层
另一种简单的法子  相当做一个加减法就可以 了   比如我存的是-12  那我拿20+(-12)=8  我存8 进去  取出来的时候用(-20)+8=-12了。
回复 支持 反对

使用道具 举报

7

主题

333

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1838
金钱
1838
注册时间
2012-7-16
在线时间
504 小时
发表于 2016-11-21 09:03:20 | 显示全部楼层
存字符串最简单。
回复 支持 反对

使用道具 举报

1

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2015-5-28
在线时间
149 小时
发表于 2016-11-21 10:25:21 | 显示全部楼层
存数据在哪里都一样呀~跟正负没关系
回复 支持 反对

使用道具 举报

3

主题

2165

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5773
金钱
5773
注册时间
2013-11-22
在线时间
1211 小时
发表于 2016-11-21 11:00:59 | 显示全部楼层
定义变量为 int型(F103) 或者 long型(F407),直接存就可以了, 读取的时候,也用同类型的变量来接收,提示警告,强制转换一下就可以了
回复 支持 反对

使用道具 举报

16

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
374
金钱
374
注册时间
2016-4-4
在线时间
54 小时
 楼主| 发表于 2016-11-21 13:33:48 | 显示全部楼层
密耳 发表于 2016-11-21 09:00
就是定义成s32 不要定义成u32,直接存就行,,没那么多说法

这种方法很好 我试过这种方法
貌似没有成功 可能是代码质量的问题 回头我再测试下 谢谢
回复 支持 反对

使用道具 举报

16

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
374
金钱
374
注册时间
2016-4-4
在线时间
54 小时
 楼主| 发表于 2016-11-21 13:34:13 | 显示全部楼层

高深!
回复 支持 反对

使用道具 举报

16

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
374
金钱
374
注册时间
2016-4-4
在线时间
54 小时
 楼主| 发表于 2016-11-21 13:34:40 | 显示全部楼层
sodermalm 发表于 2016-11-21 08:48
另一种简单的法子  相当做一个加减法就可以 了   比如我存的是-12  那我拿20+(-12)=8  我存8 进去  取出 ...

这种方法好像跟我描述的一样啊 呵呵
回复 支持 反对

使用道具 举报

16

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
374
金钱
374
注册时间
2016-4-4
在线时间
54 小时
 楼主| 发表于 2016-11-21 20:17:38 | 显示全部楼层
密耳 发表于 2016-11-21 09:00
就是定义成s32 不要定义成u32,直接存就行,,没那么多说法

大神正解  经测试成功 谢谢
回复 支持 反对

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-11-21 22:42:50 | 显示全部楼层
我笑了,平时无符号用的比较多而已,有符号的数据类型给你吃了,给你吃了?????
直接定义s16不就好了么,还加减这么麻烦
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 20:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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