stm8冷启动和热启动的判断

[复制链接]
6421|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"。
 楼主| ptxy5201314 发表于 2010-8-5 13:21 | 显示全部楼层
那在STM8里面又是怎么实现签名的呢?
香水城 发表于 2010-8-5 13:36 | 显示全部楼层
不是说了吗,"签名"区域就是一个变量或一个内存区域,实现签名就是对变量进行赋值。
 楼主| ptxy5201314 发表于 2010-8-5 13:40 | 显示全部楼层
复位之后变量不是都清0了吗
 楼主| ptxy5201314 发表于 2010-8-5 14:23 | 显示全部楼层 |阅读模式
麻烦用程序写个例子,原理我知道,但是不知道具体怎么做
香水城 发表于 2010-8-5 14:35 | 显示全部楼层
复位之后变量不是都清0了吗
ptxy5201314 发表于 2010-8-5 13:40


复位之后变量都清0不是硬件做的,是启动文件作的,你看看启动文件并修改一下就可以了。
 楼主| ptxy5201314 发表于 2010-8-5 15:21 | 显示全部楼层
stm8的启动文件怎么修改啊 ,我是新手从来没有接触过改启动文件的
香水城 发表于 2010-8-5 15:53 | 显示全部楼层
stm8的启动文件怎么修改啊 ,我是新手从来没有接触过改启动文件的
ptxy5201314 发表于 2010-8-5 15:21


我没做过,我也不会,你问问其他人吧。
ZRL700424 发表于 2010-8-5 16:25 | 显示全部楼层
每种芯片我都会研究冷启动和热启动的问题的,因为STM8抗干扰过不了,就没有接着测试了。

以下只是猜测:
在不想上电清0的变量前加“volatile”,进入main后判断是冷启动还是热启动。
mcuisp 发表于 2010-8-5 19:11 | 显示全部楼层
上电清0不是用加volatile去解决的。
IAR应该加__no_init。
更通用一些的做法是在链接配置中把这个区域排除灾可分配内存之外。
另外,目前很多MCU都有复位原因寄存器。其中有的会有 POR指示位。
不幸的是,STM8S的RST_SR没有POR指示位。只有EMCF、SWIMF、ILLOPF、IWDGF、WWDGF等复位指示位。
因此建议楼主可以考虑下更改冷、热启动的定义。除以上几种复位外的复位都定义为上电冷启动。
一般来说,这样定义是可以接受的。
linqing171 发表于 2010-8-6 08:46 | 显示全部楼层
keil也要加noinit区域。ADS也需要。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

11

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部