#ifndef _CHIPFLASH_H_ #define _CHIPFLASH_H_ #include "stdint.h" //#include "drv_ec800k.h" #include "stm32f1xx_hal.h" //芯片大小 128kb #define CHIPFLASH_SIZE 128 //#define FLASH_BASE ((uint32_t)0x08000000) #if CHIPFLASH_SIZE < 256 #define SECTOR_SIZE 1024 //byte #else #define SECTOR_SIZE 2048 //byte #endif extern uint32_t cur_address; //应用程序起始地址 #define APPLICATION_ADDRESS (uint32_t)0x08008000 //固件标志位信息地址 #define SET_ADDRESS (APPLICATION_ADDRESS - SECTOR_SIZE) #define SET_RESET_ADDRESS (APPLICATION_ADDRESS - 2*SECTOR_SIZE) //设备CONFIG地址 #define BASE_CONFIG_ADDR (0x0801FC00 - SECTOR_SIZE) //CLIENT 信息地址 #define CLIENT_INFO_ADDR 0x0801FC00 #define USER_FLASH_END_ADDR 0x0801FFFF //有效验证位 #define AVAILABLE_FLAG (unsigned int)0xA88A #pragma pack(push,1) //取消内存对齐 // typedef struct // { // unsigned int available_flag; // unsigned char _name[10]; // int _serial_id; // int _firmwareVersion; // int _setLon; // int _setLat; // int _setAlt; // unsigned char _config_status; // unsigned char _base_mode ; // } BASE_CONFIG; typedef struct { char mode[4]; char ip[16]; char port[16]; int _init_flag; }Cclient_info; #pragma pack(pop) //恢复内存对齐 //extern BASE_CONFIG base_config; extern Cclient_info client_info; //extern unsigned short ipaFlag; uint16_t FLASH_ReadHalfWord(uint32_t address); int FLASH_ReadMoreData(uint32_t startAddress, uint32_t *readData, uint32_t countToRead); int FLASH_WriteMoreData(uint32_t startAddress, uint32_t *writeData, uint32_t countToWrite); int FLASH_INFO_SetFlag(void); int FLASH_ErasePage(uint32_t ErasePageAddr, uint32_t PageNumber); void erasure_bin_flash(void); int FLASH_Write(volatile uint32_t FlashAddress, uint32_t *WriteData, uint32_t DataLength); int FLASH_Write_HalfWord(volatile uint32_t FlashAddress, uint16_t *WriteData, uint16_t DataLength); #endif