嵌入式机器人云台与底盘控制固件,支持多平台构建。
本项目为机器人系统提供完整的硬件驱动、控制算法和运行时模块,支持两个 MCU 平台:
| 目标平台 | 芯片 | 架构 | 主频 | 用途 |
|---|---|---|---|---|
| STM32 | STM32H743IIT6 | Cortex-M7 | 480 MHz | 主控:双轴云台 + 视觉跟踪 + 底盘驱动 |
| MSPM0 | MSPM0G3507 | Cortex-M0+ | 80 MHz | 辅控:电机驱动测试 |
文件: common/User/modules/gimbal/knx_gimbal_ctrl.*
云台控制器驱动 Yaw (JC4310, CAN ID=3) 和 Pitch (JC2804, CAN ID=1) 两轴 FOC 电机,实现视觉跟踪和位置保持。
采用 4 状态线性状态机:
BOOT ──(boot_delay_ms)──► ENTER_SERVO ──(mode_gap_ms)──► SPEED_MODE ──(mode_gap_ms)──► CONTROL
│
(稳态闭环控制)
| 状态 | 动作 | 默认延时 |
|---|---|---|
BOOT |
上电等待 | 500 ms |
ENTER_SERVO |
发送 JC_EnterServo() 到两轴电机 |
300 ms |
SPEED_MODE |
发送 JC_SwitchMode(JC_MODE_SPEED) |
300 ms |
CONTROL |
稳态闭环控制,10 ms 周期(100 Hz) | — |
系统使用 四组独立 PID 控制器,分两对互斥工作:
视觉跟踪 PID(像素误差驱动,视觉数据有效时使用):
| 轴 | Kp | Ki | Kd | 输出限幅 |
|---|---|---|---|---|
| Yaw | 0.25 | 0.02 | 0.01 | 20 RPM |
| Pitch | 0.10 | 0.005 | 0.01 | 20 RPM |
位置保持 PID(角度误差驱动,视觉数据超时时自动切换):
| 轴 | Kp | Ki | Kd | 输出限幅 |
|---|---|---|---|---|
| Yaw | 0.20 | 0.0 | 0.0 | 15 RPM |
| Pitch | 0.20 | 0.0 | 0.0 | 15 RPM |
两组 PID 互斥:跟踪激活时重置保持 PID,视觉超时时重置跟踪 PID。所有增益均可通过参数系统运行时调整(范围 [-100, 100])。
- 视觉跟踪模式: 误差信号 = 像素空间偏差(
-vision.err_x用于 yaw,+vision.err_y用于 pitch)→ PID → 符号校正 → 机械角度限位 →JC_SetSpeed() - 位置保持模式: 误差信号 = IMU 角度误差(目标角度 - 当前角度)→ PID → 输出限幅 →
JC_SetSpeed()。Pitch 目标角度限制在 ±60°。
当 IMU 角度超过限位阈值且指令方向继续超出时,指令清零并触发限位标志。限位激活时对应轴的 PID 积分器重置,防止积分饱和。
文件: common/User/modules/vision/knx_vision.*
接收上位机(如树莓派、Jetson 等)通过串口发送的目标检测结果。
- 消息 ID:
0x10 - 负载长度: 13 字节(1B msg_id + 4B err_x + 4B err_y + 4B conf)
- 字节序: 小端
typedef struct {
float err_x; // 目标中心水平像素偏差
float err_y; // 目标中心垂直像素偏差
float conf; // 检测置信度 [0.0, 1.0]
uint32_t timestamp_ms; // 接收时间戳
uint32_t rx_count; // 累计有效消息计数
uint8_t valid; // 首次收到有效消息后置 1
} knx_vision_target_t;上位机 ──(UART)──► knx_host_comm (解帧/CRC校验) ──► knx_vision_payload_callback
│
写入 s_target
│
knx_vision_snapshot() ──► 云台控制器
视觉目标被视为"新鲜"需同时满足:
valid == 1(至少收到过一条有效消息)conf >= 0.15(置信度超过最小阈值)age_ms <= 200 ms(数据未超时)
文件: common/User/modules/drive/knx_drive.*
差速驱动底盘控制,支持 5 种运行模式。
| 模式 | 说明 |
|---|---|
IDLE |
停机,输出清零 |
VELOCITY |
直接线速度 + 角速度指令 |
POSITION |
位置 PID 产生线速度参考,角速度强制为 0 |
ANGLE |
航向 PID 产生角速度参考,线速度强制为 0 |
POSITION_ANGLE |
位置 PID + 航向 PID 同时工作 |
目标位置 ──► [位置 PID] ──► 线速度参考 ──┐
├──► [斜坡限制] ──► [线速度 PID] ──► 左/右轮目标
目标航向 ──► [航向 PID] ──► 角速度参考 ──┘ [斜坡限制] ──► [角速度 PID] ──►
- 外环位置 PID: 位置误差 → 线速度参考 (m/s)
- 外环航向 PID: 航向误差(归一化到 [-π, π])→ 角速度参考 (rad/s)
- 斜坡限制: 线速度和角速度参考均通过
slope_following()进行加速度限幅 - 内环线速度 PID: 测量速度 vs 规划速度
- 内环角速度 PID: 测量角速度 vs 规划角速度
正运动学(里程计):
线速度 = 0.5 × (左轮速 + 右轮速)
角速度 = (右轮速 - 左轮速) / 轮距
航向增量 = (右轮增量 - 左轮增量) / 轮距
逆运动学(指令分配):
左轮目标 = (线速度指令 - 角速度指令 × 半轮距) × 左轮符号
右轮目标 = (线速度指令 + 角速度指令 × 半轮距) × 右轮符号
所有符号校正(反馈符号、指令符号)均可通过参数配置,适配不同电机安装方向。
在 VELOCITY 模式下,若 command_timeout_ms 内无新指令到达,底盘自动停车。
文件: common/User/modules/motor/knx_motor.*
统一电机抽象层,封装 DRV8701E H 桥驱动器 + 正交编码器,支持左右双电机。
| 模式 | 说明 |
|---|---|
SPEED |
速度闭环,编码器反馈,1 ms 电流环 |
TORQUE |
力矩目标 → 电流转换 → 电流闭环 |
CURRENT_TEST |
直接电流控制(调试用) |
DUTY |
直接 PWM 占空比(-1.0 ~ 1.0),开环 |
力矩-电流转换:电流 = 力矩 / (力矩常数 × 减速比 × 效率)
knx_motor_update() 以 1 ms 周期调用(电流环),每次执行:
- 读取目标值(临界区保护)
- ADC 电流采样
- 编码器速度计算
- 按模式分发控制
- 同步状态
文件: common/User/modules/track_nn/track_tinycnn.*
使用轻量级 1D-CNN 对灰度传感器采集的赛道图像进行路口类型分类,实现在嵌入式端的实时推理。
灰度传感器 (8通道) ──► 等距采样 64 行 ──► 64×8 灰度矩阵 ──► TinyCNN 推理 ──► 路口分类结果
│
底盘前进 20cm (位置PID + IMU航向保持) ◄────────────────────────────────┘
- 标定阶段: 按 KEY0 采样黑/白基准面,计算各通道的归一化参数
- 采集阶段: 按 KEY1 触发,底盘以位置 PID 前进 20cm,同时 IMU 航向保持,等距采集 64 行 × 8 列灰度数据
- 推理阶段: 对 64×8 矩阵运行 TinyCNN 推理,输出路口分类
- 输出阶段: 按 KEY0 通过 OctoLink 发送矩阵和推理结果
输入: 64 行 × 8 列 uint8 灰度值(0=白底, 255=黑线),归一化到 [0, 1],转置为 [8通道][64长度] 的 1D 信号。
| 层 | 类型 | 输入通道 | 输出通道 | 卷积核 | 填充 | 步长 | 激活 | 输出形状 |
|---|---|---|---|---|---|---|---|---|
| Conv1 | Conv1D | 8 | 8 | 5 | 2 | 1 | ReLU | [8][64] |
| Conv2 | Conv1D | 8 | 8 | 5 | 2 | 1 | ReLU | [8][64] |
| GAP | 全局平均池化 | 8 | 8 | — | — | — | — | [8] |
| FC | 全连接 | 8 | 2 | — | — | — | Softmax | [2] |
typedef struct {
uint8_t pred_class; // 预测类别
float confidence; // 置信度
float logits[2]; // 原始输出
float probs[2]; // Softmax 概率
} track_tinycnn_result_t;使用 ping-pong 双缓冲(buf_a[8][64] / buf_b[8][64])避免栈分配,嵌入式友好。权重由 Python 训练工具链(track_sample/)导出为 C 数组(track_tinycnn_weights.c)。
track_sample/ 目录包含完整的 PyTorch 训练流水线:
- 数据采集: 通过 OctoLink 从嵌入式端获取灰度矩阵
- 标注: 路口类型分类(正常/左转/右转/直行/十字/丢失)
- 训练: 1D-CNN 模型训练
- 导出: 自动生成 C 权重文件和推理代码
项目支持两套 IMU 方案和多种姿态估计算法。
文件: common/User/drv/bmi088/bmi088.*
- 接口: SPI1(SCK=PA5, MOSI=PD7, MISO=PG9)
- 加速度计: 800 Hz ODR, 6g 量程
- 陀螺仪: 2000 dps, 230 Hz 带宽
- 校准: 3000 次采样/次,最多 5 次重试;陀螺仪偏移 < 0.01 rad/s,加速度计重力偏差 < 0.5 m/s²
- 加热器温控: PI 控制器驱动 PWM 加热通道,目标温度 40°C,最大占空比 30%
- 零值检测: 连续 5 帧全零自动触发重新初始化
文件: common/User/drv/dm_imu_l1/dm_imu_l1.*
- 接口: FDCAN, 默认 ID=0x11
- 数据类型: 加速度、陀螺仪、欧拉角、四元数
- 上报速率: 100/125/200/250/500/1000 Hz 可配
- 欧拉角累积: 自动检测 ±180°/±90° 跨越,维护连续角度
yaw_total/roll_total/pitch_total
四元数 EKF (common/User/algorithm/QuaternionEKF/):
- 状态维度: 6(四元数 q0-q3 + 陀螺仪偏置 bias_x, bias_y)
- 观测维度: 3(归一化加速度计,重力方向参考)
- 特性: 卡方检验自适应增益、陀螺仪偏置衰减因子(λ=0.9996)、偏置校正限幅
- Yaw 轴偏置显式置零(加速度计不可观测)
Mahony AHRS (common/User/algorithm/MahonyAHRS/):
- 互补滤波器,PI 反馈
- 支持 6 轴(IMU)和 9 轴(含磁力计)模式
- 快速逆平方根(Quake III 算法)
- 用于 EKF 参考对比
文件: common/User/modules/safety/knx_safety.*
更新频率: 1 ms,优先级: osPriorityHigh(所有任务中最高)。
| 等级 | 含义 |
|---|---|
OK |
无故障无警告 |
WARN |
存在警告,无故障 |
FAULT |
至少一个故障激活 |
| 故障 | 说明 |
|---|---|
OVERCURRENT |
电机电流超限 |
IMU_FAIL |
IMU 数据超时或缺失 |
ENCODER_FAIL |
编码器故障 |
WATCHDOG |
电机驱动看门狗 |
TILT |
倾斜角超限(yaw>95° 或 pitch>50°) |
OVERSPEED |
速度超限(指令 > 80 RPM) |
| 警告 | 说明 |
|---|---|
STARTUP |
启动宽限期内 |
VISION_STALE |
视觉数据缺失或超时(> 500 ms) |
DISABLED |
安全检查已禁用 |
- IMU 检查: 数据龄期 > 100 ms → 启动期内警告,否则故障
- 视觉检查: 数据龄期 > 500 ms → 警告
- 倾斜检查: |yaw| > 95° 或 |pitch| > 50° → 故障
- 超速检查: |指令 RPM| > 80 → 故障
- 看门狗: 进入伺服后电机状态异常 → 故障
文件: common/User/modules/host_comm/knx_host_comm.*
[SOF: 0xA5 0x5A] [LEN: 2B LE] [PAYLOAD: 0~256B] [CRC16: 2B LE] [EOF: 0x0D 0x0A]
| 字段 | 长度 | 值 |
|---|---|---|
| SOF | 2 字节 | 0xA5 0x5A |
| Length | 2 字节(小端) | 负载长度 0-256 |
| Payload | 0-256 字节 | 应用数据 |
| CRC | 2 字节(小端) | CRC-16/CCITT-FALSE (poly=0x1021, init=0xFFFF) |
| EOF | 2 字节 | 0x0D 0x0A |
最大帧长: 264 字节。
9 状态字节解析器:WAIT_SOF0 → WAIT_SOF1 → LEN0 → LEN1 → PAYLOAD → CRC0 → CRC1 → EOF0 → EOF1
CRC 校验通过后分发至回调(1 个主回调 + 最多 4 个附加回调)。
文件: common/User/modules/param/knx_param.*, knx_param_host.*
- 支持类型:
F32,U32,I32,U8 - 参数表: 最多 12 张表,每表可注册多个参数
- 查找方式: 按 ID(uint16)、按名称(字符串)
- 写入: 自动钳位到 [min, max],只读参数拒绝写入
- 重置: 单参数或全部恢复默认值
| 方向 | 消息 ID | 名称 | 负载 |
|---|---|---|---|
| 请求 | 0x30 |
GET_REQ | [id_lo, id_hi] |
| 请求 | 0x31 |
SET_REQ | [id, type, value(4B)] |
| 请求 | 0x32 |
RESET_REQ | [id_lo, id_hi] |
| 请求 | 0x33 |
INFO_REQ | [id_lo, id_hi] |
| 响应 | 0xB0 |
VALUE_RSP | [request_msg, status, id, type, flags, value(4B)] |
| 响应 | 0xB1 |
INFO_RSP | [status, index, id, type, flags, default, min, max, name...] |
| 响应 | 0xB2 |
ACK_RSP | [request_msg, status, id, param_count] |
监控 8 个子系统: SYS, SAFETY, VISION, DM_IMU_L1, GIMBAL, JC, HOST_COMM, PARAM_HOST
健康状态优先级: FAULT > STALE > WARN > UNKNOWN > DISABLED > OK
状态变化自动记录到黑盒日志。
- 容量: 32 条事件的环形缓冲
- 事件类型: BOOT, HEALTH_CHANGE, CAN_UNMATCHED, SAFETY_CLEAR
- 每条记录: 时间戳 + 代码 + 来源 + 状态 + 参数
- 最多 8 条路由规则,每条覆盖连续 CAN ID 范围
- 首匹配优先分发
- 未匹配帧记录到黑盒
通过 OctoLink 以 F32 格式输出调试变量,20 ms 更新周期。通道映射:
| 通道 | 内容 |
|---|---|
| 1-4 | 电机电流(左右目标/实际) |
| 10-19 | 底盘状态(轮速、线/角速度、模式、规划值) |
| 20-25 | IMU 姿态 + BMI088 温控 |
| 30-39 | 系统状态 + 底盘 PID 各级输出 |
目录: common/User/algorithm/
| 算法 | 文件 | 说明 |
|---|---|---|
| PID | PID/ |
位置式 PID,支持 8 种改进:积分限幅、微分先行、梯形积分、输出滤波、变积分率、微分滤波、堵转检测 |
| Kalman 滤波 | kalman_filter/ |
通用可配置维度,CMSIS-DSP 矩阵运算,支持自动 H/K/R 调整 |
| 四元数 EKF | QuaternionEKF/ |
6 维状态(四元数+偏置),卡方检验,自适应增益 |
| Mahony AHRS | MahonyAHRS/ |
互补滤波器,PI 反馈,支持 6/9 轴 |
| CRC | crc/ |
CRC-16 校验 |
| 斜坡 | ramp/ |
斜坡限制器 |
| 32 位滤波 | filter32/ |
通用滤波器 |
目录: common/User/drv/
| 驱动 | 说明 |
|---|---|
| BMI088 | 6 轴 IMU (SPI),含自动校准(3000 采样×5 重试)和加热器 PI 温控(目标 40°C) |
| DM-IMU-L1 | CAN 总线 IMU,支持加速度/陀螺仪/欧拉角/四元数,100-1000 Hz 可配上报率 |
| JC4310/JC2804 | FOC 电机 CAN 驱动(协议 v3.0),支持力矩/速度/位置/PV/PVT 模式,25 种错误码 |
| DRV8701E | H 桥电机驱动 (PWM + 方向),支持速度/电流/占空比控制 |
| 编码器 | 正交编码器读取,速度计算 |
| 灰度传感器 | 8 通道循迹传感器 |
| OctoLink | 调试变量实时输出 |
| VOFA+ | 调试波形协议 |
| LED/按键/蜂鸣器 | GPIO 外设 |
- CAN 寻址: TX=
0x600+id, RX=0x580+id,DLC=8 - 寄存器读写: 16/32 位,大端序
- 控制模式: 力矩(0)、速度(1)、梯形位置(2)、滤波位置(3)、直接位置(4)、低速高力矩(5)
- 定点缩放: 所有物理量 ×100 传输
- 超时: 默认 20 ms,可配置
STM32 平台运行 6 个任务:
| 任务 | 优先级 | 周期 | 栈大小 | 功能 |
|---|---|---|---|---|
knx_safety |
High | 1 ms | 1024 B | 安全监控(最高优先级) |
knx_comm |
AboveNormal | 1 ms | 2048 B | 串口数据接收 → 视觉模块 |
knx_ctrl |
AboveNormal | 1 ms | 4096 B | 控制循环(云台/底盘/电机) |
knx_app |
Normal | 1 ms | 4096 B | 应用初始化 + 系统更新 (5ms) |
knx_ui |
BelowNormal | 1 ms | 2048 B | 按键(10ms)、灰度(20ms)、LED(500ms/100ms) |
knx_telemetry |
Low | 50 ms | 3072 B | OctoLink 遥测输出 (20 Hz) |
时间轴 (1ms tick):
Safety: ████████████████████████████████ (每 1ms)
Comm: ████████████████████████████████ (每 1ms)
Ctrl: ████████████████████████████████ (每 1ms, IMU 每 2ms)
App: ████░░░░████░░░░████░░░░████░░░░ (sys_update 每 5ms)
UI: █░░░░░░░░█░░░░░░░░█░░░░░░░░█░░░ (蜂鸣器 1ms, 按键 10ms, 灰度 20ms)
Tele: ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█ (每 50ms)
通过 knx_debug_config.h 编译时选择,共 12 种:
| ID | 名称 | 功能 |
|---|---|---|
| 0 | NONE |
正常应用运行 |
| 1 | DRV8701E |
电流环阶梯波测试(PI 控制,4 段波形) |
| 2 | BMI088 |
BMI088 IMU 通信验证 |
| 3 | ENCODER |
编码器速度/位置测试 |
| 4 | DRIVE_CALIB |
底盘 12 步自动标定(极性/速度/位置/航向/电流) |
| 5 | BMI088_IMU_EST |
IMU 姿态估计对比(EKF vs Mahony) |
| 6 | GRAYSCALE_SAMPLE |
灰度采集 + CNN 路口判断(标定→采集→推理) |
| 7 | JC2804 |
JC2804 伺服电机协议测试 |
| 8 | DM_IMU_L1 |
DM-IMU-L1 CAN 通信测试 |
| 9 | MINI_GIMBAL |
小型云台测试(双 JC2804 + DM-IMU-L1) |
| 10 | JC_DRIVER |
JC 多电机顺序测试(JC2804 + JC4310) |
| 11 | STANDARD_GIMBAL |
标准云台测试(JC2804 pitch + JC4310 yaw,含角度限位) |
| 12 | COLOR_TRACK |
彩色跟踪云台(完整视觉→云台跟踪链路) |
项目采用三层架构:
┌──────────────────────────────────────────────────────────────┐
│ Application Layer │
│ knx_app · test_mode · FreeRTOS tasks (6 个任务) │
├──────────────────────────────────────────────────────────────┤
│ Module Layer │
│ gimbal · motor · drive · vision · safety │
│ track_nn · telemetry · host_comm · param · health │
│ can_router · blackbox │
├──────────────────────────────────────────────────────────────┤
│ Platform Abstraction Layer │
│ knx_pwm · knx_can · knx_spi · knx_uart │
│ knx_encoder · knx_gpio · knx_adc · knx_port · knx_time │
└──────────────┬──────────────────────────┬────────────────────┘
│ │
┌───────┴───────┐ ┌───────┴───────┐
│ STM32H743 │ │ MSPM0 │
│ 实现 (HAL) │ │ 实现 (DL) │
└───────────────┘ └───────────────┘
- 平台抽象层 —
common/User/platform/include/定义统一接口(ADC/CAN/SPI/UART/PWM/Encoder/GPIO/Time/Port),各平台在User/platform/下提供具体实现 - 模块层 —
common/User/modules/包含所有业务逻辑,通过平台抽象层访问硬件,与具体 MCU 无关 - 应用层 —
common/User/app/负责模块初始化链和 FreeRTOS 任务调度 - 算法库 —
common/User/algorithm/提供 PID、Kalman、EKF、AHRS 等标准控制/信号处理算法 - 硬件驱动 —
common/User/drv/封装具体传感器和执行器的通信协议
knexus_driver_module/
├── CMakeLists.txt # 顶层 CMake,选择构建目标
├── CMakePresets.json # 构建预设:stm32-debug / mspm0-debug
├── common/ # 跨平台共享代码
│ └── User/
│ ├── algorithm/ # 算法:PID、Kalman、EKF、AHRS、CRC、Ramp、Filter
│ ├── app/ # 应用主逻辑 + 12 种测试模式
│ ├── config/ # 项目/目标/调试配置头文件
│ ├── drv/ # 硬件驱动(BMI088、DM-IMU、JC、DRV8701E 等)
│ ├── modules/ # 运行时模块(云台/底盘/视觉/安全/NN 等)
│ ├── platform/include/ # 平台抽象层接口定义
│ └── util/ # 工具库(数学、环形缓冲、滤波器)
├── stm32/ # STM32H743 平台代码
│ └── knexus_st/
│ ├── Core/ # CubeMX 生成的 HAL 初始化
│ ├── Drivers/ # STM32H7xx HAL + CMSIS
│ ├── Middlewares/ # FreeRTOS (ARM_CM4F) + CMSIS-DSP
│ └── User/
│ ├── board/knexus_stm32h743/ # 板级引脚/时钟配置
│ ├── platform/stm32h743/ # 平台 HAL 实现
│ └── tasks/ # 6 个 FreeRTOS 任务定义
├── mspm0/ # TI MSPM0 平台代码
│ └── knexus_mspm0/
│ ├── Middlewares/ # FreeRTOS (ARM_CM0)
│ └── User/
│ ├── board/knexus_mspm0/ # 板级配置
│ ├── platform/mspm0/ # 平台 DL 实现
│ └── tasks/ # 任务定义
├── track_sample/ # 灰度 CNN 训练工具链 (Python/PyTorch)
└── docs/ # 运行时文档
├── common_param.md # 参数注册表 API 与云台参数 ID
├── common_runtime.md # CAN 路由、环形缓冲、健康模块、OctoLink 变量
├── gimbal_runtime.md # 云台运行时:硬件、任务、控制流、安全系统
└── octolink-mcp-skill.md # OctoLink MCP 集成参考
| 工具 | 版本 | 说明 |
|---|---|---|
| arm-none-eabi-gcc | — | ARM 交叉编译器 |
| CMake | 4.2+ | STM32Cube 附带 |
| Ninja | — | 构建系统 |
| OpenOCD | 0.12.0 | 烧录/调试 |
# STM32 目标
cmake --preset stm32-debug
cmake --build build/stm32-debug
# MSPM0 目标
cmake --preset mspm0-debug
cmake --build build/mspm0-debug或手动指定:
cmake -B build -DKNEXUS_TARGET=stm32 -G Ninja -DCMAKE_BUILD_TYPE=Debug
cmake --build build# STM32 (SWD 无线调试器)
openocd -f interface/rm_dap_wireless.cfg -f target/stm32h7x.cfg \
-c "program build/stm32-debug/knexus_st.elf verify reset exit"
# MSPM0 (DAPLink 无线调试器)
openocd -f interface/daplink_wireless_mspm0.cfg -f target/mspm0.cfg \
-c "program build/mspm0-debug/knexus_mspm0.elf verify reset exit"项目包含完整的 launch 配置,F5 即可启动调试。
项目集成了 OctoLink MCP 调试接口,可通过 Claude Code 进行:
- 实时变量监控(遥测流,36+ 通道)
- GDB 断点与单步调试
- 故障上下文捕获
- PID 参数在线调优
- 黑盒日志查看
编辑 knx_project_config.h 启用/禁用功能模块:
#define KNX_MOTOR_MODULE_ENABLE 1
#define KNX_IMU_MODULE_ENABLE 1
#define KNX_GIMBAL_MODULE_ENABLE 1
#define KNX_VISION_MODULE_ENABLE 1
#define KNX_SAFETY_MODULE_ENABLE 1
#define KNX_DRIVE_MODULE_ENABLE 1
#define KNX_TELEMETRY_MODULE_ENABLE 1编辑 knx_debug_config.h 切换测试模式(12 种,见上表)。
- STM32: knx_board_config.h(480 MHz SYSCLK, TIM2 PWM, TIM1/LPTIM1 编码器, FDCAN, ADC)
- MSPM0: knx_board_config.h(80 MHz)
Private — 仅供项目内部使用。