搜索
查看: 3308|回复: 7

[求助] STM32L476VC低功耗STANDBY

[复制链接]

该用户从未签到

1

主题

10

帖子

0

蝴蝶豆

初级会员

最后登录
2022-11-12
发表于 2021-2-18 16:54:31 | 显示全部楼层 |阅读模式
1ST金币
项目由于低功耗要求,需要采用低功耗STANDBY模式。但由于业务过程中需要有数据及时存储,STANDBY重启会导致数据清空,只有SRAM2可以保存。

现求助大神们,如何使用备用RAM(SRAM2)进行数据存储。最好是有例程,谢谢!

最佳答案

查看完整内容

__attribute__((at(0xxxxxxxx))) uint8_t buff[1024]; 在 MDK 环境下这样就可以把数组定义到指定的地址了。
回复

使用道具 举报

该用户从未签到

2

主题

274

帖子

23

蝴蝶豆

金牌会员

最后登录
2021-7-11
发表于 2021-2-18 16:54:32 | 显示全部楼层
__attribute__((at(0xxxxxxxx))) uint8_t buff[1024];

在 MDK 环境下这样就可以把数组定义到指定的地址了。

回复

使用道具 举报

该用户从未签到

1

主题

10

帖子

0

蝴蝶豆

初级会员

最后登录
2022-11-12
 楼主| 发表于 2021-2-19 08:44:22 | 显示全部楼层
有没有大神来帮帮忙啊。
回复

使用道具 举报

该用户从未签到

1

主题

10

帖子

0

蝴蝶豆

初级会员

最后登录
2022-11-12
 楼主| 发表于 2021-2-19 09:40:23 | 显示全部楼层
3111272 发表于 2021-2-19 09:23
__attribute__((at(0xxxxxxxx))) uint8_t buff[1024];

在 MDK 环境下这样就可以把数组定义到指定的地址了 ...

__attribute__((at(0xxxxxxxx)))  这个函数有具体一点的介绍的(使用方法或使用条件的),__attribute__没查到定义。之前没有操作过RAM,不太清楚。谢谢!!!
回复

使用道具 举报

该用户从未签到

1

主题

10

帖子

0

蝴蝶豆

初级会员

最后登录
2022-11-12
 楼主| 发表于 2021-2-20 08:58:35 | 显示全部楼层
3111272 发表于 2021-2-19 09:23
__attribute__((at(0xxxxxxxx))) uint8_t buff[1024];

在 MDK 环境下这样就可以把数组定义到指定的地址了 ...

那我想修改buff中的值,不用再重新定义地址了吧?
回复

使用道具 举报

该用户从未签到

1

主题

10

帖子

0

蝴蝶豆

初级会员

最后登录
2022-11-12
 楼主| 发表于 2021-2-20 09:00:49 | 显示全部楼层
3111272 发表于 2021-2-19 09:23
__attribute__((at(0xxxxxxxx))) uint8_t buff[1024];

在 MDK 环境下这样就可以把数组定义到指定的地址了 ...

例:uint8_t check_16s[1]    __attribute__((at(0x10000000)))={0x00};    check_16s[0] = 0x01;         修改check_16s中的值后不用再重新定义地址了吧。
回复

使用道具 举报

该用户从未签到

1

主题

10

帖子

0

蝴蝶豆

初级会员

最后登录
2022-11-12
 楼主| 发表于 2021-2-20 09:01:49 | 显示全部楼层
3111272 发表于 2021-2-19 09:23
__attribute__((at(0xxxxxxxx))) uint8_t buff[1024];

在 MDK 环境下这样就可以把数组定义到指定的地址了 ...

例:uint8_t check_16s[1]    __attribute__((at(0x10000000)))={0x00};    check_16s[0] = 0x01;         修改check_16s中的值后不用再重新定义地址了吧。
回复

使用道具 举报

该用户从未签到

1

主题

10

帖子

0

蝴蝶豆

初级会员

最后登录
2022-11-12
 楼主| 发表于 2021-3-3 15:28:08 | 显示全部楼层
3111272 发表于 2021-2-18 16:54
__attribute__((at(0xxxxxxxx))) uint8_t buff[1024];

在 MDK 环境下这样就可以把数组定义到指定的地址了 ...

我用了绝对定位写RAM2,但是在STANDBY唤醒后,值就清零了。使用了HAL_PWREx_EnableSRAM2ContentRetention();保存
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-29 21:21 , Processed in 0.170553 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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