main.h 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. /* USER CODE BEGIN Header */
  2. /**
  3. ******************************************************************************
  4. * @file : main.h
  5. * @brief : Header for main.c file.
  6. * This file contains the common defines of the application.
  7. ******************************************************************************
  8. * @attention
  9. *
  10. * <h2><center>&copy; Copyright (c) 2021 STMicroelectronics.
  11. * All rights reserved.</center></h2>
  12. *
  13. * This software component is licensed by ST under BSD 3-Clause license,
  14. * the "License"; You may not use this file except in compliance with the
  15. * License. You may obtain a copy of the License at:
  16. * opensource.org/licenses/BSD-3-Clause
  17. *
  18. ******************************************************************************
  19. */
  20. /* USER CODE END Header */
  21. /* Define to prevent recursive inclusion -------------------------------------*/
  22. #ifndef __MAIN_H
  23. #define __MAIN_H
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. /* Includes ------------------------------------------------------------------*/
  28. #include "stm32g0xx_hal.h"
  29. #include <rtthread.h>
  30. #define DBG_kprintf 1 //打印一些调试信息
  31. #define ALL_Clear 0 //使能该标记位 上电给flash和loar恢复默认设置
  32. #define MAX_Slave_NUM 16 //最大从机挂载量
  33. #define MAX_e_code_NUM 60 //异常码最大保存值
  34. #define Node_Type LTE //决定当前模式
  35. /*
  36. #define Host One //主机模式
  37. //*/
  38. #define LTE Zero //单4G模式
  39. /*
  40. #define Monitor 150 //监听器模式 监听主从机之间的lora数据包
  41. //*/
  42. //#define USING_MON //若 #define Node_Type Monitor 需开启该define
  43. #if(Node_Type == LTE)
  44. #define LTE_CMD_BUFSIZE 2048 //4G模式使用大容量buf
  45. #define MAX_SENSOR_NUM 16 //决定处理要素模型条数
  46. #else
  47. #define LTE_CMD_BUFSIZE 1100 //主机模式使用小容量buf
  48. #define MAX_SENSOR_NUM 16 //决定处理要素模型条数
  49. #endif
  50. #define One 100 //对于需要存入flash的 bool型变量
  51. #define Zero 200 //存入uint8_t的100 和 200 来代替true和flase
  52. void Error_Handler(void);
  53. // flash的CS引脚
  54. #define FLASH_CS_Pin GPIO_PIN_4
  55. #define FLASH_CS_GPIO_Port GPIOA
  56. // flash供电硬件 接GND
  57. #define Flash_CTL_Pin GPIO_PIN_15
  58. #define Flash_CTL_Port GPIOA
  59. // 串口2的485控制引脚 外接传感器
  60. #define R_D_Pin GPIO_PIN_8
  61. #define R_D_GPIO_Port GPIOA
  62. // 串口3的485控制引脚 外接LED大屏
  63. #define RX_STU_Pin GPIO_PIN_13
  64. #define RX_STU_Port GPIOC
  65. /*
  66. #define OUT1_Pin GPIO_PIN_11
  67. #define OUT1_GPIO_Port GPIOA
  68. #define OUT2_Pin GPIO_PIN_12
  69. #define OUT2_GPIO_Port GPIOA
  70. #define TX_STU_Pin GPIO_PIN_1
  71. #define TX_STU_GPIO_Port GPIOB
  72. // PB2实际没有用 旧版使用他读取拨码开关状态
  73. #define Valve_EN_Pin GPIO_PIN_2
  74. #define Valve_EN_Port GPIOB
  75. #define LORA_WAKEUP_Pin GPIO_PIN_8
  76. #define LORA_WAKEUP_Port GPIOB
  77. #define LORA_AT_Pin GPIO_PIN_9
  78. #define LORA_AT_GPIO_Port GPIOB
  79. #define LOAR_RTSET_Pin GPIO_PIN_13
  80. #define LOAR_RTSET_Port GPIOB
  81. #define IN2_Pin GPIO_PIN_14
  82. #define IN2_GPIO_Port GPIOB
  83. #define IN1_Pin GPIO_PIN_15
  84. #define IN1_GPIO_Port GPIOB
  85. #define Valve_CTL_Pin GPIO_PIN_6
  86. #define Valve_CTL_Port GPIOC
  87. //*/
  88. // 12V升压电路控制使能引脚 高电平 开启12V输出
  89. #define CONTROL_12V_Pin GPIO_PIN_3
  90. #define CONTROL_12V_GPIO_Port GPIOB
  91. //控制4G模块供电引脚 低电平 开启
  92. #define MODULE_CTL_Pin GPIO_PIN_4
  93. #define MODULE_CTL_GPIO_Port GPIOB
  94. // 外部按键唤醒引脚 默认低电平 按下高电平
  95. #define EXT_KEY_Pin GPIO_PIN_5
  96. #define EXT_KEY_GPIO_Port GPIOB
  97. //控制进入升压模块的总供电 低电平 开启
  98. #define CONTROL_5V_Pin GPIO_PIN_6
  99. #define CONTROL_5V_GPIO_Port GPIOB
  100. //led指示灯,外部唤醒后输出高电平 灯亮
  101. #define RUN_STATUS_Pin GPIO_PIN_7
  102. #define RUN_STATUS_GPIO_Port GPIOB
  103. //电池电压adc检查,开启引脚 低电平开启
  104. #define adc_gnd_Pin GPIO_PIN_12
  105. #define adc_gnd_GPIO_Port GPIOB
  106. //MCU复位引脚
  107. #define MCU_RESET_Pin GPIO_PIN_7
  108. #define MCU_RESET_Port GPIOC
  109. /******************************************************
  110. *
  111. *
  112. * 此处为配置主机节点信息的参数
  113. *
  114. *
  115. ******************************************************/
  116. /*
  117. #define def_address 240 //默认的Lora地址
  118. #define def_FREQ 0 //Lora默认使用频段
  119. */
  120. /******************************************************
  121. *
  122. *
  123. * 此处为配置主机节点信息的参数
  124. *
  125. *
  126. ******************************************************/
  127. /*********** 分配的独立储存地址 ***********/
  128. /*为每一个参数预留4K的空间 参数间使用4K空间隔开
  129. * 在其中首地址写入一个标记位作为参数使能标记位 */
  130. #define bak_addr_SYS_INFO 0x200000
  131. #define bak_flg_SYS_INFO 0x211000
  132. #define bak_addr_Sensor 0x212000
  133. #define bak_flg_Sensor 0x213000
  134. #define bak_addr_Loar_Device 0x214000
  135. #define bak_flg_Loar_Device 0x215000
  136. /*********** 分配的独立储存地址 ***********/
  137. extern UART_HandleTypeDef huart1;
  138. extern UART_HandleTypeDef huart2;
  139. extern UART_HandleTypeDef huart3;
  140. uint8_t Get_lora_Freq(void);
  141. void Para_upgrade(uint8_t type);
  142. void Enadble_module(uint8_t en);
  143. void RESET_MCU(void);
  144. void Check_VBAT(void);
  145. void Trigger_report(uint8_t type);
  146. void Show_Version(void);
  147. void Check_Free(void);
  148. void Read_Para(void);
  149. void Excute_ADC(void);
  150. void Recode_e_code(uint8_t code , uint8_t para);
  151. void Reflash_BL_Sta_Check(void);
  152. void upgrade_bak_para(uint8_t type);
  153. uint8_t restore_bak_para(uint8_t type);
  154. typedef struct
  155. {
  156. char imei[16];
  157. char rssi[3];
  158. uint8_t run_mode; //运行模式,0:低功耗模式,1:正常模式 在flash中 存入的0 1分别是200 100
  159. uint16_t interval; //上报间隔时间,单位分钟,范围0-1000
  160. uint8_t slaves_Number; //主机配对的从机节点数量
  161. char iccid[21]; //SIM卡ID
  162. uint8_t V1_Sta; //阀控1状态
  163. uint8_t V2_Sta; //阀控2状态
  164. uint8_t Sensor_num; //传感器数量
  165. uint8_t platform; //记录上报数据的平台 默认200为四情 100为大数据
  166. char update_url[20]; //记录定制化升级url中的特殊部分
  167. }SYS_INFO;
  168. #if Node_Type == LTE
  169. typedef struct
  170. {
  171. char eKey[5]; //传感器通道号
  172. uint8_t sensor_addr; //从机地址
  173. uint16_t start_reg; //寄存器起始位置
  174. uint8_t count; //读取寄存器数量
  175. uint8_t d_pos; //数据偏移量
  176. int factor; //修正因子
  177. uint8_t d_length; //数据长度(单位uint16)
  178. int32_t value; //传感器数值
  179. char eName[15]; //传感器名称
  180. char eValue[10]; //传感器字符串形式数据
  181. char eNum[5]; //服务器端 传感器代号
  182. uint8_t cfged; //参数已配置
  183. uint8_t en_corr; //是否使能要素修正
  184. int16_t plus; // +
  185. int16_t minus; // -
  186. int16_t times; // *
  187. int16_t divide; // /
  188. }Sensor;
  189. #else
  190. typedef struct
  191. {
  192. char eKey[5]; //传感器通道号
  193. uint8_t sensor_addr; //从机地址
  194. uint16_t start_reg; //寄存器起始位置
  195. uint8_t count; //读取寄存器数量
  196. uint8_t d_pos; //数据偏移量
  197. int factor; //修正因子
  198. uint8_t d_length; //数据长度(单位uint16)
  199. int32_t value; //传感器数值
  200. char eName[15]; //传感器名称
  201. char eValue[10]; //传感器字符串形式数据
  202. char eNum[5]; //服务器端 传感器代号
  203. uint8_t cfged; //参数已配置
  204. }Sensor;
  205. #endif
  206. typedef struct
  207. {
  208. uint16_t Now_Version;
  209. uint8_t upgrade_flag;
  210. uint8_t boot_state;
  211. uint16_t iap_boot_state;
  212. }BL_Para;
  213. typedef struct
  214. {
  215. uint32_t timed_start;
  216. uint32_t boot_times;
  217. }Boot;
  218. extern SYS_INFO sys_info; /*其他系统信息结构体*/
  219. #pragma pack(1)
  220. typedef struct _DateTime /*此结构体定义了NTP时间同步的相关变量*/
  221. {
  222. uint16_t year[2]; /*年为2字节 分为高低两位 */
  223. uint8_t month; /* 月 */
  224. uint8_t day; /* 天 */
  225. uint8_t hour; /* 时 */
  226. uint8_t minute; /* 分 */
  227. uint8_t second; /* 秒 */
  228. } DateTime;
  229. typedef struct
  230. {
  231. int revise_time; //存放修正时间参数
  232. uint8_t cnt_recv_recode; //存放上次收到的从机数量
  233. }Revise_par;
  234. typedef struct
  235. {
  236. uint32_t Time_Stampe; //时间戳
  237. uint8_t code; //异常码
  238. uint8_t para; //附带参数
  239. }Record;
  240. typedef struct
  241. {
  242. uint8_t en; //是否进入了保护模式
  243. uint8_t na_cnt; //na计数/全na才行
  244. //uint8_t ; //
  245. }Trans_para;
  246. #pragma pack()
  247. extern DateTime nowdate;
  248. #endif /* __MAIN_H */
  249. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/