找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3177|回复: 8
打印 上一主题 下一主题
收起左侧

关于单片机低功耗休眠的变量清除

[复制链接]
跳转到指定楼层
楼主
现在做的一个项目要求退出低功耗后在进入低功耗的地方重启,意味着我不能对单片机进行复位。那么问题来了,我改如何便捷的把定义的变量数据清零?(复位后RAM区自动擦除)
用户可以手动对RAM区域进行清零吗?还是说要一个一个变量去手动置零。
我看了一下现在用的韩国现代单片机手册,好像没有相关的操作,抛开单片机的类型来说,用户手动对RAM区域进行清除这种操作存在吗?
而且如果单独清除RAM区域,会影响IO口的配置吗?(应该是不影响的吧)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

但变数清零又在进入低功耗的地方重启
不会影响运行吗?
回复

使用道具 举报

板凳
ID:609192 发表于 2021-8-9 10:15 | 只看该作者
lkc8210 发表于 2021-8-7 23:42
你可以把需要初始化的变数总一放入一个函数内,如SysInit()
开机走一次
唤醒中断走一次

我目前也是类似的做法,就是想问问如果变量多的话有没有更加便捷的方法,至于你说的影响程序运行,是我的表达有点问题,我进入休眠相当于重新开机。
回复

使用道具 举报

地板
ID:311846 发表于 2021-8-9 16:45 | 只看该作者
k9702 发表于 2021-8-9 10:15
我目前也是类似的做法,就是想问问如果变量多的话有没有更加便捷的方法,至于你说的影响程序运行,是我的 ...

你题目要求在进去低功效的地方重启,则唤醒的时候就是你进去的地方!他想表达的是你此时清除了变量和你在那启动有什么关系呢?相当重新开机的意义何在?一般休眠醒来是保存了一些变量的,也会清除一些变量方便操作,
回复

使用道具 举报

5#
ID:161164 发表于 2021-8-9 17:08 | 只看该作者
k9702 发表于 2021-8-9 10:15
我目前也是类似的做法,就是想问问如果变量多的话有没有更加便捷的方法,至于你说的影响程序运行,是我的 ...

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


回复

使用道具 举报

6#
ID:401564 发表于 2021-8-9 18:30 | 只看该作者
一般来说,单片机休眠后
如果是唤醒了,就两种可能:
一种是直接进入唤醒源中断程序,执行完中断之后再去执行休眠的下一个语句
一种是唤醒后直接执行休眠的下一个语句
但没说是唤醒后就复位的
要是唤醒后直接复位的,那不叫唤醒,那就叫复位,有中断复位,低电压复位之类的
回复

使用道具 举报

7#
ID:123289 发表于 2021-8-9 20:50 | 只看该作者
退出休眠单片机是可以识别的(芯片读读手册)。
写一个复位程序,复位你需要复位的参数。
每次退出休眠时,调用一下不就好了吗。
回复

使用道具 举报

8#
ID:387856 发表于 2021-8-10 10:18 | 只看该作者
楼主 你单片机的复位和单片机唤醒的概念都没弄清楚哦。。睡眠唤醒后,是接着执行唤醒后面的语句,如果值中断唤醒,就直接进入中断,退出中断后就接着执行后面的语句,怎么可以会清掉RAM呢。 复位是,单片机从0000H 开始执行了,那肯定,要清掉RAM啊。
回复

使用道具 举报

9#
ID:959346 发表于 2021-8-10 22:34 | 只看该作者
1 有些单片机有软复位RAM功能,复位RAM后不会改变程序指针。
2 软件上使用指针变量,指向RAM最低地址,然后根据RAM地址空间大小使用FOR循环初始化RAM。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表