GD32F407RTC备份寄存器BKP的使用

[复制链接]
1189|14
 楼主| 9dome猫 发表于 2022-12-24 14:55 | 显示全部楼层 |阅读模式
    在GD官网例程中没有给出GD32F407 BKP的示例代码,在网友提供的代码基础上重新使用了GD官网pmu库文件,按照流程重写了读和写的方法,供大家在使用中参考。。。#include "gd32f4xx_rtc.h"
  1. <div class="blockcode"><blockquote><p></p><div><div>#include "gd32f4xx_pmu.h"</div></div><div></div>
  1. //初始化
  2. void BKPSRAM_int(void)
  3. {
  4.         //BKPSRAM_BASE
  5.         //*(__IO uint16_t *) (BKPSRAM_BASE + offset) = 0               
  6.         //RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);        //启用压水堆时钟
  7.                                 rcu_periph_clock_enable(RCU_BKPSRAM);
  8.        // PWR_BackupAccessCmd(ENABLE);                               //能够访问到备份域
  9.                                 pmu_backup_ldo_config( PMU_BLDOON_ON);
  10.         //RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_BKPSRAM, ENABLE);    //启用备份SRAM时钟
  11.                                 pmu_backup_write_enable();
  12.         //PWR_BackupRegulatorCmd(ENABLE);                            //启用备份SRAM的低功耗稳压器,以保持它在VBAT模式的内容
  13.                                 pmu_low_driver_mode_enable(PMU_LOWDRIVER_ENABLE);
  14.        // while(PWR_GetFlagStatus(PWR_FLAG_BRR) == RESET) {}         //等到备份SRAM的低                                        功耗稳压器已准备就绪
  15.                                 while(pmu_flag_get(PMU_FLAG_BLDORF)==RESET){}

  16. }


 楼主| 9dome猫 发表于 2022-12-24 15:00 | 显示全部楼层
  1. //BKPSRAM数据读取
  2. uint16_t Rd_s16_BKPSRAM(uint16_t add)
  3. {
  4.         uint32_t offset=0;
  5.         offset=(0x07ff&add)*2;
  6.         return *(__IO uint16_t *) (BKPSRAM_BASE + offset);
  7. }
 楼主| 9dome猫 发表于 2022-12-24 15:01 | 显示全部楼层
//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 ;
}
 楼主| 9dome猫 发表于 2022-12-24 15:01 | 显示全部楼层
//测试:
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);
}
 楼主| 9dome猫 发表于 2022-12-24 15:02 | 显示全部楼层
在系统重启后,赋值的BKP0值不应该变化,表示配置成功.
lzbf 发表于 2023-1-5 13:25 | 显示全部楼层
这个可以有秒中断产生的吗?              
tabmone 发表于 2023-1-6 16:25 | 显示全部楼层
如何保存日期到这个寄存器中呢?              
1988020566 发表于 2023-1-7 17:28 | 显示全部楼层
感觉备份寄存器BKP用的还是比较少的。
pl202 发表于 2023-1-9 09:33 | 显示全部楼层
备份寄存器BKP可以保存多少个字符的?
juliestephen 发表于 2023-1-9 11:39 | 显示全部楼层
这个有什么作用呢?              
pmp 发表于 2023-1-9 12:09 | 显示全部楼层
RTC有什么数据可以保存呢?              
sdlls 发表于 2023-1-9 15:38 | 显示全部楼层
VBAT可以使用多长时间?              
xiaoyaodz 发表于 2023-1-10 20:59 | 显示全部楼层
备份寄存器BKP可以保存参数的吗?
bestwell 发表于 2023-1-11 20:27 | 显示全部楼层
备份寄存器BKP只能是说明已经授时了。
pentruman 发表于 2023-1-12 14:05 | 显示全部楼层
是否可以保存闹钟到这个寄存器里面吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

142

主题

1593

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部