15475|19

81

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

程序中怎样区别是热复位还是冷复位? [复制链接]

程序中怎样区别是热复位还是冷复位?
_stext是一个什么函数
此帖出自stm32/stm8论坛

最新回复

                                 谢谢香水城变量初始化以后, 基本正常.开始是以为定时器变慢,经测试正常.另我crts.st7作为启动文件,自己做初始化工作, 测试如下:单片机频繁进行人工RESET, 程序会出现不正常运行, 不能进行复位,偶尔的,不知什么原因.我的初始化文件见18楼, 是否我还有些特殊寄存器没有初始化所致.   详情 回复 发表于 2008-4-2 13:26
点赞 关注
 

回复
举报

61

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

什么芯片?

                                  
此帖出自stm32/stm8论坛
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

什么是热复位?什么是冷复位?

                                 没有听说过这种说法。
此帖出自stm32/stm8论坛
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 

什么是热复位?什么是冷复位?

冷复位:上电复位
热复位:看门狗复位
此帖出自stm32/stm8论坛
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(初级)

5
 

上电复位、硬复位、软复位等各种复位信号

st7fite15bf

区分上电复位、硬复位、软复位等各种复位信号
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 

这个问题前几天你问过,我也回答了,你没有看吗?

单片机复位解决?st7flite15bf
 
请看下面文档中的7.6.4节的SICSR寄存器——SYSTEM INTEGRITY (SI) CONTROL/STATUS REGISTER
http://www.st.com/stonline/products/literature/ds/11929.pdf
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 

_stext是C语言的启动文件,通常你不必关心

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

8
 

检测出硬复位和掉电复位.

                                 看过了,可以区分软复位,但不能检测出硬复位和掉电复位.
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

9
 

什么是硬复位?什么是掉电复位?


硬复位是否指上电时的复位?掉电复位是否指LVD复位?

LVD复位有LVDRF状态位。

请看下面的列表:


RESET Sources
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

10
 

设立一个上电标志位

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

11
 

设置上电标志?

设置上电标志?

复位时候,上电标志也会初始化啊,怎样解决?

单片机硬复位,RAM数据会初始化? 我测试过,RESET一次,数据均会清除啊 
此帖出自stm32/stm8论坛
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

12
 

TO香水

热复位是人工进行RESET的复位?冷复位是上电复位(通电复位)

查看如你提供的表,不能区分热复位和冷复位


 RESET Sources LVDRF WDGRF 
External RESET pin 0 0 
Watchdog 0 1 
LVD 1 X 

另热复位后, RAM 数据会改变吗?


此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

13
 

呵呵,这个冷复位和热复位不同人有不同的定义,把我搞糊

首先楼主给出了一个热复位和冷复位的概念,4楼给出了一个定义:冷复位=上电复位,热复位=看门狗复位;后来楼主又在12楼对热复位从新定义为人工进行RESET的复位;8楼又给出了硬复位、软复位和掉电复位的概念。

这么多概念,而且不同人有不同的定义,确实把我搞糊涂了。我们是搞工程的,最好能有一个统一的名词概念,不要发明那么多概念,否则很容易误会并且耽误时间。

对我来说,在ST7Lite15B上可以有4种复位:
1)上电复位:这是MCU在上电之后由复位电路产生的复位。
2)MCU运行过程中,RESET管脚被拉低而产生的复位:此复位与上电复位的复位源是相同的。
3)看门狗复位:这是由看门狗超时引起的复位。
4)低电压复位:这是由内部低电压检测电路引起的复位。

对应到我在9楼给出的表格:
 复位1和复位2的判断条件是:LVDRF=0  WDGRF=0
 复位3的判断条件是:LVDRF=0  WDGRF=1
 复位4的判断条件是:LVDRF=1

要想区别复位1和复位2,可使用11楼的办法,因为RESET管脚被拉低而产生的复位是不会破坏RAM的内容。
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

14
 

谢了,香水城回答的真好

2)MCU运行过程中,RESET管脚被拉低而产生的复位:此复位与上电复位的复位源是相同的

在这种情况下, 原先的ram 中的数据均变成了0, 即每次RESET后数据均进行初始化,看了一下编译.LKF方面的资料文件,好象和.lkf文件有关,不知在程序中怎么设置?

# LINK COMMAND FILE AUTOMATICALLY GENERATED BY STVD7
# SHOULD NOT BE MANUALLY MODIFIED
#

# Put you segment configuration here
# define the .share segment when using compact or memory models only
#<BEGIN SEGMENT_CONF>
# Segment Code,Constants:
+seg .text -b 0xf000 -m 0xfff  -n .text 
+seg .const -a .text  -n .const 
# Segment Zero Page:
+seg .bsct -b 0x80 -m 0x7f  -n .bsct 
+seg .ubsct -a .bsct  -n .ubsct 
+seg .share -a .ubsct  -n .share -is 
+seg .data -a .share  -n .data 
+seg .bss -a .data  -n .bss 
#<END SEGMENT_CONF>


# Put you startup file here    (it depends on the model used)
#<BEGIN STARTUP_FILE>
crtsx.st7
#<END STARTUP_FILE>


# Put your object files here (they depend on you application)
#<BEGIN OBJECT_FILES>
Debugcleanermain_stlit15b.o
Debugcomfuntion.o
Debugeepromrelated.o
Debugi2c_drv.o
Debugmain.o
Debugmotor.o
Debugserial.o
#<END OBJECT_FILES>


# Put your library name here (it depends on the model used)
#<BEGIN LIBRARY_FILES>
libic.st7
libm.st7
#<END LIBRARY_FILES>


# Put your interrupt vectors file here if needed
#<BEGIN VECTOR_FILE>
+seg .const -b 0xffe0 -k
Debuginterrupt_vector.o
#<END VECTOR_FILE>

#<BEGIN DEFINED_VARIABLES>
+def __endzp=@.ubsct            # end of uninitialized zpage
+def __memory=@.bss                # end of bss segment
#<END DEFINED_VARIABLES>

此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

15
 

关于ST7芯片复位后RAM被清零的问题

这个RAM清零的操作是由启动文件完成,与lkf文件无关,lkf文件是供链接程序使用的。但在lkf文件的这几行中,描述了使用的启动文件:
# Put you startup file here    (it depends on the model used)
#<BEGIN STARTUP_FILE>
crtsx.st7
#<END STARTUP_FILE>
这个文件是自动生成的,请不要手动修改,否则无效。

这里用了crtsx.st7作为启动文件。这个文件的源程序在目录COSMICCXST7_16KHst7下,编译好的库文件在COSMICCXST7_16KLib目录下。

除了crtsx.st7,还有crtsi.st7和crts.st7两个启动文件,可以在STVD7环境中选择:ProjectSettings...LinkerGeneralStart-up file:

关于这几个启动文件的区别,请看手册“C Cross Compiler User’s Guide for STMicroelectronics ST7”。

简单地说,你可以选择crts.st7作为启动文件,这个文件不初始化任何的RAM区。
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

16
 

初始化时钟变慢了 急!

我按照你的使用方法,将crts.st7作为启动文件,这个文件不初始化任何的RAM区。可以用,但我原来的时钟变慢了,不知为何

我在自己的程序中

MCCSR=0X00
RCCR=0XA7;
LTCSR1=0X10;

发觉定时器中断变慢了
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

17
 

使用crts.st7作为启动文件后应注意变量的初始化

对任何变量的初始化都必须通过程序语句完成,不能使用变量的初始化操作。

例如:有一个变量abc
int  abc = 10;  // 不能这样用!

必须改成:
int abc;

..........

abc = 10;
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

18
 

帮助解决一下

我是指我的初始化文件还有那些参数没有初始化,


原来已经是一个现成可用的程序,现在需增加复位检测,按照你的使用方法,将crts.st7作为启动文件,这个文件不初始化任何的RAM区。可以用,但我原来的时钟变慢了,不知为何?

以下是我的初始化特殊寄存器程序

/*=========================================================
* 函 数 名: f_MCU_InitSfr()
* 功能描述: 硬件初始化,初始化MCU SFR
=========================================================*/
void f_MCU_InitSfr(void)
{
    DisableInterrupts;                                // 关闭中断
    MCCSR = 0X00;                                    //MCO CLOCK DISABLE; NORMAL MODE
    RCCR = 0XA7;                                    //CR2-CR9
    SICSR = 0X00;                                    //CR0-CR1

                                            
    PADDR = 0XFF;                                    // PA.0 
    PAOR = 0XFF;                                    // PA.1 NO USE
                                                    // PA.2 NO USE
                                                    // PA.3 NO USE
                                                    // PA.4 TXD
                                                    // PA.5 NO USE
                                                    // PA.6 NO USE
                                                    // PA.7 NO USE

    PBDDR = 0X39;                                    // PB.0BACK LIGHT
    PBOR = 0X79;                                    // PB.1 KEY1
                                                    // PB.2 KEY2
                                                    // PB.3 LCD_DATA
                                                    // PB.4 LCD_WR
                                                    // PB.5 LCD_CS
                                                    // PB.6 RXD
                                          
    PCDDR = 0X03;                                    // PC.0 OSC1
                                                    // PC.1 OSC2 
                                    
    /* 外部中断设置 */
    EICR = 0XAA;                                    //
    EISR = 0X30;                                    // PB5通信接收         ei2 下降沿中断
    
    /* 主时钟设置10ms */
    LTCSR1 = 0X30;                                    /* 基本时钟2ms,中断开启 */
    LTCSR2 = 0X02;                                    /* Timerbase 2,中断开启 */
    LTARR = 0XE6;                                    /* Timerbase 2,100us定时 */

//    LTCSR1 = 0X10;                                    /* 基本时钟2ms,中断开启 */
//    LTARR = 0XF3;                                    /* Timerbase 2,8 * 12 = 100us定时 */    
    
    /* 软件看门狗设置 */
    WDGCR = 0XFF;                                    /* 看门狗打开 */
    EnableInterrupts;                                /* 开启中断 */
}
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

19
 

请按照我在17楼的说明检查变量的定义部分

另外,原来使用启动文件crtsx.st7时,所有的未初始化变量都被启动文件初始化为零,换了启动文件后,如果你不对这些变量执行初始化而直接使用,则可能造成错误。

还有,你说定时器中断变慢了,你是如何判断的?
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

20
 

有RESET问题,急!

谢谢香水城

变量初始化以后, 基本正常.

开始是以为定时器变慢,经测试正常.

另我crts.st7作为启动文件,自己做初始化工作, 测试如下:
单片机频繁进行人工RESET, 程序会出现不正常运行, 不能进行复位,偶尔的,不知什么原因.我的初始化文件见18楼, 是否我还有些特殊寄存器没有初始化所致.
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved