GD32F407RTC备份寄存器BKP的使用

    在GD官网例程中没有给出GD32F407 BKP的示例代码,在网友提供的代码基础上重新使用了GD官网pmu库文件,按照流程重写了读和写的方法,供大家在使用中参考。。。
#include "gd32f4xx_rtc.h"
#include "gd32f4xx_pmu.h"
//初始化
void BKPSRAM_int(void)
{
        //BKPSRAM_BASE
        //*(__IO uint16_t *) (BKPSRAM_BASE + offset) = 0		
        //RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);        //启用压水堆时钟
				rcu_periph_clock_enable(RCU_BKPSRAM);
       // PWR_BackupAccessCmd(ENABLE);                               //能够访问到备份域
				pmu_backup_ldo_config( PMU_BLDOON_ON);
        //RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_BKPSRAM, ENABLE);    //启用备份SRAM时钟
				pmu_backup_write_enable();
        //PWR_BackupRegulatorCmd(ENABLE);                            //启用备份SRAM的低功耗稳压器,以保持它在VBAT模式的内容
				pmu_low_driver_mode_enable(PMU_LOWDRIVER_ENABLE);
       // while(PWR_GetFlagStatus(PWR_FLAG_BRR) == RESET) {}         //等到备份SRAM的低					功耗稳压器已准备就绪
				while(pmu_flag_get(PMU_FLAG_BLDORF)==RESET){}

}
//BKPSRAM数据读取
uint16_t Rd_s16_BKPSRAM(uint16_t add)
{
        uint32_t offset=0;
        offset=(0x07ff&add)*2;
        return *(__IO uint16_t *) (BKPSRAM_BASE + offset);
}
//BKPSRAM数据写
void Write_s16_BKPSRAM(uint16_t add,uint16_t d)
{
       uint32_t offset=0;
        offset=(0x07ff&add)*2;
        *(__IO uint16_t *) (BKPSRAM_BASE + offset) = d ;
}
//测试:
void main(void){
	uint16_t res;
	BKPSRAM_int();
	res=Rd_s16_BKPSRAM(RTC_BKP0);
	if(res==0x0B)Write_s16_BKPSRAM(RTC_BKP0,0X0A);
	printf("%x\r\n",res);
	res=Rd_s16_BKPSRAM(RTC_BKP0);
	printf("%x\r\n",res);
	Write_s16_BKPSRAM(RTC_BKP0,0X3F);
}

在系统重启后,赋值的BKP0值不应该变化,表示配置成功.

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值