# stm32f407_minimum_foc_system **Repository Path**: fortunely/stm32f407_minimum_foc_system ## Basic Information - **Project Name**: stm32f407_minimum_foc_system - **Description**: FOC最小系统,MCU使用STM32F407,用于学习、研究如何控制PMSM电机(3000RPM)运转 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-05-14 - **Last Updated**: 2026-06-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # STM32F407 最小 FOC 控制系统 基于 STM32F407 的 PMSM 电机 FOC(磁场定向控制)最小系统,用于学习和研究电机控制. ## 硬件平台 - **开发板**:野火骄阳电机开发板 - **MCU**: STM32F407IGTx (ARM Cortex-M4, 168MHz),外部晶振25MHz - **电机类型**: 永磁同步电机 (PMSM) 42JSF630AS-1000,额定转速 3000 RPM - **母线电压**: 24V DC ## 项目结构 ``` ├── Core/ # STM32CubeMX 生成的 HAL 核心代码 ├── Drivers/ # CMSIS & STM32F4xx HAL 库 ├── System/ # 系统延时、串口驱动 ├── User/ │ ├── Foc/ # FOC 控制核心代码 │ │ ├── foc_core # 状态机与调度器 (启动/停止/调速) │ │ ├── foc_control # 控制算法 (开环 V/f、电流环) │ │ ├── foc_hal # 硬件抽象 (PWM、ADC、GPIO) │ │ ├── foc_math # 数学库 (Clark/Park/SVPWM) │ │ ├── foc_cli # 串口命令行交互接口 │ │ └── foc_config.h # 电机与硬件参数配置 │ └── Led/ # LED 指示 └── stm32f407_minimum_foc_system.ioc # CubeMX 配置文件 ``` ## 主要特性 - **PWM 驱动**: TIM1 中心对齐模式,16kHz 开关频率,带死区插入 - **电流采样**: ADC1 注入组双电阻采样,由 TIM1 TRGO 触发 - **控制方式**: 开环速度控制(V/f 控制),支持平滑加减速 - **串口调试**: USART1 命令行接口,支持实时设置转速和查看状态 ## 快速开始 1. 使用 **STM32CubeIDE** 或 **STM32CubeMX** 打开 `.ioc` 文件 2. 根据实际硬件修改 `User/Foc/foc_config.h` 中的电机参数 3. 编译并下载到 STM32F407 开发板 4. 通过串口(默认 115200 8N1)连接,使用 CLI 命令控制电机 ## CLI 命令示例 ``` speed Set target speed (e.g., speed 500) start Start motor stop Stop motor vq Set Vq voltage (e.g., vq 5.0) vd Set Vd voltage (e.g., vd 0) current Show phase currents (mA) raw Show raw ADC values (for debug) calib Calibrate current zero offset (motor must be stopped) duration Show ISR execution time stats durclr Clear ISR duration stats status Show motor status help Show this help ``` ## 开发环境 - STM32CubeMX 6.x - STM32CubeIDE 2.1.0 - HAL 库版本: STM32F4xx HAL v1.x ## 注意事项 - 本项目为学习和研究用途,初次上电请确保电机处于空载或轻载状态 - 务必根据实际电机和功率板参数修改 `foc_config.h` - 电流采样和 PWM 死区时间需与硬件电路匹配 ## 许可证 本项目遵循 MIT 许可证