248 lines
7.9 KiB
C
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);
|
||
|
|
// }
|