2026-05-10 21:35:40 +08:00

248 lines
7.9 KiB
C

#include "tb6612.h"
#include "bsp_gpio.h"
#include "bsp_timer.h"
/*************************************************************************************
* @brief tb6612初始化
*
* @warning 【不可重入,阻塞等警告】
* @note 【重大修改】
*************************************************************************************/
void tb6612_init(void)
{
bsp_gpio_tb6612_init();
bsp_timer_tb6612_init();
}
/*************************************************************************************
* @brief 左边轮胎转
* @param[in/out] Speed【参数注释】
*
* @warning 【不可重入,阻塞等警告】
* @note 【重大修改】
*************************************************************************************/
static void tb6612_left_rotate(int16_t Speed)
{
if (Speed >0)
{
bsp_gpio_tb6612_AIN1_enable();
bsp_gpio_tb6612_AIN2_disable();
bsp_timer_tb6612_pwmA_change(Speed);
}
else if(Speed==0)
{
bsp_gpio_tb6612_AIN1_enable();
bsp_gpio_tb6612_AIN2_enable();
bsp_timer_tb6612_pwmA_change(Speed);
}
else
{
bsp_gpio_tb6612_AIN1_disable();
bsp_gpio_tb6612_AIN2_enable();
bsp_timer_tb6612_pwmA_change(-Speed);
}
}
/*************************************************************************************
* @brief 右边轮胎转
* @param[in/out] Speed【参数注释】
*
* @warning 【不可重入,阻塞等警告】
* @note 【重大修改】
*************************************************************************************/
static void tb6612_right_rotate(int16_t Speed)
{
if (Speed >0)
{
bsp_gpio_tb6612_BIN1_enable();
bsp_gpio_tb6612_BIN2_disable();
bsp_timer_tb6612_pwmB_change(Speed);
}
else if(Speed==0)
{
bsp_gpio_tb6612_BIN1_enable();
bsp_gpio_tb6612_BIN2_enable();
bsp_timer_tb6612_pwmB_change(Speed);
}
else
{
bsp_gpio_tb6612_BIN1_disable();
bsp_gpio_tb6612_BIN2_enable();
bsp_timer_tb6612_pwmB_change(-Speed);
}
}
/*************************************************************************************
* @brief tb6612 前进
* @param[in/out] Speed【参数注释】
*
* @warning 【不可重入,阻塞等警告】
* @note 【重大修改】
*************************************************************************************/
void tb6612_go_ahead(int16_t Speed)
{
tb6612_left_rotate(Speed);
tb6612_right_rotate(-Speed);
}
/*************************************************************************************
* @brief tb6612 后退
* @param[in/out] Speed【参数注释】
*
* @warning 【不可重入,阻塞等警告】
* @note 【重大修改】
*************************************************************************************/
void tb6612_go_back(int16_t Speed)
{
tb6612_left_rotate(-Speed);
tb6612_right_rotate(Speed);
}
/*************************************************************************************
* @brief tb6612 左转
* @param[in/out] Speed【参数注释】
*
* @warning 【不可重入,阻塞等警告】
* @note 【重大修改】
*************************************************************************************/
void tb6612_go_left(int16_t Speed)
{
tb6612_left_rotate(-Speed);
tb6612_right_rotate(0);
}
/*************************************************************************************
* @brief tb6612 右转
* @param[in/out] Speed【参数注释】
*
* @warning 【不可重入,阻塞等警告】
* @note 【重大修改】
*************************************************************************************/
void tb6612_go_right(int16_t Speed)
{
tb6612_left_rotate(0);
tb6612_right_rotate(Speed);
}
/*************************************************************************************
* @brief tb6612 自转
* @param[in/out] Speed【参数注释】
*
* @warning 【不可重入,阻塞等警告】
* @note 【重大修改】
*************************************************************************************/
void tb6612_go_self_rotate(int16_t Speed)
{
tb6612_left_rotate(Speed);
tb6612_right_rotate(Speed);
}
/*************************************************************************************
* @brief tb6612 停止
*
* @warning 【不可重入,阻塞等警告】
* @note 【重大修改】
*************************************************************************************/
void tb6612_stop(void)
{
tb6612_left_rotate(0);
tb6612_right_rotate(0);
}
/*************************************************************************************
* @brief tB6612 设置整体速度
* @param[in/out] Speed【参数注释】
*
* @warning 【不可重入,阻塞等警告】
* @note 【重大修改】
*************************************************************************************/
void tb6612_change_speed(uint16_t Speed)
{
bsp_timer_tb6612_pwmA_change(Speed);
bsp_timer_tb6612_pwmB_change(Speed);
}
// /*************************************************************************************
// * @brief AIN1 ON
// *
// * @warning 【不可重入,阻塞等警告】
// * @note 【重大修改】
// *************************************************************************************/
// void tb6612_AIN1_on(void)
// {
// bsp_gpio_tb6612_AIN1_enable();
// }
// /*************************************************************************************
// * @brief AIN1 OFF
// *
// * @warning 【不可重入,阻塞等警告】
// * @note 【重大修改】
// *************************************************************************************/
// void tb6612_AIN1_off(void)
// {
// bsp_gpio_tb6612_AIN1_disable();
// }
// /*************************************************************************************
// * @brief AIN2 ON
// *
// * @warning 【不可重入,阻塞等警告】
// * @note 【重大修改】
// *************************************************************************************/
// void tb6612_AIN2_on(void)
// {
// bsp_gpio_tb6612_AIN2_enable();
// }
// /*************************************************************************************
// * @brief AIN2 OFF
// *
// * @warning 【不可重入,阻塞等警告】
// * @note 【重大修改】
// *************************************************************************************/
// void tb6612_AIN2_off(void)
// {
// bsp_gpio_tb6612_AIN2_disable();
// }
// /*************************************************************************************
// * @brief BIN1 ON
// *
// * @warning 【不可重入,阻塞等警告】
// * @note 【重大修改】
// *************************************************************************************/
// void tb6612_BIN1_on(void)
// {
// bsp_gpio_tb6612_BIN1_enable();
// }
// /*************************************************************************************
// * @brief BIN1 OFF
// *
// * @warning 【不可重入,阻塞等警告】
// * @note 【重大修改】
// *************************************************************************************/
// void tb6612_BIN1_off(void)
// {
// bsp_gpio_tb6612_BIN1_disable();
// }
// /*************************************************************************************
// * @brief BIN2 ON
// *
// * @warning 【不可重入,阻塞等警告】
// * @note 【重大修改】
// *************************************************************************************/
// void tb6612_BIN2_on(void)
// {
// bsp_gpio_tb6612_BIN2_enable();
// }
// /*************************************************************************************
// * @brief BIN2 OFF
// *
// * @warning 【不可重入,阻塞等警告】
// * @note 【重大修改】
// *************************************************************************************/
// void tb6612_BIN2_off(void)
// {
// bsp_gpio_tb6612_BIN2_disable();
// }
// void tb6612_PWMA_adjust(uint16_t val)
// {
// TIM_SetCompare4(TIM_MOTOR, Compare);
// }