打印

请教:STC单片机能否判断复位源?

[复制链接]
3928|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fxhfxh|  楼主 | 2011-11-16 13:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2011-11-16 15:04 | 只看该作者
这种问题直接看手册

使用特权

评论回复
板凳
yewuyi| | 2011-11-16 15:54 | 只看该作者
如果MCU硬件不支持,也可以用指定RAM空间写入0xaa55字符串来实现,掉电后0xaa55会改变。

使用特权

评论回复
地板
fxhfxh|  楼主 | 2011-11-16 15:56 | 只看该作者
谢谢楼上朋友的回复,stc单片机我确实没有看见有纸质的手册,宏晶网上的资料是比较仔细的看了的,就是没有看出来能不能,所以才来这问一问的。你如搞过的,就请说一下能还是不能就行了,其他的我自己来做。

使用特权

评论回复
5
fxhfxh|  楼主 | 2011-11-16 16:04 | 只看该作者
3# yewuyi
不是掉电,是软件复位,我就是想在main中判断是软件复位引起的复位,还是上电复位引起的复位。在LPC单片机中是可以的,就是不知道在stc可不可以。

使用特权

评论回复
6
yewuyi| | 2011-11-16 16:48 | 只看该作者
3# yewuyi  
不是掉电,是软件复位,我就是想在main中判断是软件复位引起的复位,还是上电复位引起的复位。在LPC单片机中是可以的,就是不知道在stc可不可以。 ...
fxhfxh 发表于 2011-11-16 16:04


如果没有内部硬件,则需要外部电压比较了,呵呵,继续用PIC就是了。。。

使用特权

评论回复
7
ayb_ice| | 2011-11-16 17:00 | 只看该作者
软件复位思路一样
软件复位前将指定内存设为某个值,比如0x1234,工作后首先判断是否是1234,如果是则软件复位,否则非软件复位,然后设置为0000或其它值

使用特权

评论回复
8
fxhfxh|  楼主 | 2011-11-16 18:06 | 只看该作者
谢谢楼上的朋友。问题是这样的:我就是在软件复位前将一个标志位置为了1,但我执行了软件复位后,再在main中判断这个标志时,它已经变成了0,好像硬件已经将它置为了0,因此就无法判断了,但是好像stc又没有一个软件复位的标志。你说的软件复位前将内存设为某个值,那么在软件复位后,可能就是一个随机数或者是0了,好像stc就是这样,当然,我现在还不能肯定。

使用特权

评论回复
9
fxhfxh|  楼主 | 2011-11-16 18:11 | 只看该作者
软件复位思路一样
软件复位前将指定内存设为某个值,比如0x1234,工作后首先判断是否是1234,如果是则软件复位,否则非软件复位,然后设置为0000或其它值 ...
ayb_ice 发表于 2011-11-16 17:00

问题是,你这种思路在stc 单片机上实现过吗?谢谢。

使用特权

评论回复
10
yewuyi| | 2011-11-17 08:04 | 只看该作者
谢谢楼上的朋友。问题是这样的:我就是在软件复位前将一个标志位置为了1,但我执行了软件复位后,再在main中判断这个标志时,它已经变成了0,好像硬件已经将它置为了0,因此就无法判断了,但是好像stc又没有一个软件 ...
fxhfxh 发表于 2011-11-16 18:06


你是用的C语言吧?
这主要是在你的main函数前先自行了一段启动代码,你需要在编译器中设置关闭那个启动代码,然后自己手工编写你需要的启动代码。

使用特权

评论回复
11
fxhfxh|  楼主 | 2011-11-17 08:43 | 只看该作者
10# yewuyi
喔,是这样啊,那我先试一试看。谢谢了。

使用特权

评论回复
12
ayb_ice| | 2011-11-17 08:57 | 只看该作者
本帖最后由 ayb_ice 于 2011-11-17 09:02 编辑

那个或两个特定RAM是不能被起动文件清零的
有些编译器可以设定,比如IAR的编译器可以加__no_init int rst_source;这样就可以不被自动初始化,KEIL需要自已修改起动文件,保留部分RAM不清零(比如将最后两个字节保留),然后将rst_source绝对定位在保留区域即可

使用特权

评论回复
13
hngyljx1986| | 2011-11-17 10:59 | 只看该作者
学习

使用特权

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

本版积分规则

52

主题

382

帖子

1

粉丝