標(biāo)題:
STM32單片機+TB6612模塊智能小車程序原理圖
[打印本頁]
作者:
114742221
時間:
2023-9-17 15:06
標(biāo)題:
STM32單片機+TB6612模塊智能小車程序原理圖
智能小車stm32
1.png
(107.71 KB, 下載次數(shù): 60)
下載附件
2023-9-17 15:12 上傳
#include "stm32f10x.h"
#include "bsp_tb6612.h"
#include "bsp_motor.h"
#include "bsp_usart.h"
#include "car_ctrl.h"
int main(void)
{
TB6612_FR_Init(); //TB6612模塊1和模塊2一起驅(qū)動
MotorAllOFF(); //單片機上電默認(rèn)先把4個電機關(guān)閉
USART3_Config(); //初始化藍牙模塊的串口
while(1)
{
RUN_Prg(); //小車藍牙控制功能
}
}
復(fù)制代碼
#include "bsp_tb6612.h"
/*TB6612模塊1,驅(qū)動前輪 F*/
void TB6612_F_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(TB6612_F_GPIO_AIN1_CLK | TB6612_F_GPIO_AIN2_CLK | \
TB6612_F_GPIO_BIN1_CLK | TB6612_F_GPIO_BIN2_CLK , ENABLE);
GPIO_InitStructure.GPIO_Pin = TB6612_F_GPIO_AIN1_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TB6612_F_GPIO_AIN1_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = TB6612_F_GPIO_AIN2_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TB6612_F_GPIO_AIN2_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = TB6612_F_GPIO_BIN1_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TB6612_F_GPIO_BIN1_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = TB6612_F_GPIO_BIN2_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TB6612_F_GPIO_BIN2_PORT, &GPIO_InitStructure);
}
void TB6612_F_PWM_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(TB6612_F_GPIO_PWMA_CH1_CLK, ENABLE);
GPIO_InitStructure.GPIO_Pin = TB6612_F_GPIO_PWMA_CH1_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TB6612_F_GPIO_PWMA_CH1_PORT,&GPIO_InitStructure);
RCC_APB2PeriphClockCmd(TB6612_F_GPIO_PWMB_CH2_CLK, ENABLE);
GPIO_InitStructure.GPIO_Pin = TB6612_F_GPIO_PWMB_CH2_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TB6612_F_GPIO_PWMB_CH2_PORT,&GPIO_InitStructure);
}
/*TB6612模塊2,驅(qū)動后輪 R*/
void TB6612_R_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(TB6612_R_GPIO_AIN1_CLK | TB6612_R_GPIO_AIN2_CLK | \
TB6612_R_GPIO_BIN1_CLK | TB6612_R_GPIO_BIN2_CLK , ENABLE);
GPIO_InitStructure.GPIO_Pin = TB6612_R_GPIO_AIN1_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TB6612_R_GPIO_AIN1_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = TB6612_R_GPIO_AIN2_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TB6612_R_GPIO_AIN2_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = TB6612_R_GPIO_BIN1_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TB6612_R_GPIO_BIN1_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = TB6612_R_GPIO_BIN2_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TB6612_R_GPIO_BIN2_PORT, &GPIO_InitStructure);
}
void TB6612_R_PWM_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(TB6612_R_GPIO_PWMA_CH3_CLK, ENABLE);
GPIO_InitStructure.GPIO_Pin = TB6612_R_GPIO_PWMA_CH3_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TB6612_R_GPIO_PWMA_CH3_PORT,&GPIO_InitStructure);
RCC_APB2PeriphClockCmd(TB6612_R_GPIO_PWMB_CH4_CLK, ENABLE);
GPIO_InitStructure.GPIO_Pin = TB6612_R_GPIO_PWMB_CH4_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TB6612_R_GPIO_PWMB_CH4_PORT,&GPIO_InitStructure);
}
static void ADVANCE_TIM1_Mode_Config(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB2PeriphClockCmd(ADVANCE_TIM_CLK , ENABLE);
TIM_TimeBaseInitStructure.TIM_Prescaler = (72-1);
TIM_TimeBaseInitStructure.TIM_Period = (100-1);
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(ADVANCE_TIM, &TIM_TimeBaseInitStructure);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
TIM_OCInitStructure.TIM_Pulse = 0;
TIM_OC1Init(ADVANCE_TIM, &TIM_OCInitStructure);
TIM_OC1PreloadConfig(ADVANCE_TIM,TIM_OCPreload_Enable);
TIM_OCInitStructure.TIM_Pulse = 0;
TIM_OC2Init(ADVANCE_TIM, &TIM_OCInitStructure);
TIM_OC2PreloadConfig(ADVANCE_TIM,TIM_OCPreload_Enable);
TIM_OCInitStructure.TIM_Pulse = 0;
TIM_OC3Init(ADVANCE_TIM, &TIM_OCInitStructure);
TIM_OC3PreloadConfig(ADVANCE_TIM,TIM_OCPreload_Enable);
TIM_OCInitStructure.TIM_Pulse = 0;
TIM_OC4Init(ADVANCE_TIM, &TIM_OCInitStructure);
TIM_OC4PreloadConfig(ADVANCE_TIM,TIM_OCPreload_Enable);
TIM_Cmd(ADVANCE_TIM, ENABLE);
}
//void TB6612_F_Init(void) //控制前面2輪的電機驅(qū)動模塊初始化
//{
// TB6612_F_GPIO_Config();
// TB6612_F_PWM_GPIO_Config();
// ADVANCE_TIM1_Mode_Config();
//}
//void TB6612_R_Init(void) //控制后面2輪的電機驅(qū)動模塊初始化
//{
// TB6612_R_GPIO_Config();
// TB6612_R_PWM_GPIO_Config();
// ADVANCE_TIM1_Mode_Config();
//}
void TB6612_FR_Init(void) //控制前和后2輪的電機驅(qū)動模塊初始化
{
TB6612_F_GPIO_Config();
TB6612_F_PWM_GPIO_Config();
TB6612_R_GPIO_Config();
TB6612_R_PWM_GPIO_Config();
ADVANCE_TIM1_Mode_Config();
}
復(fù)制代碼
原理圖: 見頂部
仿真: 無
代碼僅供參考:
藍牙小車程序和資料.7z
(3.74 MB, 下載次數(shù): 30)
2023-9-17 15:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1