找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1227|回复: 0
打印 上一主题 下一主题
收起左侧

STM32单片机+TB6612模块智能小车程序原理图

[复制链接]
跳转到指定楼层
楼主
智能小车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一起驱动
  9.         
  10.         MotorAllOFF();         //单片机上电默认先把4个电机关闭
  11.         
  12.         USART3_Config();       //初始化蓝牙模块的串口
  13.         
  14.         while(1)
  15.         {
  16.                  RUN_Prg();   //小车蓝牙控制功能
  17.         }
  18. }
复制代码
  1. #include "bsp_tb6612.h"

  2. /*TB6612模块1,驱动前轮  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,驱动后轮  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轮的电机驱动模块初始化
  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轮的电机驱动模块初始化
  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轮的电机驱动模块初始化
  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. }
复制代码
原理图: 见顶部
仿真: 无
代码仅供参考: 蓝牙小车程序和资料.7z (3.74 MB, 下载次数: 26)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表