找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2174|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32單片機(jī)+TB6612模塊智能小車程序原理圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
智能小車stm32

  1. #include "stm32f10x.h"
  2. #include "bsp_tb6612.h"
  3. #include "bsp_motor.h"
  4. #include "bsp_usart.h"
  5. #include "car_ctrl.h"

  6. int main(void)
  7. {
  8.         TB6612_FR_Init();      //TB6612模塊1和模塊2一起驅(qū)動(dòng)
  9.         
  10.         MotorAllOFF();         //單片機(jī)上電默認(rèn)先把4個(gè)電機(jī)關(guān)閉
  11.         
  12.         USART3_Config();       //初始化藍(lán)牙模塊的串口
  13.         
  14.         while(1)
  15.         {
  16.                  RUN_Prg();   //小車藍(lán)牙控制功能
  17.         }
  18. }
復(fù)制代碼
  1. #include "bsp_tb6612.h"

  2. /*TB6612模塊1,驅(qū)動(dòng)前輪  F*/
  3. void TB6612_F_GPIO_Config(void)
  4. {
  5.         GPIO_InitTypeDef GPIO_InitStructure;
  6.         
  7.         RCC_APB2PeriphClockCmd(TB6612_F_GPIO_AIN1_CLK | TB6612_F_GPIO_AIN2_CLK |              \
  8.                                                                                                  TB6612_F_GPIO_BIN1_CLK | TB6612_F_GPIO_BIN2_CLK , ENABLE);
  9.         
  10.         GPIO_InitStructure.GPIO_Pin = TB6612_F_GPIO_AIN1_PIN;
  11.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  12.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        
  13.         GPIO_Init(TB6612_F_GPIO_AIN1_PORT, &GPIO_InitStructure);
  14.         
  15.         GPIO_InitStructure.GPIO_Pin = TB6612_F_GPIO_AIN2_PIN;
  16.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  17.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        
  18.         GPIO_Init(TB6612_F_GPIO_AIN2_PORT, &GPIO_InitStructure);

  19.         GPIO_InitStructure.GPIO_Pin = TB6612_F_GPIO_BIN1_PIN;
  20.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  21.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        
  22.         GPIO_Init(TB6612_F_GPIO_BIN1_PORT, &GPIO_InitStructure);

  23.         GPIO_InitStructure.GPIO_Pin = TB6612_F_GPIO_BIN2_PIN;
  24.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  25.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        
  26.         GPIO_Init(TB6612_F_GPIO_BIN2_PORT, &GPIO_InitStructure);        
  27. }

  28. void TB6612_F_PWM_GPIO_Config(void)
  29. {
  30.         GPIO_InitTypeDef GPIO_InitStructure;
  31.         
  32.         RCC_APB2PeriphClockCmd(TB6612_F_GPIO_PWMA_CH1_CLK, ENABLE);
  33.         GPIO_InitStructure.GPIO_Pin = TB6612_F_GPIO_PWMA_CH1_PIN;
  34.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  35.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        
  36.         GPIO_Init(TB6612_F_GPIO_PWMA_CH1_PORT,&GPIO_InitStructure);
  37.         
  38.         RCC_APB2PeriphClockCmd(TB6612_F_GPIO_PWMB_CH2_CLK, ENABLE);
  39.         GPIO_InitStructure.GPIO_Pin = TB6612_F_GPIO_PWMB_CH2_PIN;
  40.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  41.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        
  42.         GPIO_Init(TB6612_F_GPIO_PWMB_CH2_PORT,&GPIO_InitStructure);
  43. }

  44. /*TB6612模塊2,驅(qū)動(dòng)后輪  R*/
  45. void TB6612_R_GPIO_Config(void)
  46. {
  47.         GPIO_InitTypeDef GPIO_InitStructure;
  48.         
  49.         RCC_APB2PeriphClockCmd(TB6612_R_GPIO_AIN1_CLK | TB6612_R_GPIO_AIN2_CLK |              \
  50.                                                                                                  TB6612_R_GPIO_BIN1_CLK | TB6612_R_GPIO_BIN2_CLK , ENABLE);
  51.         
  52.         GPIO_InitStructure.GPIO_Pin = TB6612_R_GPIO_AIN1_PIN;
  53.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  54.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  55.         GPIO_Init(TB6612_R_GPIO_AIN1_PORT, &GPIO_InitStructure);
  56.         
  57.         GPIO_InitStructure.GPIO_Pin = TB6612_R_GPIO_AIN2_PIN;
  58.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  59.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  60.         GPIO_Init(TB6612_R_GPIO_AIN2_PORT, &GPIO_InitStructure);

  61.         GPIO_InitStructure.GPIO_Pin = TB6612_R_GPIO_BIN1_PIN;
  62.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  63.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  64.         GPIO_Init(TB6612_R_GPIO_BIN1_PORT, &GPIO_InitStructure);

  65.         GPIO_InitStructure.GPIO_Pin = TB6612_R_GPIO_BIN2_PIN;
  66.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  67.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  68.         GPIO_Init(TB6612_R_GPIO_BIN2_PORT, &GPIO_InitStructure);
  69. }

  70. void TB6612_R_PWM_GPIO_Config(void)
  71. {
  72.         GPIO_InitTypeDef GPIO_InitStructure;
  73.         
  74.         RCC_APB2PeriphClockCmd(TB6612_R_GPIO_PWMA_CH3_CLK, ENABLE);        
  75.         GPIO_InitStructure.GPIO_Pin = TB6612_R_GPIO_PWMA_CH3_PIN;
  76.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  77.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        
  78.         GPIO_Init(TB6612_R_GPIO_PWMA_CH3_PORT,&GPIO_InitStructure);

  79.         RCC_APB2PeriphClockCmd(TB6612_R_GPIO_PWMB_CH4_CLK, ENABLE);
  80.         GPIO_InitStructure.GPIO_Pin = TB6612_R_GPIO_PWMB_CH4_PIN;
  81.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  82.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        
  83.         GPIO_Init(TB6612_R_GPIO_PWMB_CH4_PORT,&GPIO_InitStructure);
  84. }

  85. static void ADVANCE_TIM1_Mode_Config(void)
  86. {
  87.         TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
  88.         TIM_OCInitTypeDef TIM_OCInitStructure;
  89.         
  90.         RCC_APB2PeriphClockCmd(ADVANCE_TIM_CLK , ENABLE);
  91.         
  92.         TIM_TimeBaseInitStructure.TIM_Prescaler = (72-1);
  93.         TIM_TimeBaseInitStructure.TIM_Period = (100-1);
  94.         TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
  95.         TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  96.         TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
  97.         TIM_TimeBaseInit(ADVANCE_TIM, &TIM_TimeBaseInitStructure);
  98.         
  99.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  100.         TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  101.         TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
  102.         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  103.         TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
  104.         TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
  105.         TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
  106.         
  107.         TIM_OCInitStructure.TIM_Pulse = 0;
  108.         TIM_OC1Init(ADVANCE_TIM, &TIM_OCInitStructure);
  109.         TIM_OC1PreloadConfig(ADVANCE_TIM,TIM_OCPreload_Enable);
  110.         
  111.         TIM_OCInitStructure.TIM_Pulse = 0;
  112.         TIM_OC2Init(ADVANCE_TIM, &TIM_OCInitStructure);
  113.         TIM_OC2PreloadConfig(ADVANCE_TIM,TIM_OCPreload_Enable);
  114.         
  115.         TIM_OCInitStructure.TIM_Pulse = 0;
  116.         TIM_OC3Init(ADVANCE_TIM, &TIM_OCInitStructure);
  117.         TIM_OC3PreloadConfig(ADVANCE_TIM,TIM_OCPreload_Enable);
  118.         
  119.         TIM_OCInitStructure.TIM_Pulse = 0;
  120.         TIM_OC4Init(ADVANCE_TIM, &TIM_OCInitStructure);
  121.         TIM_OC4PreloadConfig(ADVANCE_TIM,TIM_OCPreload_Enable);
  122.         
  123.         TIM_Cmd(ADVANCE_TIM, ENABLE);
  124. }

  125. //void TB6612_F_Init(void)    //控制前面2輪的電機(jī)驅(qū)動(dòng)模塊初始化
  126. //{
  127. //        TB6612_F_GPIO_Config();
  128. //        TB6612_F_PWM_GPIO_Config();
  129. //        ADVANCE_TIM1_Mode_Config();
  130. //}

  131. //void TB6612_R_Init(void)    //控制后面2輪的電機(jī)驅(qū)動(dòng)模塊初始化
  132. //{
  133. //        TB6612_R_GPIO_Config();
  134. //        TB6612_R_PWM_GPIO_Config();
  135. //        ADVANCE_TIM1_Mode_Config();
  136. //}

  137. void TB6612_FR_Init(void)                //控制前和后2輪的電機(jī)驅(qū)動(dòng)模塊初始化
  138. {
  139.         TB6612_F_GPIO_Config();
  140.         TB6612_F_PWM_GPIO_Config();
  141.         TB6612_R_GPIO_Config();
  142.         TB6612_R_PWM_GPIO_Config();
  143.         ADVANCE_TIM1_Mode_Config();
  144. }
復(fù)制代碼
原理圖: 見頂部
仿真: 無
代碼僅供參考: 藍(lán)牙小車程序和資料.7z (3.74 MB, 下載次數(shù): 30)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表