STM32F103C8T6实现电机正反转

实验材料:
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:  // 前进
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值