#ifndef _XSPOPT_FLASH_H_ #define _XSPOPT_FLASH_H_ #include "gd32f10x.h" #define START_FLASH_ADDR 0x08060000 #define END_FLAH_ADDR 0x0807FFFF #define PAGE_SIZE 2048 #define RECORD_FIFO 2048 // 记录的条数一共有2048个 #define RECORD_SIZE 64 // 一条记录的大小为64个字节 typedef struct _flash_opt_{ uint16_t head; // 头地址 uint16_t tail; // 尾地址 bool flag; // 队列标志 uint8_t totalPage; // 总的页数 64页 uint8_t pageRecord; // 一页的总记录数 // uint8_t curPage; // 当前页的索引 从0开始 //uint8_t curRecord; // 当前页的记录数 }__attribute__((packed)) FlahOpt; typedef struct _temp_read_{ uint32_t recordId; uint16_t bSend; }__attribute__((packed))tempread; typedef union _temp_record_{ tempread da; uint8_t data[6]; }__attribute__((packed))tempRecord; extern void init_flash(void); extern uint8_t read_flash(uint8_t *outda, uint8_t bupdateSend); extern void write_flash(uint8_t *data); extern uint8_t Flash_RangeErase(uint32_t FlashAddress, uint32_t Size); extern void powerup_read_record_from_flash(uint8_t *recordDA); extern uint8_t xsp_check_point_record(uint32_t recordId,uint8_t *recordDa); #endif