global.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #ifndef _GLOBAL_H_
  2. #define _GLOBAL_H_
  3. /* includes ----------------------------------------------------------*/
  4. #include "stm32f1xx_hal.h"
  5. #include "usart.h"
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9. #include <stdbool.h>
  10. #include "EC800.h"
  11. #include "flash.h"
  12. #include "comm_car_485.h"
  13. #include "task_communication.h"
  14. #include "gpio.h"
  15. #include "norflash.h"
  16. /* typedef -----------------------------------------------------------*/
  17. typedef struct{
  18. uint16_t ctrEvent; // 中控板事件
  19. // bit0:中控板迁移事件
  20. // 故障相关
  21. uint16_t mqttTimeoutCnt; // MQTT通信超时计数
  22. uint8_t positionErrorCnt; // 定位信息错误计数
  23. uint8_t InitFaultFlag_4G; // 4g模块初始化标志 1:初始化失败 0:初始化成功
  24. uint8_t timeoutCnt_485; // 485通信超时计数
  25. uint8_t gyroDataFaultFlag; // 陀螺仪数据故障标志
  26. uint8_t otaUpgradeStartFlag; // OTA升级开始标志
  27. uint8_t subscribe_fail; // 订阅主题失败
  28. uint8_t publish_fail; // 发布消息失败
  29. uint8_t get_location_error; // 获取定位信息失败
  30. // 超级权限--超级用户
  31. uint8_t superUser; // 超级权限 1:开启超级权限 0:关闭超级权限
  32. // 运行中进行围栏数据更新
  33. uint32_t fence_update;
  34. // 通过定位数据获取到时间数据
  35. uint32_t time_stamp_flag; // 1: 获取到 0:未获取到
  36. // 重新连接Mqtt服务器标志
  37. uint8_t reconnect_server_flag; // 1: 需要重新连接
  38. }global_par;
  39. extern global_par s_global_par;
  40. // 事件枚举
  41. enum event{
  42. CtrlPanelMigration, // 中控板迁移事件
  43. };
  44. // 定义故障结构体
  45. typedef struct {
  46. char errid[32]; // 假设errid的最大长度为32字节
  47. char errorInfo[128]; // 假设errorInfo的最大长度为128字节
  48. } Fault;
  49. /* define ------------------------------------------------------------*/
  50. #define TIMEOUT_485 10 // 10s 485通信超时时间
  51. #define FILTER_TIME_gyro 3 // 3s 陀螺仪故障滤波时间
  52. #define FILTER_TIME_GPS 240 // GPS滤波时间,单位:秒
  53. #define TIME_OUT_OTA 600 // 120s OTA升级超时时间设置为2min 跟升级周期链接现在是200ms
  54. #define MAX_RECORDS 500 // 历史故障记录的最大条数
  55. #define FAULT_RECORD_TIME 120 // 同一条故障记录的间隔时间 2min
  56. #define NO_CAR_STATIC_INFO // 没有车辆的状态信息
  57. /* macro -------------------------------------------------------------*/
  58. /* variables ---------------------------------------------------------*/
  59. /* function prototypes -----------------------------------------------*/
  60. // @brief 中控板初始化
  61. extern void centralCtrSys_Init(param_boot *p_param_boot, global_par *p_global_par);
  62. // @brief 中控板故障检测
  63. extern void faultDetection(global_par *p_global_par);
  64. // @brief 控制蜂鸣器响应
  65. extern void control_beep_response(void);
  66. // @brief 历史故障存储
  67. void storeFaultRecord(void);
  68. // @brief 更新保存的时间信息
  69. void refreshSavedTime(void);
  70. // @brief 车辆行驶里程计算
  71. void calculate_driving_distance(uint32_t totalMileage);
  72. // @brief 车辆行驶时长计算
  73. void calculateDriveTime(void);
  74. // @brief 车辆状态参数数据迁移
  75. void vehStateDataMig(uint8_t timeDate);
  76. // @brief 测试使用
  77. void fun(void);
  78. #endif