#ifndef _SOFT_FLASH_ #define _SOFT_FLASH_ #include "stm32f3xx_hal.h" #include "stdbool.h" /*内存规划 0-24kb bootloader 0----0x8006000 24 - 26 flash标志位 0x8006000---- 0x8006400 26 -30kb flash 参数 0x8006800 ---- 0x8007800 30 - 256 APP 0x8007800 ---0x8040000 */ #define UPDATE_FLAG ((uint32_t)0x8006000) #define FLASH_PAR_INFO (uint32_t)0x8006800 typedef enum { R_Default = 0, R_NRST = 1, // 引脚复位 R_POWER = 2, // 上电掉电复位 R_SOFT = 3, // 软件复位 R_IWD = 4, // 独立看门狗复位 R_WWD = 5, // 窗口看门狗复位 R_LOPWER = 6, // 低功耗复位 } Reset; typedef struct { short flag; short _cal_vol; short _uavtype; // 机型 用于管脚初始化 short _abnormal_outage_flag; // 异常断电标志 short _reset_reason; // 重启原因 uint16_t _SN_L; uint16_t _SN_H; short _hardVersion_L; short _hardVersion_H; }_F_PMU_PAR; extern _F_PMU_PAR flash_pmu_par; typedef struct { short cal_vol; short uavtype; // 机型 用于管脚初始化 short abnormal_outage_flag; // 异常断电标志 short reset_reason; // 重启原因 int SN; int hardVersion; }_C_PMU_PAR; extern _C_PMU_PAR current_pmu_par; extern bool write_flash_flag; void ReadFlashNBtye(uint32_t ReadAddress, uint8_t *pdata, uint16_t size); HAL_StatusTypeDef WriteFlashNBtye(uint32_t ReadAddress, uint8_t *pdata, uint16_t size); short check_flash_par_normal(short par, short min_par, short max_par, uint8_t par_or_zero); void flash_write_pmu_par(void); void flash_read_funcktion(void); void parameter_assignment_default(void); void parameter_copy(void); #endif