#include"gd32f30x.h"#include"gd32f307c_eval.h"#define BKP_DATA_REG_NUM 42
voidled_config(void);voidwrite_backup_register(uint16_tdata);uint32_tcheck_backup_register(uint16_tdata);/*!
\brief main function
\param[in] none
\param[out] none
\retval none
*/intmain(void){/* led configuration and turn on all led */led_config();/* PMU lock enable */rcu_periph_clock_enable(RCU_PMU);/* BKP clock enable */rcu_periph_clock_enable(RCU_BKPI);/* enable write access to the registers in backup domain */pmu_backup_write_enable();/* confirm RCU_BDCTL_BKPRST bit is reset */if(RESET!=(RCU_BDCTL&RCU_BDCTL_BKPRST)){rcu_bkp_reset_disable();}/* clear the bit flag of tamper event */bkp_flag_clear(BKP_FLAG_TAMPER);/* check if the POR/PDR reset flag is set */if(RESET!=rcu_flag_get(RCU_FLAG_PORRST)){/* clear the RCU all reset flags */rcu_all_reset_flag_clear();/* turn on LED4 */gd_eval_led_on(LED4);/* check if backup data registers has been written */if(0x00==check_backup_register(0x1226)){/* Backup data registers values are correct *//* turn on LED2 */gd_eval_led_on(LED2);}else{/* backup data registers values are not correct or they are not written*//* write data to backup data registers */write_backup_register(0x1226);/* turn on LED3 */gd_eval_led_on(LED3);}}/* turn on LED5 */gd_eval_led_on(LED5);;while(1){}}voidled_config(void){gd_eval_led_init(LED2);gd_eval_led_init(LED3);gd_eval_led_init(LED4);gd_eval_led_init(LED5);}