#include"dfu_core.h"#include"usbd_hw.h"#define SRAM_BASE_ADDR SRAM_BASE
#define SRAM_END_ADDR (SRAM_BASE + GET_BITS(REG32(0x1FFFF7E0U), 16U, 31U) * 1024U)
intmain(void){uint32_tapp_addr;app_funcapplication;uint32_tsram_sect=REG32(APP_LOADED_ADDR);/* configure tamper key to run firmware */gd_eval_key_init(KEY_TAMPER,KEY_MODE_GPIO);/* tamper key must be pressed on GD32-EVAL when power on */if(0U!=gd_eval_key_state_get(KEY_TAMPER)){/* test if user code is programmed starting from address 0x08008000 */if((sram_sect>=SRAM_BASE_ADDR)&&(sram_sect<SRAM_END_ADDR)){app_addr=*(__IOuint32_t*)(APP_LOADED_ADDR+4U);application=(app_func)app_addr;/* initialize user application's stack pointer */__set_MSP(*(__IOuint32_t*)APP_LOADED_ADDR);/* jump to user application */application();}}/* system clocks configuration */rcu_config();/* GPIO configuration */gpio_config();/* USB device configuration */usbd_init(&usb_dfu,&dfu_desc,&dfu_class);/* NVIC configuration */nvic_config();usbd_connect(&usb_dfu);while(1){}}