|
智能小車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(); //單片機(jī)上電默認(rèn)先把4個電機(jī)關(guān)閉
-
- USART3_Config(); //初始化藍(lán)牙模塊的串口
-
- while(1)
- {
- RUN_Prg(); //小車藍(lán)牙控制功能
- }
- }
復(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輪的電機(jī)驅(qū)動模塊初始化
- //{
- // TB6612_F_GPIO_Config();
- // TB6612_F_PWM_GPIO_Config();
- // ADVANCE_TIM1_Mode_Config();
- //}
- //void TB6612_R_Init(void) //控制后面2輪的電機(jī)驅(qū)動模塊初始化
- //{
- // TB6612_R_GPIO_Config();
- // TB6612_R_PWM_GPIO_Config();
- // ADVANCE_TIM1_Mode_Config();
- //}
- void TB6612_FR_Init(void) //控制前和后2輪的電機(jī)驅(qū)動模塊初始化
- {
- TB6612_F_GPIO_Config();
- TB6612_F_PWM_GPIO_Config();
- TB6612_R_GPIO_Config();
- TB6612_R_PWM_GPIO_Config();
- ADVANCE_TIM1_Mode_Config();
- }
復(fù)制代碼 原理圖: 見頂部
仿真: 無
代碼僅供參考:
藍(lán)牙小車程序和資料.7z
(3.74 MB, 下載次數(shù): 30)
2023-9-17 15:13 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|