[RISC-V MCU 应用开发]

RISC-V MCU后备数据寄存器使用

[复制链接]
155|1
手机看帖
扫描二维码
随时随地手机跟帖
小灵通2018|  楼主 | 2022-7-19 22:44 | 显示全部楼层 |阅读模式
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);
}


使用特权

评论回复
wahahaheihei| | 2022-7-19 22:45 | 显示全部楼层
这是使用库函数操作的吧,这么容易。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则