#ifndef __myBootloader_H #define __myBootloader_H #include "stm32f10x.h" #include "stdbool.h" // 0x08004000~0x0800FFFF的空间为APP使用 #define APP_START_ADDR 0x0800C800 // IAP地址最后一个Page放Flag #define IAP_UPGRADE_FLAG_ADDR (APP_START_ADDR-2048) // 用户的APP code 收到上位机 0x5AA5 命令后, 会设置此旗标, 表示后续将进行APP更新, 详见应用指南 #define IAP_UPGRADE_FLAG 0x41544B38 #define SRAM_SIZE 48 typedef void (*iapfun)(void); //定义一个函数类型的参数. typedef struct{ uint8_t cmd_head; uint8_t cmd_addr[4]; uint8_t cmd_buf[2248]; uint8_t cmd_check; }CMD_DATA_STRUCT; typedef enum{ CMD_DATA_IDLE, CMD_DATA_ADDR, CMD_DATA_BUF, CMD_DATA_CHACK, CMD_DATA_DONE, CMD_DATA_ERR, }CMD_DATA_STEP; typedef enum{ CMD_CTR_IDLE, CMD_CTR_INIT, CMD_CTR_DONE, CMD_CTR_ERR, CMD_CTR_APP, }CMD_CTR_STEP; typedef enum{ CMD_PRO_IDLE, CMD_PRO_START, CMD_PRO_GET_INIT, CMD_PRO_GET_OFFSET_ADDR, CMD_PRO_RECV_ING, CMD_PRO_WRITE_2KBYTE, CMD_PRO_CRC_ERROR, CMD_PRO_ADDR_ERROR, CMD_PRO_BOOT_DONE, }CMD_PRO_STA; typedef enum{ UPDATE_PRE, UPDATE_CLEAR_FLAG, UPDATE_ING, UPDATE_DONE, }UPDATE_STATUS_te; void IAP_Load_APP(uint32_t appxaddr); uint8_t decodeBootLoadData(uint8_t *src, uint16_t len); void myFlash_setBootloadFlag(void); void myFlash_clearBootloadFlag(void); bool myFlash_checkFlag(void); #endif