# MaxIDE公开发布版本 **Repository Path**: anchoretor/max-ide-release ## Basic Information - **Project Name**: MaxIDE公开发布版本 - **Description**: 兼容Arduino的STM32开发环境, 使用GCC编译器, 长期项目验证, 稳定可靠. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 13 - **Created**: 2026-02-23 - **Last Updated**: 2026-02-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MaxIDE v1.9.0 MaxIDE 是一款专为 STM32 单片机开发设计的集成开发环境,基于 Arduino IDE 深度定制,让 STM32 开发变得像 Arduino 一样简单。而且经过多年的工业验证,稳定可靠。更详细的内容请参考"技术文档"目录下的HTML文档。 ## 为什么选择 MaxIDE? ### 传统 STM32 开发的痛点 使用传统方式开发 STM32(如 Keil、STM32CubeIDE)需要: - 理解复杂的寄存器配置和时钟树 - 编写冗长的 HAL 库初始化代码 - 手动配置启动文件和链接脚本 - 处理复杂的工程配置和编译选项 - 单独配置烧录工具和调试器 **一个简单的 LED 闪烁程序,传统方式可能需要上百行代码!** ### MaxIDE 如何封装底层 MaxIDE 通过多层抽象架构,将复杂的底层操作封装成简洁的 API: ``` ┌─────────────────────────────────────────────────┐ │ 用户程序 (Arduino 风格) │ │ setup() / loop() / digitalWrite() │ ├─────────────────────────────────────────────────┤ │ Arduino 兼容层 (Wiring API) │ │ pinMode / analogRead / Serial / delay 等 │ ├─────────────────────────────────────────────────┤ │ 硬件抽象层 (HAL) │ │ GPIO / UART / SPI / I2C / Timer / ADC │ ├─────────────────────────────────────────────────┤ │ 底层驱动层 │ │ 寄存器操作 / 时钟配置 / 中断管理 / DMA │ ├─────────────────────────────────────────────────┤ │ STM32 硬件 │ │ F103R8T6 / F103RET6 / F103VET6 / F407ZET6 │ └─────────────────────────────────────────────────┘ ``` ### 底层封装的具体实现 #### 1. 自动时钟配置 传统开发需要手动配置 RCC 时钟树,MaxIDE 在启动代码中自动完成: - 自动配置系统时钟到最高频率(F103: 72MHz, F407: 168MHz) - 自动使能所需外设的时钟 - 用户无需编写任何时钟初始化代码 #### 2. GPIO 简化操作 ```cpp // 传统 HAL 库方式(约20行代码) __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // MaxIDE 方式(2行代码) pinMode(5, OUTPUT); // 设置引脚5为输出模式 digitalWrite(5, HIGH); // 设置引脚5为高电平 ``` #### 3. 串口通信封装 ```cpp // 传统方式需要:配置 GPIO、使能时钟、设置波特率、配置中断... // MaxIDE 方式 Serial1.begin(115200); // 一行代码完成所有串口1初始化 Serial1.println("Hello!"); // 直接发送数据 ``` #### 4. 自动引脚映射 MaxIDE 内置了完整的引脚映射表,自动将 Arduino 风格的引脚名转换为实际的 GPIO: - `PA0` ~ `PA15`、`PB0` ~ `PB15` 等直接使用 - `LED_BUILTIN` 自动映射到开发板的 LED 引脚 - `A0` ~ `A7` 自动映射到 ADC 通道 #### 5. 一键编译烧录 MaxIDE 自动处理: - 调用 arm-none-eabi-gcc 编译工具链 - 链接正确的启动文件和库 - 生成 .bin 固件文件 - 通过串口自动烧录到芯片(无需 ST-Link) ### 对比示例:LED 闪烁 **传统 Keil + HAL 库方式(约100行):** 需要创建工程、配置时钟、编写 main.c、配置 GPIO、编写延时函数... **MaxIDE 方式(10行):** ```cpp void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(500); digitalWrite(LED_BUILTIN, LOW); delay(500); } ``` ### 适用人群 - **Arduino 用户**: 无需学习新语法,直接上手 STM32 - **嵌入式初学者**: 快速入门,专注于应用逻辑 - **产品原型开发**: 快速验证想法,缩短开发周期 - **教育培训**: 降低学习门槛,专注于编程思想 - 工业级设计标准,确保稳定可靠 ## 主要特性 - **Arduino 兼容**: 使用熟悉的 Arduino API 进行 STM32 开发 - **支持多种 STM32 芯片**: - STM32F1 系列: F103R8T6, F103RET6, F103VET6 - STM32F4 系列: F407ZET6 - **集成烧录工具**: 内置 MaxLoader 自动烧录,无需额外配置 - **CPU 型号验证**: 上传前自动检测芯片型号,防止程序误烧到错误的芯片 - **中文界面**: 完整的中文本地化支持 - **AI接口**: 支持外部AI工具调用MaxIDE功能,实现智能化开发 - **多种调试工具**: 集成串口调试助手、MODBUS调试工具、串口绘图器、仪表盘显示器、二进制查看器等 ## 系统要求 - Windows 7/8/10/11 (64位) - Java Runtime Environment (已内置) - USB 转串口驱动(CH340/CP2102/FT232等) ## 快速开始 ### 1. 启动 MaxIDE 双击 `MaxDuino.exe` 启动 IDE。 ### 2. 选择开发板 菜单栏 → **工具** → **开发板** → 选择你的 STM32 板卡型号 | 板卡名称 | 芯片型号 | Flash | RAM | |----------|----------|-------|-----| | F103R8T6 | STM32F103R8T6 | 64KB | 20KB | | F103RET6 | STM32F103RET6 | 512KB | 64KB | | F103VET6 | STM32F103VET6 | 512KB | 64KB | | F407ZET6 | STM32F407ZET6 | 512KB | 192KB | ### 3. 选择串口 菜单栏 → **工具** → **端口** → 选择你的串口(如 COM2) ### 4. 编写程序 ```cpp void setup() { pinMode(LED_BUILTIN, OUTPUT); // 设置LED引脚为输出 } void loop() { digitalWrite(LED_BUILTIN, HIGH); // 点亮LED delay(500); // 延时500ms digitalWrite(LED_BUILTIN, LOW); // 熄灭LED delay(500); // 延时500ms } ``` ### 5. 编译上传 点击工具栏的 **上传** 按钮(→)或按 `Ctrl+U` ## 硬件连接 ### USB 转串口连接 | USB转串口 | STM32 | |-----------|-------| | TXD | PA10 (USART1_RX) | | RXD | PA9 (USART1_TX) | | GND | GND | | 3.3V/5V | VCC | ### 自动下载电路 MaxIDE 支持通过 DTR/RTS 信号自动控制 STM32 进入 Bootloader 模式: | USB转串口 | STM32 | |-----------|-------| | DTR | BOOT0 (通过电容耦合) | | RTS | NRST (通过电容耦合) | ## 常用函数 ### 数字 I/O ```cpp pinMode(pin, mode); // 设置引脚模式 (INPUT/OUTPUT/INPUT_PULLUP) digitalWrite(pin, value); // 数字输出 (HIGH/LOW) int val = digitalRead(pin); // 数字读取 ``` ### 模拟 I/O ```cpp int val = analogRead(pin); // ADC读取 (0-4095, 12位) analogWrite(pin, value); // PWM输出 (0-255) ``` ### 串口通信 ```cpp Serial.begin(115200); // 初始化串口 Serial.println("Hello"); // 发送数据 if (Serial.available()) { // 检查是否有数据 char c = Serial.read(); // 读取数据 } ``` ### 时间函数 ```cpp delay(ms); // 毫秒延时 delayMicroseconds(us); // 微秒延时 unsigned long t = millis(); // 获取运行时间(ms) unsigned long t = micros(); // 获取运行时间(us) ``` ## 目录结构 ``` MaxIDE/ ├── MaxDuino.exe # 主程序 ├── lib/ # Java库文件 ├── hardware/ │ └── arduino/ │ ├── STM32F1/ # STM32F1 平台文件 │ │ ├── cores/ # 核心库 │ │ ├── variants/ # 板卡变体定义 │ │ ├── libraries/ # 内置库 │ │ └── uploader/ # 烧录工具 │ └── STM32F4/ # STM32F4 平台文件 ├── examples/ # 示例程序 └── java/ # Java运行时 ``` ## 常见问题 ### Q: 上传失败,提示"无法进入Bootloader" **A:** 请检查: 1. 串口连接是否正确 2. BOOT0 和 NRST 的自动下载电路是否正确 3. 尝试手动按住 BOOT0 按钮,点击 RESET,然后松开 BOOT0 ### Q: 上传时提示"CPU型号不匹配" **A:** 选择的开发板型号与实际芯片不符。请在 **工具** → **开发板** 中选择正确的型号。 ### Q: 编译报错"找不到头文件" **A:** 确保已安装所需的库。可通过 **项目** → **加载库** → **管理库** 安装。 ### Q: 程序上传成功但不运行 **A:** 1. 检查 BOOT0 引脚是否接地(运行模式需要 BOOT0=0) 2. 按下 RESET 按钮复位 ## 调试工具 MaxIDE 集成了多种强大的单片机调试工具,可通过菜单栏 **工具** 访问。 ### 串口调试助手 专业的串口通信调试工具,支持多种数据格式和高级功能。 **启动方式:** 菜单栏 → **工具** → **串口调试助手** **主要功能:** - 支持 ASCII 和 HEX 两种数据格式收发 - 多报文管理:可保存常用报文,快速发送 - 定时发送:支持设置发送间隔和循环次数 - 发送回显:可选择是否显示已发送的数据 - 自动滚屏:接收区自动滚动到最新数据 - 数据统计:实时显示收发字节数 - 导入/导出:支持报文文件的导入导出 - 语音播报:发送 `[VOICE]文本` 可触发语音朗读,支持中英文[回车或换行符号结束] **使用技巧:** ``` 1. 选择正确的串口和波特率 2. 点击"打开串口"建立连接 3. 在发送区输入数据,点击"发送"或按回车发送 4. 使用多报文表格管理常用命令 5. 双击表格行可快速发送该报文 ``` ### MODBUS 调试工具 支持 MODBUS RTU 协议的主站和从站调试工具。 **启动方式:** 菜单栏 → **工具** → **MODBUS 调试工具** **主站模式功能:** - 支持读取线圈(01)、读取离散输入(02)、读取保持寄存器(03)、读取输入寄存器(04) - 支持写单个线圈(05)、写单个寄存器(06)、写多个线圈(15)、写多个寄存器(16) - 可配置从站地址、起始地址、数量等参数 - 支持定时轮询功能 **从站模式功能:** - 模拟 MODBUS 从站设备 - 可配置从站地址和寄存器数据 - 实时显示主站请求和响应 ### 串口绘图器 实时绘制串口接收数据的波形图,适用于传感器数据可视化。 **启动方式:** 菜单栏 → **工具** → **串口绘图器** **主要功能:** - 支持多通道数据同时显示(不同颜色区分) - 自动缩放:根据数据范围自动调整Y轴 - 手动缩放:可手动设置Y轴范围 - 数据暂停:可暂停波形更新以便观察 - 波形导出:可导出波形数据 - 语音播报:发送 `[VOICE]文本` 可触发语音朗读,支持中英文[回车或换行符号结束] **数据格式:** ```cpp // 单通道数据 Serial.println(value); // 多通道数据(用逗号或空格分隔) Serial.print(value1); Serial.print(","); Serial.println(value2); ``` ### 仪表盘显示器 以仪表盘形式显示串口数据,支持多种风格。 **启动方式:** 菜单栏 → **工具** → **仪表盘显示器** **仪表盘风格:** - **经典指针**: 传统指针式仪表盘 - **iOS玻璃**: 现代玻璃质感风格 - **Material**: 简约扁平化设计 - **奔驰经典**: 仿奔驰汽车仪表盘 - **奔驰AMG**: 仿奔驰AMG运动仪表盘 **主要功能:** - 支持多通道数据显示 - 可设置数值范围(最小值/最大值) - 指针平滑动画过渡 - 自动保存窗口配置 - 语音播报:发送 `[VOICE]文本` 可触发语音朗读,支持中英文[回车或换行符号结束] **数据格式:** ```cpp // 与串口绘图器相同 Serial.println(value); // 单通道 Serial.println("100,200,300"); // 多通道 ``` ### 二进制查看器 查看和分析二进制文件内容。 **启动方式:** 菜单栏 → **工具** → **二进制查看器** **主要功能:** - 十六进制显示:以 HEX 格式显示文件内容 - ASCII 对照:同时显示对应的 ASCII 字符 - 地址显示:显示每行数据的偏移地址 - 搜索功能:支持十六进制或文本搜索 - 大文件支持:可查看大型二进制文件 **使用场景:** - 查看编译生成的 .bin 固件文件 - 分析 Flash 读取的数据 - 检查二进制协议数据 ### 烧写工具 独立的固件烧写工具,支持多种芯片操作。 **启动方式:** 菜单栏 → **工具** → **烧写工具** **主要功能:** - 固件烧写:烧写 .bin 或 .hex 文件到芯片 - 芯片擦除:擦除芯片 Flash - 读取 Flash:读取芯片 Flash 内容到文件 - 芯片信息:获取芯片 ID 和 Bootloader 版本 - 读保护控制:设置或清除读保护 ## AI 接口 (MCP) MaxIDE 内置 MCP (Model Context Protocol) 服务器,支持 Windsurf、Cursor 等 AI 工具通过标准协议控制 IDE。 **工作原理:** 1. MaxIDE 启动后自动在本地启动 MCP Server(默认端口 18820) 2. AI 工具通过 SSE 连接到 `http://localhost:18820/sse` 3. 通过 JSON-RPC 2.0 协议调用 IDE 功能 4. 可在 工具 → MCP配置 中修改端口、启用/禁用、设置自定义提示词 **Windsurf 配置示例** (`~/.codeium/windsurf/mcp_config.json`): ```json {"mcpServers":{"maxide":{"serverUrl":"http://localhost:18820/sse"}}} ``` **支持的 MCP 工具 (74个):** - 基础: compile, upload, get_status, open_sketch, reset - 导出: export_bin, export_hex - 串口: serial_open/close/send/read/config/clear/autosend/get_text - 绘图: plotter_open/close/data/clear/config/screenshot - 项目: new_sketch, list_examples, get_build_output, save_sketch, read_code, write_code - 硬件: chip_erase, firmware_download, firmware_checksum, list_boards, select_board, list_ports, select_port - 窗口: programmer, gauge, histogram 的打开/关闭/配置 - 语音播报: plotter_speak, gauge_speak, histogram_speak - MODBUS: 主站/从站的连接、读写、轮询、日志等 - 虚拟串口: virtual_serial 的创建/删除/管理 - API 文档: get_core_api, get_library_doc, get_library_example ## 版本历史 ### v1.9.0 (2026-02-20) - 新增语音播报功能:串口助手、绘图器、仪表盘、直方图均支持 `[VOICE]` 前缀触发语音朗读(Windows SAPI,中英文) - 新增 3 个语音播报 MCP 工具:plotter_speak、gauge_speak、histogram_speak - 新增虚拟串口管理功能及 7 个 MCP 工具(创建/删除/管理虚拟串口对) - 新增 API 文档查询 MCP 工具:get_core_api、get_library_doc、get_library_example - MCP 工具总数从 59 个扩展到 74 个 - 修复 MCP 服务器 POST body 中文编码问题(自动检测 UTF-8/GBK) - 串口数据接收支持 UTF-8/GBK 自动编码检测 - AI 接口升级为 MCP (Model Context Protocol) SSE 传输 - 新增 MCP 配置界面(工具 → MCP配置),可配置端口、启用/禁用、自定义提示词 - MCP 自定义提示词通过 instructions 字段发送给 AI 客户端 - 新增串口绘图器截图功能(plotter_screenshot),便于 AI 识别绘图结果 - 新增导出 BIN/HEX 文件的 MCP 工具(export_bin、export_hex) - 新增 MODBUS 主站/从站 MCP 工具(14个),支持 AI 全自动调试 MODBUS 设备 - 新增信息栏右键菜单:复制信息、清空信息 - 默认工程模板注释汉化(setup/loop 提示改为中文) - 移除编辑区右键菜单中无用的项目:复制到论坛、复制为HTML、Find in Reference、Open URL - 修复 MODBUS 主站 MCP 接口的多个线程安全问题 - 修复绘图器截图背景透明的问题 - 修复 reset 工具进程无超时可能永久阻塞的问题 - 更新 README 文档,清理过时的 AI 接口描述 ### v1.8.2修改 (2026-02-14) - MaxDMAD 库升级至 V1.3,新增 5 个 API:getRaw()、getVoltage()、getChannelCount()、isEnabled()、getAll() - 补齐 STM32F4 平台 MaxDMAD 库完整实现(与 F1 API 一致) - 新增 MaxDMAD 技术文档(HTML 格式,含完整 API 参考和 6 个示例) - 修复 F1 MaxDMAD 库 open() 函数未使用变量的编译警告 ### v1.8.2 (2026-02-10) - 新增分布直方图工具(HistogramWindow) - 支持多通道实时柱状图显示 ### v1.8.1 (2026-02-09) - 新增 MaxFFT 快速傅里叶变换库 - 增量编译优化(5.7s → 0.4s) ### v1.8.0 (2026-02-06) - 新增 AI 接口功能,支持外部 AI 工具调用 - 新增串口调试助手,支持多报文管理 - 新增 MODBUS 调试工具(主站/从站) - 新增串口绘图器,支持多通道波形显示 - 新增仪表盘显示器,支持5种仪表盘风格 - 新增二进制查看器 - 优化烧写工具,提升上传速度 - 修复多个 UI 显示问题 ### v1.7.0 (2026-02-01) - 新增 CPU 型号验证功能,防止程序误烧 - 优化板卡命名,统一使用芯片型号命名 - 修复多个 BUG ### v1.6.5 - 初始版本 ## 技术支持 - 问题反馈: 请在 GitHub 提交 Issue - 硬件支持: 青岛市张彦欣单片机有限公司 ## 许可证 本软件基于 Arduino IDE 开源项目开发,遵循 LGPL 许可证。 --- **MaxIDE** - 让 STM32 开发更简单!