声明:为节省时间,本文章内容采用AI辅助生成,已根据实际情况进行修改,错误之处敬请指正!
大家好!在学习完江科大的STM32教程之后,最近正在规划基于STM32F103C8T6最小系统板的智能小车项目,旨在充分利用硬件资源的情况下,将所学付诸实践,加强对相关知识的理解。现结合项目的功能需求,进行引脚分配,之后将按照此方案完成智能小车的项目。
先明确项目核心功能需求:
1)双TT马达驱动(TB6612FNG模块,PWM调速)
2)双对射式红外传感器测速(PWM输入捕获实现)
3)双TCRT5000模块(循迹+防掉落,兼顾数字/模拟输出)
4)蓝牙模块远程遥控(USART串口)
5)2.4G模块远程遥控(备用/切换控制,采用SPI)
6)0.96寸OLED实时显示(软件I2C模拟,不占硬件资源)
7)HC-SR04超声波避障(输入捕获)
8)SG90舵机控制超声波方向(PWM)
9)MPU6050姿态检测(I2C,用于PID调速)
一、核心资源评估
定时器:4个(TIM1~TIM4),足够支撑3路PWM(电机2路+舵机1路)+3路输入捕获(测速2路+超声波1路);
通信接口:硬件串口×2、硬件SPI×2、硬件I2C×1,分别对应蓝牙、2.4G、MPU6050,OLED用软件I2C不占用硬件;
IO资源:ADC×10路(满足防掉落模拟采集),通用GPIO充足,完全可以覆盖所有模块的控制需求;
冲突规避:优先分配定时器复用功能,再分配普通GPIO,全程避开板载LED、下载接口,无任何引脚冲突。
二、分模块引脚分配表
功能模块 | 硬件引脚 | STM32芯片引脚 | 功能定义 | 备注 |
|---|---|---|---|---|
TB6612FNG电机驱动 | AIN1 | PB14 | [GPIO] 左电机方向1 | STBY引脚复用板载LED(PC13),可直观查看模块工作状态;方向引脚高低电平控制电机正反转 |
AIN2 | PB15 | [GPIO] 左电机方向2 | ||
BIN1 | PC14 | [GPIO] 右电机方向1 | ||
BIN2 | PC15 | [GPIO] 右电机方向2 | ||
PWMA | PA6 | [TIM3_CH1] 左电机PWM调速 | ||
PWMB | PB0 | [TIM3_CH3] 右电机PWM调速 | ||
对射式红外测速 | 左测速传感器 | PA0 | [TIM2_CH1] 输入捕获 | 双边沿捕获,精准计算车轮脉冲数,进而得到转速 |
右测速传感器 | PA1 | [TIM2_CH2] 输入捕获 | ||
TCRT5000(循迹+防掉) | 左循迹DO | PB10 | [GPIO] 数字输入 | 数字输出,检测黑白线(高电平/低电平对应不同颜色,可自行调试) |
右循迹DO | PB11 | [GPIO] 数字输入 | ||
左防掉AO | PA4 | [ADC1_IN4] 模拟输入 | 模拟输出,采集电压值判断距离,实现防掉落(电压越低,距离越远) | |
右防掉AO | PA5 | [ADC1_IN5] 模拟输入 | ||
蓝牙模块(HC-05/06) | TX | PA10 | [USART1_RX] 串口接收 | 3.3V电平,直接与STM32连接,无需电平转换;下载程序时建议断开蓝牙,避免干扰 |
RX | PA9 | [USART1_TX] 串口发送 | ||
2.4G模块(NRF24L01) | CSN | PB12 | [GPIO] 片选控制 | 初始引脚与电机驱动冲突,已调整为PB4/PB5,避开冲突;采用硬件SPI,通信更稳定 |
SCK | PB13 | [SPI2_SCK] 时钟引脚 | ||
MISO | PB5 | [SPI2_MISO] 数据输入 | ||
MOSI | PB4 | [SPI2_MOSI] 数据输出 | ||
CE | PB3 | [GPIO] 模式控制 | ||
0.96寸OLED(软件I2C) | SCL | PB8 | [GPIO] 模拟时钟 | 软件模拟I2C,不占用硬件I2C资源,可灵活调整引脚(只要是普通GPIO即可) |
SDA | PB9 | [GPIO] 模拟数据 | ||
HC-SR04超声波 | Trig | PA7 | [GPIO] 触发输出 | Trig发送10us高电平触发,Echo通过输入捕获测高电平时间,计算距离 |
Echo | PB1 | [TIM3_CH3] 输入捕获 | ||
SG90舵机 | PWM | PA8 | [TIM1_CH1] 舵机PWM控制 | 50Hz PWM(20ms周期),占空比0.5~2.5ms对应0°~180°旋转 |
MPU6050姿态传感器 | SCL | PB6 | [I2C1_SCL] 硬件时钟 | 采用硬件I2C,通信稳定,不占用CPU资源,为后续PID调速提供姿态数据 |
SDA | PB7 | [I2C1_SDA] 硬件数据 |
三、核心定时器配置
1. TIM2(车轮测速专用)
工作模式:输入捕获(建议双边沿捕获,精准计数脉冲)
分频系数:72-1(计数频率1MHz)
自动重装载值:65535(最大计数范围,避免溢出)
用途:捕获测速传感器的脉冲信号,计算车轮转速(转速=脉冲数/时间)
2. TIM3(电机PWM + 超声波回声)
CH1/CH2:PWM输出模式,频率10kHz,占空比0~100%(电机调速,占空比越大,转速越快)
CH3:输入捕获模式,用于检测HC-SR04的Echo引脚高电平时间,换算距离(距离=时间×340m/s÷2)
3. TIM1(SG90舵机专用)
工作模式:PWM输出模式,频率50Hz(舵机标准频率,20ms周期)
占空比范围:2.5%~12.5%(对应0.5ms~2.5ms高电平,控制舵机0°~180°旋转)
四、注意事项
1. 电平兼容问题
所有模块(蓝牙、2.4G、OLED、MPU6050、TB6612)均为3.3V电平,可直接与STM32连接,无需额外电平转换;HC-SR04、TCRT5000支持3.3V/5V兼容。因此统一用3.3V供电,避免电平冲突烧模块。
2. 电源供电问题
外接电源搭配降压模块(转5V/3.3V)给电机、舵机、超声波供电;STM32最小系统板单独供电,所有模块共地即可。
3. 功能优先级
测速、电机PWM、舵机控制依赖定时器硬件,严禁随意修改这些引脚;普通GPIO(循迹DO、超声波Trig、2.4G控制引脚等)可根据实际布线灵活调整,不影响核心功能。
五、剩余可用引脚(后期扩展备用)
规划后仍有多个空闲引脚,方便后期扩展功能,比如加按键(模式切换)、LED指示灯(工作状态)、额外传感器等,空闲引脚如下:
PA2、PA3、PB2、PC0~PC3
六、总结
本方案完全适配STM32F103C8T6最小系统板,所有功能无资源冲突,引脚分配合理,兼顾稳定性和易用性.
之后将逐步开展该项目,包括但不限于硬件采购、调试、代码编写,后续会继续分享电机驱动、测速、PID调速等相关代码,有同款项目的小伙伴可以一起交流探讨,有问题欢迎在评论区留言,一起避坑,快速完成项目!🚗