1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > GD32F407RTC备份寄存器BKP的使用

GD32F407RTC备份寄存器BKP的使用

时间:2019-11-17 16:55:48

相关推荐

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值不应该变化,表示配置成功.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。