硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1233|回复: 5
收起左侧

[MDK] 能否在systeminit前,读rtc和bkp(备份域)内的数据

[复制链接]

5

主题

24

回帖

39

积分

新手上路

积分
39
发表于 2024-5-30 00:01:28 | 显示全部楼层 |阅读模式
如题,我知道写是肯定不行的,但是,就是不知道在systeminit前读rtc和bkp(备份域)内的数据行不行

我试了下,好像读没问题,数据也对。但是,不知道这样做合不合理,有没有副作用
回复

使用道具 举报

218

主题

1106

回帖

1770

积分

至尊会员

More we do, more we can do.

积分
1770
发表于 2024-5-30 01:08:56 | 显示全部楼层
没这个限制,都是可以读写的。
回复

使用道具 举报

5

主题

24

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2024-10-5 21:22:11 | 显示全部楼层
emwin 发表于 2024-5-30 01:08
没这个限制,都是可以读写的。

补充问个问题:
1.  f10x  f30x系列,备份域读写api函数,都是uint16_t/unsigned short,实际寄存器地址确是4个字节的间距,为什么不直接定义为4字节读写
#define BKP_DATA0                       REG16((BKP) + 0x04U)     /*!< BKP data register 0 */
#define BKP_DATA1                       REG16((BKP) + 0x08U)     /*!< BKP data register 1 */
2.  f4xx系列,直接就是按4字节定义了,可是示例里面的读写确还是 2字节的
#define BKP_VALUE    0x32F0
RTC_BKP0 = BKP_VALUE;

#define RTC_BKP0                           REG32((RTC) + 0x50U)                 /*!< RTC backup register */
#define RTC_BKP1                           REG32((RTC) + 0x54U)                 /*!< RTC backup register */

到底能否用4字节?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116237
QQ
发表于 2024-10-6 11:10:29 | 显示全部楼层
cdmar79 发表于 2024-10-5 21:22
补充问个问题:
1.  f10x  f30x系列,备份域读写api函数,都是uint16_t/unsigned short,实际寄存器地址 ...

以这个说明为准

23.png
回复

使用道具 举报

6

主题

269

回帖

287

积分

高级会员

积分
287
发表于 2024-10-6 11:29:41 | 显示全部楼层
可以读写的,这部分只要不断电,首次写入的参数都保存在RTC中.
回复

使用道具 举报

0

主题

19

回帖

19

积分

新手上路

积分
19
发表于 2024-10-19 16:12:59 | 显示全部楼层
只要手工打开备份区供电和时钟,就可以读。F10x虽然寄存器之间是4字节对齐的,但寄存器本身是16位的,
你可以对BKP0写0x12345678,再读出到u32变量里看看。
F40x则是32位的。你也可以写0x12345678,再读出到u32变量里看看。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-11 07:47 , Processed in 0.256388 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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