可用的文件,全部

This commit is contained in:
2026-03-21 01:49:41 +08:00
commit da4f00f652
56 changed files with 9299 additions and 0 deletions

148
Core/Bsp/README.md Normal file
View File

@@ -0,0 +1,148 @@
# BSP Drivers
本目录包含外设驱动模块包括继电器驱动、传感器驱动和UART通信。
---
## 1. 继电器驱动 (Relay)
控制 LIGHT 和 FAN 两个继电器。
### 硬件连接
| 继电器 | GPIO端口 | 引脚 |
|--------|----------|------|
| LIGHT | GPIOB | PB15 |
| FAN | GPIOB | PB14 |
> 注意:两个继电器均为**低电平有效**(低电平触发开启)
### API 接口
| 函数 | 描述 |
|------|------|
| `BSP_Relay_Init()` | 初始化所有继电器,默认为关闭状态 |
| `BSP_LIGHT_On()` | 打开 LIGHT 继电器 |
| `BSP_LIGHT_Off()` | 关闭 LIGHT 继电器 |
| `BSP_LIGHT_Toggle()` | 切换 LIGHT 继电器状态 |
| `BSP_FAN_On()` | 打开 FAN 继电器 |
| `BSP_FAN_Off()` | 关闭 FAN 继电器 |
| `BSP_FAN_Toggle()` | 切换 FAN 继电器状态 |
| `BSP_FAN_SetMode()` | 设置风扇模式(自动/手动) |
| `BSP_FAN_SetThreshold()` | 设置自动模式温度阈值 |
| `BSP_FAN_AutoControl()` | 根据温度自动控制风扇 |
---
## 2. BMP280 气压/温度传感器
使用 I2C1 接口 (PB6-SCL, PB7-SDA)I2C地址: 0x76 (SDO接地)
### 配置说明
- I2C接口: I2C1
- I2C地址: 0x76
- 引脚: PB6 (SCL), PB7 (SDA)
---
## 3. UART1 通信驱动 (MQTT透传)
使用 DMA + IDLE空闲中断 实现高效接收用于MQTT模块透明传输。
### 硬件连接
| 功能 | GPIO端口 | 引脚 |
|------|----------|------|
| TX | GPIOA | PA9 |
| RX | GPIOA | PA10 |
### DMA配置
| DMA通道 | 方向 | 说明 |
|---------|------|------|
| DMA1_Channel4 | TX | USART1发送 |
| DMA1_Channel5 | RX | USART1接收 |
### 工作原理
1. DMA持续接收数据到缓冲区
2. 检测到IDLE空闲线一帧结束时触发中断
3. 中断只保存数据长度并重启DMA
4. 主循环中调用 `BSP_UART1_Process()` 解析JSON命令并执行
5. 执行结果以JSON格式通过UART1返回
### 文件结构
```
Core/Bsp/
├── bsp_uart.h / .c # UART1 DMA驱动
├── bsp_cmd.h / .c # JSON命令解析与执行
├── cJSON.h / .c # cJSON库精简版
├── bsp_relay.h / .c # 继电器驱动
├── bsp_flash.h / .c # Flash存储驱动
├── bsp_bmp280.h / .c # BMP280 BSP
├── driver_bmp280.h / .c # LibDriver BMP280
└── driver_bmp280_interface.c / .h # HAL接口
```
---
## 4. JSON 命令协议
通信采用 JSON 格式,所有命令通过 UART1 接收,响应也通过 UART1 返回。
### 请求格式
```json
{"cmd":"xxx","value":"xxx"}
```
### 支持的命令
| 命令 | 请求示例 | 说明 |
|------|---------|------|
| 查询状态 | `{"cmd":"status"}` | 返回所有状态信息 |
| 风扇模式 | `{"cmd":"fan_mode","value":"auto"}` | 设置风扇为自动/手动 |
| 风扇阈值 | `{"cmd":"fan_threshold","value":30.0}` | 设置温度阈值 |
| 风扇开关 | `{"cmd":"fan","value":"on"}` | 手动开/关风扇 |
| 灯光开关 | `{"cmd":"light","value":"on"}` | 开/关灯 |
| 恢复默认 | `{"cmd":"reset"}` | 恢复出厂设置 |
### 响应格式
**简单响应:**
```json
{"status":"ok","msg":"fan mode set to auto"}
{"status":"error","msg":"unknown command"}
```
**状态查询响应:**
```json
{"status":"ok","data":{"fan_mode":"auto","fan_threshold":30.0,"fan":"off","light":"off"}}
```
---
## 5. Flash存储 (bsp_flash)
将设置参数存储到内部Flash实现断电保存。
- 存储地址: `0x0801F800` (最后一页)
---
## 初始化
驱动在 `MX_FREERTOS_Init()` 和任务启动时初始化:
```c
// MX_FREERTOS_Init() 中
BSP_Relay_Init(); // 继电器初始化
BSP_BMP280_Init(); // BMP280初始化
// StartDefaultTask() 中
BSP_UART1_Init(); // UART1 DMA初始化
```
任务循环中调用 `BSP_UART1_Process()` 处理命令。