打印

stm8冷启动和热启动的判断

[复制链接]
5006|13
手机看帖
扫描二维码
随时随地手机跟帖
楼主
ptxy5201314|  楼主 | 2010-8-5 11:42 | 只看该作者 回帖奖励 |倒序浏览

stm8怎么判断冷启动和热启动啊

热启动的时候想保持一个变量不变,但是又不能存在eeprom和FALSH中怎么办啊?

使用特权

评论回复
沙发
香水城| | 2010-8-5 11:50 | 只看该作者
请定义一下:什么叫冷启动?什么叫热启动?

使用特权

评论回复
板凳
ptxy5201314|  楼主 | 2010-8-5 12:02 | 只看该作者
冷启动就是上电复位
热启动就是在有电的情况下手动复位

使用特权

评论回复
地板
香水城| | 2010-8-5 12:18 | 只看该作者
冷启动就是上电复位
热启动就是在有电的情况下手动复位
ptxy5201314 发表于 2010-8-5 12:02


如果是这样定义的,通常的做法是使用一个变量或一个内存区域,在系统启动之后,通过程序检查这个变量或区域的内容是否为一个已知的内容,如果是已知的内容,表示这次是热启动,否则是冷启动。一般我们称这种方法为"签名",它是利用热启动时原内存中数据不丢失,和冷启动后存储器内容不确定的特性。

比如,一般我们把"签名"区域设置为"STM"或"STMicroelectronics"。

使用特权

评论回复
5
ptxy5201314|  楼主 | 2010-8-5 13:21 | 只看该作者
那在STM8里面又是怎么实现签名的呢?

使用特权

评论回复
6
香水城| | 2010-8-5 13:36 | 只看该作者
不是说了吗,"签名"区域就是一个变量或一个内存区域,实现签名就是对变量进行赋值。

使用特权

评论回复
7
ptxy5201314|  楼主 | 2010-8-5 13:40 | 只看该作者
复位之后变量不是都清0了吗

使用特权

评论回复
8
ptxy5201314|  楼主 | 2010-8-5 14:23 | 只看该作者 |阅读模式
麻烦用程序写个例子,原理我知道,但是不知道具体怎么做
9
香水城| | 2010-8-5 14:35 | 只看该作者
复位之后变量不是都清0了吗
ptxy5201314 发表于 2010-8-5 13:40


复位之后变量都清0不是硬件做的,是启动文件作的,你看看启动文件并修改一下就可以了。

使用特权

评论回复
10
ptxy5201314|  楼主 | 2010-8-5 15:21 | 只看该作者
stm8的启动文件怎么修改啊 ,我是新手从来没有接触过改启动文件的

使用特权

评论回复
11
香水城| | 2010-8-5 15:53 | 只看该作者
stm8的启动文件怎么修改啊 ,我是新手从来没有接触过改启动文件的
ptxy5201314 发表于 2010-8-5 15:21


我没做过,我也不会,你问问其他人吧。

使用特权

评论回复
12
ZRL700424| | 2010-8-5 16:25 | 只看该作者
每种芯片我都会研究冷启动和热启动的问题的,因为STM8抗干扰过不了,就没有接着测试了。

以下只是猜测:
在不想上电清0的变量前加“volatile”,进入main后判断是冷启动还是热启动。

使用特权

评论回复
13
mcuisp| | 2010-8-5 19:11 | 只看该作者
上电清0不是用加volatile去解决的。
IAR应该加__no_init。
更通用一些的做法是在链接配置中把这个区域排除灾可分配内存之外。
另外,目前很多MCU都有复位原因寄存器。其中有的会有 POR指示位。
不幸的是,STM8S的RST_SR没有POR指示位。只有EMCF、SWIMF、ILLOPF、IWDGF、WWDGF等复位指示位。
因此建议楼主可以考虑下更改冷、热启动的定义。除以上几种复位外的复位都定义为上电冷启动。
一般来说,这样定义是可以接受的。

使用特权

评论回复
14
linqing171| | 2010-8-6 08:46 | 只看该作者
keil也要加noinit区域。ADS也需要。

使用特权

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

本版积分规则

3

主题

11

帖子

1

粉丝