标题: 关于单片机低功耗休眠的变量清除 [打印本页]

作者: k9702    时间: 2021-8-7 11:50
标题: 关于单片机低功耗休眠的变量清除
现在做的一个项目要求退出低功耗后在进入低功耗的地方重启,意味着我不能对单片机进行复位。那么问题来了,我改如何便捷的把定义的变量数据清零?(复位后RAM区自动擦除)
用户可以手动对RAM区域进行清零吗?还是说要一个一个变量去手动置零。
我看了一下现在用的韩国现代单片机手册,好像没有相关的操作,抛开单片机的类型来说,用户手动对RAM区域进行清除这种操作存在吗?
而且如果单独清除RAM区域,会影响IO口的配置吗?(应该是不影响的吧)

作者: lkc8210    时间: 2021-8-7 23:42
你可以把需要初始化的变数总一放入一个函数内,如SysInit()
开机走一次
唤醒中断走一次
void main()
{
  SysInit();
  while(1)
  {
    //你的代码
  }
}
void WakeUp() interrupt x
{
  SysInit();
}

但变数清零又在进入低功耗的地方重启
不会影响运行吗?
作者: k9702    时间: 2021-8-9 10:15
lkc8210 发表于 2021-8-7 23:42
你可以把需要初始化的变数总一放入一个函数内,如SysInit()
开机走一次
唤醒中断走一次

我目前也是类似的做法,就是想问问如果变量多的话有没有更加便捷的方法,至于你说的影响程序运行,是我的表达有点问题,我进入休眠相当于重新开机。
作者: 权威人物    时间: 2021-8-9 16:45
k9702 发表于 2021-8-9 10:15
我目前也是类似的做法,就是想问问如果变量多的话有没有更加便捷的方法,至于你说的影响程序运行,是我的 ...

你题目要求在进去低功效的地方重启,则唤醒的时候就是你进去的地方!他想表达的是你此时清除了变量和你在那启动有什么关系呢?相当重新开机的意义何在?一般休眠醒来是保存了一些变量的,也会清除一些变量方便操作,
作者: lkc8210    时间: 2021-8-9 17:08
k9702 发表于 2021-8-9 10:15
我目前也是类似的做法,就是想问问如果变量多的话有没有更加便捷的方法,至于你说的影响程序运行,是我的 ...

如果你是用STC的单片机可以在唤醒中断中进行软件复位
至于其它牌子的单片机就不知道有没有类似的功能



作者: Y_G_G    时间: 2021-8-9 18:30
一般来说,单片机休眠后
如果是唤醒了,就两种可能:
一种是直接进入唤醒源中断程序,执行完中断之后再去执行休眠的下一个语句
一种是唤醒后直接执行休眠的下一个语句
但没说是唤醒后就复位的
要是唤醒后直接复位的,那不叫唤醒,那就叫复位,有中断复位,低电压复位之类的
作者: yzwzfyz    时间: 2021-8-9 20:50
退出休眠单片机是可以识别的(芯片读读手册)。
写一个复位程序,复位你需要复位的参数。
每次退出休眠时,调用一下不就好了吗。
作者: liuhailan5757    时间: 2021-8-10 10:18
楼主 你单片机的复位和单片机唤醒的概念都没弄清楚哦。。睡眠唤醒后,是接着执行唤醒后面的语句,如果值中断唤醒,就直接进入中断,退出中断后就接着执行后面的语句,怎么可以会清掉RAM呢。 复位是,单片机从0000H 开始执行了,那肯定,要清掉RAM啊。
作者: Jiang_YY    时间: 2021-8-10 22:34
1 有些单片机有软复位RAM功能,复位RAM后不会改变程序指针。
2 软件上使用指针变量,指向RAM最低地址,然后根据RAM地址空间大小使用FOR循环初始化RAM。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1