# GFB大流量气体传感器 **Repository Path**: MagicBude/GFB ## Basic Information - **Project Name**: GFB大流量气体传感器 - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-09 - **Last Updated**: 2026-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GFB - 数字流量开关(气体流量计) [![MCU](https://img.shields.io/badge/MCU-STM32F103-blue.svg)](https://www.st.com/zh/microcontrollers-microprocessors/stm32f103.html) [![RTOS](https://img.shields.io/badge/RTOS-cot__os-green.svg)](https://github.com/cot-x/cot_os) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) 基于STM32F103的工业级气体流量开关,参考SMC PF2MC7设计,支持流量测量、多模式开关输出、模拟量输出、流量累计等功能。 ## 📋 项目简介 GFB是一个功能完整的工业级气体流量开关系统,参考SMC PF2MC7系列设计,硬件基于LFS项目改进。系统采用模块化设计,代码规范严格遵循嵌入式C语言开发标准,适用于工业自动化、气体流量监控、过程控制等应用场景。 **主要应用领域:** - 工业气体流量监控与控制 - 气体配比与批量控制 - 过程自动化控制 - 气体泄漏检测 --- ## 🚀 核心特性 ### 🎯 测量功能 - **流量测量**:实时气体流量监测,可调响应时间 - **累计功能**:流量累计统计,定时自动保存,掉电数据保护 - **峰谷值记录**:自动记录流量的最大值和最小值 ### 🔌 输出控制 - **双路开关输出**:OUT1/OUT2独立控制,支持多种工作模式 - 迟滞模式(单点触发+滞后) - 窗口模式(上下限区间触发) - 累计输出模式(达到预设值触发) - 累计脉冲模式(流量脉冲输出) - 错误输出模式 - **模拟量输出**:OUT2可配置为模拟输出 - 4-20mA电流输出 - 0-10V/1-5V电压输出 - 可关联流量值 ### 🔧 扩展功能 - **外部输入**:OUT2可配置为外部输入,支持远程复位累计流量/峰谷值 - **过电流保护**:实时监测输出状态,自动保护 - **响应时间调节**:多档可调,平衡稳定性与响应速度 ### 📺 人机界面 - **LCD显示**:清晰直观的流量显示 - **多级菜单系统**:cot_menu框架,操作简单 - **多语言支持**:中文/英文切换 - **省电模式**:无操作自动休眠,按键唤醒 ### 💾 数据管理 - **参数存储**:EEPROM掉电保护,参数自动保存 - **校准功能**:流量校准(零点、低流量点、高流量点) - **恢复出厂**:一键恢复默认配置 --- ## 🏗️ 系统架构 ``` ┌─────────────────────────────────────────────────┐ │ 应用层 (Applications) │ │ 流量测量 │ 开关输出 │ 模拟输出 │ 流量累计 │ │ 外部输入 │ 省电管理 │ 诊断管理 │ └──────────────────┬──────────────────────────────┘ │ ┌──────────────────┴──────────────────────────────┐ │ 中间件层 (Middleware) │ │ cot_os │ cot_menu │ cot_param │ EasyLogger │ │ 多语言支持 │ 滤波算法 │ └──────────────────┬──────────────────────────────┘ │ ┌──────────────────┴──────────────────────────────┐ │ 驱动层 (BSP/Devices) │ │ LCD │ EEPROM │ DAC │ ADC │ GPIO │ Timer │ └──────────────────┬──────────────────────────────┘ │ ┌──────────────────┴──────────────────────────────┐ │ 硬件层 (STM32F103) │ │ MCU │ 传感器 │ 输出接口 │ 显示屏 │ └─────────────────────────────────────────────────┘ ``` --- ## 📁 目录结构 ``` GFB/ ├── Applications/ # 应用层功能模块 │ ├── adc/ # ADC采样 │ ├── analog_output/ # 模拟量输出 │ ├── external_input/ # 外部输入处理 │ ├── flow_accumulate/ # 流量累计功能 │ ├── flow_measurement/ # 流量测量 │ ├── frequency_sensor/ # 频率传感器 │ ├── power_saving/ # 省电模式 │ ├── range_calc/ # 量程计算 │ ├── switch_output/ # 开关输出逻辑 │ └── temp_measurement/ # 温度测量 │ ├── BSP/ # 板级支持包 │ ├── adc/ # ADC驱动 │ ├── dac/ # DAC驱动 │ ├── iic/ # I2C驱动 │ ├── spi/ # SPI驱动 │ ├── timer/ # 定时器驱动 │ ├── uart/ # UART驱动 │ └── usart/ # USART驱动 │ ├── Core/ # STM32核心文件(CubeMX生成) │ ├── Inc/ # 头文件 │ └── Src/ # 源文件 │ ├── Devices/ # 设备驱动 │ ├── 24cxx/ # EEPROM驱动 │ ├── eeprom/ # EEPROM管理 │ ├── key/ # 按键管理 │ └── lcd/ # LCD驱动 │ ├── Drivers/ # HAL库 │ └── STM32F1xx_HAL_Driver/ # ST HAL库 │ ├── Menus/ # 菜单系统 │ ├── main/ # 主界面 │ ├── out2_setting/ # OUT2设置菜单 │ └── system_setting/ # 系统设置菜单 │ ├── Middleware/ # 中间件 │ ├── cot_os/ # 轻量级任务调度器 │ ├── EasyLogger/ # 日志系统 │ ├── filter/ # 滤波算法 │ ├── kalman/ # 卡尔曼滤波 │ ├── language/ # 多语言支持 │ ├── psv/ # 周期信号验证 │ └── USMART/ # 调试系统 │ ├── SYSTEM/ # 系统模块 │ ├── elog_config/ # 日志配置 │ ├── sys/ # 系统初始化 │ ├── sys_param/ # 参数管理 │ └── task/ # 任务管理 │ ├── Tools/ # 工具脚本 ├── Utils/ # 通用工具库 ├── docs/ # 项目文档 └── README.md # 本文件 ``` --- ## 🚀 快速开始 ### 1. 开发环境 - **IDE**:Keil MDK-ARM V5.x - **编译器**:ARM Compiler V5/V6 - **调试器**:ST-Link V2或J-Link - **配置工具**:STM32CubeMX ### 2. 编译和烧录 1. 打开 `MDK-ARM/GFB.uvprojx` 工程文件 2. 编译工程(Build → Build Target) 3. 连接ST-Link调试器 4. 下载程序到开发板 ### 3. 串口调试 - 波特率:115200 - 数据位:8,停止位:1,无校验 - 连接USART1(PA9-TX, PA10-RX) 详细步骤请参考 `docs/快速开始.md` --- ## 📖 开发指南 ### 编码规范 - **代码风格**:Allman括号风格,4空格缩进 - **命名规范**:全局变量`g_`,静态全局`sg_`,静态局部`s_` - **注释规范**:头文件简短注释,源文件Doxygen注释 - **错误处理**:统一错误码枚举,所有返回值检查 - **安全编程**:指针检查、数组边界检查、避免危险函数 ### 编程原则 - **KISS原则**:函数≤100行,参数≤5个,嵌套≤4层 - **防御性编程**:所有指针检查NULL,所有函数返回值检查 - **模块化设计**:高内聚低耦合,接口清晰 详细规范请参考 `docs/开发规范.md` --- ## 📚 文档 - [项目说明](docs/项目说明.md) - 项目概述和技术要点 - [快速开始](docs/快速开始.md) - 开发环境搭建和编译指南 - [开发规范](docs/开发规范.md) - 编码规范和最佳实践 - [CubeMX配置指南](docs/CubeMX配置指南.md) - 硬件配置说明 - [软件设计书](docs/GFB%20数字流量开关%20软件设计书.md) - 详细设计文档 - [目录结构说明](docs/目录结构说明.md) - 项目结构说明 --- ## ⚠️ 注意事项 **使用前必读:** 1. **参数配置**:首次使用请配置流量范围、输出参数 2. **掉电保护**:参数自动保存,累计流量定时保存 3. **过电流保护**:输出过载时自动关闭 4. **OUT2复用**:OUT2可配置为开关输出/模拟输出/外部输入,三选一 5. **TIM5中断**:频率传感器使用TIM5,需要正确配置中断处理函数 --- ## 🤝 贡献 欢迎提交Issue和Pull Request来改进项目。 ### 提交规范 - 遵循项目编码规范 - 提供清晰的提交信息 - 包含必要的测试 --- ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 --- ## 👥 维护者 **项目维护:** GFB项目组 **创建日期:** 2026-03-11 **最后更新:** 2026-03-11 如有问题或建议,欢迎提交Issue或Pull Request。