打印
[ARM7]

关于数据初始化数据清零的问题

[复制链接]
3077|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我用的是NXP的LPC1700,现场控制继电器的开关,同时用标志位做相关标示继电器通断,标志位存于ARM的内部RAM中,但是每次看门狗复位时,标志位都被清除,我如何保证看门狗复位时,这些标志位还能表示继电器状态呢?大家用什么方法来控制的呢?

相关帖子

沙发
流金岁月|  楼主 | 2013-8-1 10:55 | 只看该作者
大家是用外部RAM存储还是内部RAM?或者是EEPROM?

使用特权

评论回复
板凳
xinzha| | 2013-8-1 11:53 | 只看该作者
RAM断电之后肯定内容被清,你可以加个电容之类的东西让断电过程减缓,然后用一个中断来写flash或者eeprom,不过个人觉得这方法还是有风险,最好是有备用电源,当确认写成功后自己切断备用电源。

使用特权

评论回复
地板
huangxz| | 2013-8-1 12:40 | 只看该作者
lpc1788里面的rtc里面有电源保持的寄存器3个(32bit),可以实现楼主的用途,但是断电要有电池才行

使用特权

评论回复
5
流金岁月|  楼主 | 2013-8-1 13:55 | 只看该作者
xinzha 发表于 2013-8-1 11:53
RAM断电之后肯定内容被清,你可以加个电容之类的东西让断电过程减缓,然后用一个中断来写flash或者eeprom, ...

但是现在是看门狗复位时,内部RAM数据就被清除了,不是断电引起的掉电现象

使用特权

评论回复
6
流金岁月|  楼主 | 2013-8-1 13:56 | 只看该作者
huangxz 发表于 2013-8-1 12:40
lpc1788里面的rtc里面有电源保持的寄存器3个(32bit),可以实现楼主的用途,但是断电要有电池才行 ...

您好,我不断电的情况下,外部看门狗复位,这些寄存器清零么?

使用特权

评论回复
7
huangxz| | 2013-8-1 13:58 | 只看该作者
流金岁月 发表于 2013-8-1 13:56
您好,我不断电的情况下,外部看门狗复位,这些寄存器清零么?

不会清零

使用特权

评论回复
8
流金岁月|  楼主 | 2013-8-1 14:15 | 只看该作者
huangxz 发表于 2013-8-1 13:58
不会清零

你好,我现在实验下来,是清零的

使用特权

评论回复
9
流金岁月|  楼主 | 2013-8-1 14:17 | 只看该作者
huangxz 发表于 2013-8-1 13:58
不会清零

能请教您,你是如何处理数据初始化的吗

使用特权

评论回复
10
huangxz| | 2013-8-1 15:19 | 只看该作者
流金岁月 发表于 2013-8-1 14:17
能请教您,你是如何处理数据初始化的吗

不可能啊,你用的是哪个寄存器?

使用特权

评论回复
11
ayb_ice| | 2013-8-1 15:41 | 只看该作者
IAR可以加__no_init修饰即可

使用特权

评论回复
12
jlass| | 2013-8-1 15:45 | 只看该作者
huangxz 发表于 2013-8-1 15:19
不可能啊,你用的是哪个寄存器?

有可能的吧
外部看门狗复位相当于低级reset,很多寄存器都会被清零的,ram也有可能被清零的,当然也肯定不是全部。

使用特权

评论回复
13
ayb_ice| | 2013-8-1 15:53 | 只看该作者
xxx

未命名.JPG (39.25 KB )

未命名.JPG

使用特权

评论回复
14
huangxz| | 2013-8-1 15:56 | 只看该作者
jlass 发表于 2013-8-1 15:45
有可能的吧
外部看门狗复位相当于低级reset,很多寄存器都会被清零的,ram也有可能被清零的,当然也肯定 ...

不是,RTC里面有可以复位不清零的寄存器

使用特权

评论回复
15
jlass| | 2013-8-1 16:00 | 只看该作者
huangxz 发表于 2013-8-1 15:56
不是,RTC里面有可以复位不清零的寄存器

那就让楼主说一下,他所谓的外部看门狗复位,是不是就是reset,还是还有其他的操作。

使用特权

评论回复
16
流金岁月|  楼主 | 2013-8-1 16:11 | 只看该作者
jlass 发表于 2013-8-1 16:00
那就让楼主说一下,他所谓的外部看门狗复位,是不是就是reset,还是还有其他的操作。 ...

是相当于一个reset信号

使用特权

评论回复
17
流金岁月|  楼主 | 2013-8-1 16:13 | 只看该作者
在全局变量中,我是这么定义的:
float in_temp_1min[60];                  //室内温度1分钟数据存储
float out_temp_1min[60];          //室外温度1分钟数据存储
float wind_temp_1min[60];          //出风温度1分钟数据存储
float in_RH_1min[60];                  //室内温度1分钟数据存储
float in_temp_10min[10];          //室内温度10分钟数据存储
float out_temp_10min[10];          //室内温度10分钟数据存储
float wind_temp_10min[10];          //室内温度10分钟数据存储
float in_RH_10min[10];                    //室内湿度10分钟数据存储
float in_temp_sum;                          //室内温度1分钟累加
float out_temp_sum;                          //室外温度1分钟累加
float wind_temp_sum;                  //出风温度1分钟累加
float in_RH_sum;                          //室内湿度1分钟累加
float in_10min_data;                  //室内10分钟平均温度
float out_10min_data;                  //室外10分钟平均温度
float RH_10min_data;                  //室内10分钟平均湿度
float in_1min_data;                          //室内1分钟平均温度
float out_1min_data;                  //室外1分钟平均温度
float RHin_1min_data;                  //室内1分钟平均湿度
float RHout_1min_data;                  //室外1分钟平均湿度
float in_temp;                                  //实时室内温度
float out_temp;                                  //实时室外温度
float wind_temp;                          //实时出风温度
float in_RH;                                  //实时室内湿度
float out_RH;                                  //实时室外湿度


这些数据我不想由于看门狗复位而清除掉

使用特权

评论回复
18
流金岁月|  楼主 | 2013-8-1 16:17 | 只看该作者
huangxz 发表于 2013-8-1 15:56
不是,RTC里面有可以复位不清零的寄存器

您好,我的数据定义的是全局变量

使用特权

评论回复
19
huangxz| | 2013-8-1 16:54 | 只看该作者
流金岁月 发表于 2013-8-1 16:13
在全局变量中,我是这么定义的:
float in_temp_1min[60];                  //室内温度1分钟数据存储
floa ...

这么多,,搞不定,lpc里面有3个,看来不够用啊,stm32里面有电保持的ram,lpc的好像没有,帮不了你了

使用特权

评论回复
20
huangxz| | 2013-8-1 16:55 | 只看该作者
错了,lpc1788里面有5个

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:奉献自己,服务社会,提升个人,与您发展

26

主题

94

帖子

0

粉丝