- 硬件准备
STM32核心板,MT6701磁编码器带线(M创动工坊提供),ST-link,USB线等
- 软件准备
- 安装微软的Vscode,网上很多教程,且有说明书
- 打开vscode并安装PlatformIO插件。其他的一些中文插件、AI插件等等,根据需要安装
- 打开插件,新建工程
- 重要的设置
- Ini文件设置,这是关键
lib_deps =
askuric/Simple FOC@ 2.3.4
board_build.mcu = stm32f103c6t6
board_upload.maximum_size = 32768
upload_protocol = stlink
debug_tool = stlink
build_flags = -Os
写好后,记得点保存,就开始自动下载库,右下角
设置到这里就结束了。
- 接线
根据程序定义,接线
编码器与STM32接线:
- 编码器的OUT接STM32板子的B0
- 编码器的VCC接3V3
- 编码器的GND接GND
- PUSH不接
STM32与ST-Link接线
按STM32和ST-link的丝印接即可
STM32与USB转串口模块接线
这里使用串口2,详见程序内定义。
USB供电,microUSB接口。
到此,线已接完。
- 编程
- 开始编程
打开默认是这样的
- 按arduino格式,写入以下代码,代码就不做注释了,可以直接复制粘贴到AI,如DEEPSEEK上,让它帮忙逐行解析。
#include <Arduino.h>
#include <HardwareSerial.h>
#include <SimpleFOC.h>
// 确保使用支持中断的引脚(如 PA0, PA1, PB0, PB1 等)
MagneticSensorPWM sensor = MagneticSensorPWM(PB0, 4, 1024); // 替换 PB0 为实际连接引脚
void doPWM() { sensor.handlePWM(); }
void setup() {
Serial2.begin(115200); // 默认使用 PA2(TX)/PA3(RX)
// 初始化磁传感器
sensor.init();
// 关键修改:配置引脚模式并附加中断
pinMode(PB0, INPUT_PULLUP); // 显式配置上拉输入
sensor.enableInterrupt(doPWM); // 附加中断处理函数
Serial2.println("Sensor ready");
delay(1000);
}
void loop() {
sensor.update();
Serial2.print(sensor.getAngle());
Serial2.print("\t");
Serial2.println(sensor.getVelocity());
delay(1); // 短暂延迟确保稳定性
}
- 实现
- 编译烧录
- 插上USB,开始烧录
确定驱动安装正确,设备管理器中,可以看到这两个。
- 烧录成功
- 打开串口监视
到此,测试结束!本文档主要针对M创动工坊淘宝店提供硬件,mcdgf.taobao.com
STM32读取AS5600,STM32读取MT6701的ABZ,STM32读取MT6701的PWM,三篇