#ifndef MAIN_H #define MAIN_H #include "stdint.h" /* flash分区设计: 0x08000000~0x08004FFF bootleader;20KB=10页 0x08005000~0x08036FFF app;200KB=100页 0x08037000~0x08068FFF download;200KB=100页 0x08069000~0x080707FF OTA_EVENT_BLOCK;2KB=1页 0x08070800~0x0807FFFF 剩余内存;62KB=31页 0x08080000~0x082FFFFF 剩余内存;2.5MB=640页 */ #define GD32_FLASH_SADDR 0x08000000 //FLASH起始地址 #define GD32_PAGE_SIZE 2048 //FLASH扇区大小 #define GD32_PAGE_NUM 256 //FLASH总扇区个数 #define GD32_B_PAGE_NUM 10 //B区扇区个数 #define GD32_A_PAGE_NUM 100 //A区扇区个数 #define GD32_D_PAGE_NUM 100 //D区扇区个数 #define GD32_A_START_PAGE GD32_B_PAGE_NUM //APP区起始扇区编号 #define GD32_A_SADDR GD32_FLASH_SADDR + GD32_A_START_PAGE * GD32_PAGE_SIZE //A区起始地址 #define GD32_D_SADDR GD32_FLASH_SADDR + (GD32_A_START_PAGE + GD32_A_PAGE_NUM) * GD32_PAGE_SIZE //D区起始地址 #define OTA_INFOCB_SIZE sizeof(OTA_InfoCB) //OTA相关的信息结构体占用的字节长度 //注意4字节对齐 typedef struct{ uint32_t otaflag; //用于记录是否要从w25q32中读取 uint32_t XmodemByte; //用于记录一共写入了多少字节的数据 }OTA_STRUCT; extern OTA_STRUCT UpDataA; void task_fwdgt_reload(); #endif