Storage.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. /*****************************************************************************
  2. Storage.h
  3. *****************************************************************************/
  4. #ifndef _STORAGE_H
  5. #define _STORAGE_H
  6. /*****************************************************************************/
  7. #include <stm32f10x.h>
  8. #include "ProtocolPack.h"
  9. /*
  10. 每个Position占64字节,1MB可存16384条记录 3MB可存49152条记录,每5秒一条记录,则可存68小时(2.8天)
  11. */
  12. #define STORAGE_POS_START_ADDR 0x00100000 //存储Position记录起始地址 1MB开始
  13. #define STORAGE_POS_END_ADDR 0x00400000 //存储Position记录结束地址
  14. #define STORAGE_POS_LEN 64 //每个Position 记录所占长度
  15. #define STORAGE_POS_COUNT_SECTOR (4096/STORAGE_POS_LEN) //每个SECTOR可以存放的记录个数
  16. #define STORAGE_POS_COUNT_TOTAL ((STORAGE_POS_END_ADDR-STORAGE_POS_START_ADDR)/STORAGE_POS_LEN) //总共可存储的记录个数
  17. #define STORAGE_POS_MARK 0x11223355
  18. #define STORAGE_POS_FLAG 0x58
  19. //保存在外部FLASH的系统参数
  20. typedef struct SUT_STORAGE_FIFO
  21. {
  22. int out;//指向队头的索引,这个所指空间有元数,先读出后位移
  23. int in; //指向对尾的索引,这个所指的空间为空,先写入后位移
  24. int len;//元素个数,只用于调试阶段判断是否异常,队列操作不以此为控制
  25. }__attribute__((packed)) SUT_STORAGE_FIFO;
  26. extern SUT_STORAGE_FIFO sutStorageFiFo;
  27. void StorageFiFoInit(void);//
  28. void StorageFiFoTest(void);
  29. void StorageCtrlSavePos(void);
  30. int StorageFiFoPop(SUT_POSITION *pPos);
  31. /*****************************************************************************/
  32. #endif
  33. /*****************************************************************************/