实验材料:
STM32F103C8T5,TB6612FNG驱动芯片,GB37-520电机
一,TB6612FNG驱动芯片介绍
电路图

二.STM32CubeIDE新建项目
1.选择你的开发版,这里选用的是STM32F103C8T6

2.填好项目名称,点击完成

3.进行系统调试及基准时钟配置。点击 System Core下拉栏中的 SYS。选择debug调试接口。我选择 serial Wire



4.TIM2配置

这里使用Tim2的通道3和通道4,因为的我扩展版上的PWMA和PWMB接的是PA2和PA3.


另外,给PA2和PA3两个引脚取个别名

,再配置一下控制电机正反转的四个引脚AIN1,AIN2,BIN1,BIN2,引脚模式设置成GPIO_OUTPUT,定义如下图

记得勾选上,生成头文件,生成代码:

二.编写控制代码
1.先在src目录下加上motor目录,

motor.c代码:
#include "motor.h"
// PWM取值范围定义
#define MIN_PWM 0 // 0%占空比
#define MAX_PWM 999 // 100%占空比
// 添加定时器句柄声明(如果未在头文件中声明)
extern TIM_HandleTypeDef htim2;
/**
* @brief 电机方向控制
*/
void Motor_Init(void) {
// 初始化方向控制引脚为安全状态(停止)
HAL_GPIO_WritePin(AIN1_GPIO_Port, AIN1_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(AIN2_GPIO_Port, AIN2_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(BIN1_GPIO_Port, BIN1_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(BIN2_GPIO_Port, BIN2_Pin, GPIO_PIN_RESET);
// 启动新的PWM通道 (TIM2)
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); // 右电机PWMA (PA2)
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); // 左电机PWMB (PA3)
}
/**
* @brief 完整电机控制函数
*/
void Motor_Control(uint16_t direction, uint16_t leftSpeed, uint16_t rightSpeed) {
// 限制速度在合法范围内
leftSpeed = (leftSpeed > MAX_PWM) ? MAX_PWM : leftSpeed;
rightSpeed = (rightSpeed > MAX_PWM) ? MAX_PWM : rightSpeed;
switch (direction) {
case 1: // 前进

最低0.47元/天 解锁文章
5270

被折叠的 条评论
为什么被折叠?



