后备数据寄存器
1. 后备数据寄存器概述
CH32V307后备寄存器(BKP)提供了10个16位的通用数据寄存器(BKP_DATARx),可以用来存储20个字节的用户数据。
BKP_DATARx 后备数据寄存器在VDD掉电时,可依靠VBAT电源保持数据。
当系统在待机模式下被唤醒,或系统复位或电源复位时,这些数据也不会被复位。
BKP_DATARx 后备数据寄存器复位条件:
-
后备域复位(BDRST)
-
侵入引脚事件复位(需开启侵入检测功能,引脚为PC13)
2. 后备数据寄存器读写操作
微控制器复位后对后备寄存器和RTC 的访问被禁止,需通过以下操作开启对后备寄存器的访问:
-
置寄存器RCC_APB1PCENR 的PWREN 位和BKPEN 位来打开电源和后备接口的操作时钟
-
置电源控制寄存器PWR_CTLR 的DBP 位,使能对后备寄存器和RTC 寄存器的访问
参考代码:
int main (void) { USART_Printf_Init(115200); printf("ch32V307 BKP test\r\n"); //打开电源和后备接口时钟 RCC_APB1PeriphClockCmd( RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE ); //PWR_CTLR寄存器DBP位使能,后备区域写使能 PWR_BackupAccessCmd( ENABLE ); //PWR->CTLR |= (1 << 8); BKP_WriteBackupRegister( BKP_DR1, 0x1234 ); BKP_WriteBackupRegister( BKP_DR2, 0x5678 ); printf( "BKP_DR1:%08x\r\n", BKP->DATAR1 ); printf( "BKP_DR2:%08x\r\n", BKP->DATAR2 ); while (1); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?