#ifndef __MAIN_H #define __MAIN_H #ifdef __cplusplus extern "C" { #endif #include "stm32f1xx_hal.h" /* USER CODE BEGIN Includes */ #include "air780e.h" #include "log.h" /* USER CODE END Includes */ void Error_Handler(void); /* USER CODE BEGIN Private defines */ #define Rx_Max 8192 /* USART3 DMA 接收缓冲:OTA 分块 3KB + 头部/尾部突发约 3.1KB,留足余量 */ extern uint16_t Rx_Len; extern uint8_t Rx_Buf[Rx_Max]; extern UART_HandleTypeDef huart3; /* EEPROM配置魔数: 自动检测EEPROM是否已初始化 */ #define EEPROM_MAGIC 0xDEADBEEF// 0xDE123456//0xDEADBEEF /*===== 固件版本号(平台按此识别 OTA,新版本只需改这里) =====*/ #define FIRMWARE_VERSION_STR "1.0.0" /*===== GPS 定位配置 ===== * 同一套固件适配是否带 GNSS 的模组,编译前在这里二选一: * 1 = 启用北斗/GPS 定位周期上报(仅 4G 通道,需 Air780EG 模组) * 0 = 不获取不上传(纯 Air780E 无 GNSS 时用,不产生任何 GPS 相关 AT 交互) */ #define PRODUCT_WITH_GPS 1 /*===== MQTT 默认配置 =====*/ //RTOS版本采集终端-01 #define MQTT_CLIENT_ID "8e4275a845def5e7" #define MQTT_USERNAME "696480998250532865" #define MQTT_PASSWORD "1e02bda5c9162339" #define MQTT_SERVER_IP "58.17.14.95" #define MQTT_SERVER_PORT 1880 #define MQTT_TOPIC "/iot/data/down/" /*===== 蓝牙名称配置 ===== * 上电时通过 AT 命令设置 HLK-B40 的蓝牙名称(掉电保存), * 多台设备现场用名字区分;手机列表大约只显示前 10 位 */ #define BLE_NAME "NKY-BT-01" /*===== 蓝牙发射功率(AT+RFPOWER) ===== * 1~18 共 18 级,出厂默认 8。多台设备同场所时调小(如 1~3), * 缩短可搜索距离,避免互相认错设备。模块内保存,改宏后下次开机自动重设一次 */ #define BLE_TX_POWER 1 /*===== 电池电量检测(PA0, ADC1 通道0) ===== * 电压 = ADC/4096*3.3*分压比 + 偏移,电量% = 100*(V-放空)/(充满-放空) * 默认沿用控制板参数:分压比 11、偏移 0.6V、10.8V=0%、12.6V=100%(12V 铅酸) */ #define BAT_DIV_RATIO 11.0f #define BAT_OFFSET_V 0.6f #define BAT_EMPTY_V 10.8f #define BAT_FULL_V 12.6f /*===== 蓝牙 GATT UUID 配置(透传服务)===== * BLE_UUID_CUSTOM = 1:上电把三个 UUID 设为下面的值(重启模块生效)。 * = 0:保持模块出厂 UUID(fff0/fff1/fff2),仅海凌科自家 APP 可用 * 当前配置:FFE0/FFE1(HM-10/JDY-31 同款,收发共用 FFE1 单特征), * 常见 BLE 串口 APP 都能连。Nordic NUS 备选:6e400001/6e400003/6e400002 */ #define BLE_UUID_CUSTOM 1 #define BLE_UUID_SERVICE "0000ffe000001000800000805f9b34fb" /* FFE0 服务 */ #define BLE_UUID_TX "0000ffe100001000800000805f9b34fb" /* FFE1 模块->手机 */ #define BLE_UUID_RX "0000ffe100001000800000805f9b34fb" /* FFE1 手机->模块(同特征双向) */ /* MQTT配置结构体 (存储在AT24C02 EEPROM中) */ typedef struct { char ClientID[20]; char Username[20]; char Passward[20]; char ServerIP[20]; char Topic[20]; uint16_t ServerPort; uint8_t Relay_State[7]; /* 采集终端不再使用,保留字段保持 EEPROM 布局兼容 */ uint32_t Magic; /* 魔数, 检测EEPROM是否已初始化 */ uint16_t Ver; /* OTA固件版本号, 断电保持 */ } MqttInfo_Str; #define MQTT_STRUCT_LEN sizeof(MqttInfo_Str) /*===== W25Q64 外部 Flash 引脚(软件 SPI) =====*/ #define W25Q64_CS_PIN GPIO_PIN_4 #define W25Q64_CS_PORT GPIOB #define W25Q64_CLK_PIN GPIO_PIN_3 #define W25Q64_CLK_PORT GPIOB #define W25Q64_DO_PIN GPIO_PIN_5 /* Flash DO -> MCU 输入 */ #define W25Q64_DO_PORT GPIOB #define W25Q64_DI_PIN GPIO_PIN_15 /* MCU DI -> Flash 输入 */ #define W25Q64_DI_PORT GPIOA extern MqttInfo_Str MqttInfoStr; /* USER CODE END Private defines */ #ifdef __cplusplus } #endif #endif /* __MAIN_H */