soft_flash.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #ifndef _SOFT_FLASH_
  2. #define _SOFT_FLASH_
  3. #include "stm32f3xx_hal.h"
  4. #include "stdbool.h"
  5. /*内存规划
  6. 0-24kb bootloader 0----0x8006000
  7. 24 - 26 flash标志位 0x8006000---- 0x8006400
  8. 26 -30kb flash 参数 0x8006800 ---- 0x8007800
  9. 30 - 256 APP 0x8007800 ---0x8040000
  10. */
  11. #define UPDATE_FLAG ((uint32_t)0x8006000)
  12. #define FLASH_PAR_INFO (uint32_t)0x8006800
  13. typedef enum
  14. {
  15. R_Default = 0,
  16. R_NRST = 1, // 引脚复位
  17. R_POWER = 2, // 上电掉电复位
  18. R_SOFT = 3, // 软件复位
  19. R_IWD = 4, // 独立看门狗复位
  20. R_WWD = 5, // 窗口看门狗复位
  21. R_LOPWER = 6, // 低功耗复位
  22. } Reset;
  23. typedef struct
  24. {
  25. short flag;
  26. short _cal_vol;
  27. short _uavtype; // 机型 用于管脚初始化
  28. short _abnormal_outage_flag; // 异常断电标志
  29. short _reset_reason; // 重启原因
  30. uint16_t _SN_L;
  31. uint16_t _SN_H;
  32. short _hardVersion_L;
  33. short _hardVersion_H;
  34. }_F_PMU_PAR;
  35. extern _F_PMU_PAR flash_pmu_par;
  36. typedef struct
  37. {
  38. short cal_vol;
  39. short uavtype; // 机型 用于管脚初始化
  40. short abnormal_outage_flag; // 异常断电标志
  41. short reset_reason; // 重启原因
  42. int SN;
  43. int hardVersion;
  44. }_C_PMU_PAR;
  45. extern _C_PMU_PAR current_pmu_par;
  46. extern bool write_flash_flag;
  47. void ReadFlashNBtye(uint32_t ReadAddress, uint8_t *pdata, uint16_t size);
  48. HAL_StatusTypeDef WriteFlashNBtye(uint32_t ReadAddress, uint8_t *pdata, uint16_t size);
  49. short check_flash_par_normal(short par, short min_par, short max_par, uint8_t par_or_zero);
  50. void flash_write_pmu_par(void);
  51. void flash_read_funcktion(void);
  52. void parameter_assignment_default(void);
  53. void parameter_copy(void);
  54. #endif