久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2216|回復: 0
收起左側

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

[復制鏈接]
ID:1093781 發表于 2023-9-17 15:06 | 顯示全部樓層 |閱讀模式
智能小車stm32
1.png
  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, 下載次數: 30)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99久久婷婷 | 成人精品| 成年人在线播放 | 国产精品精品3d动漫 | 精品在线一区 | 亚洲视频一区二区三区 | 亚洲精品久久久久久久久久久 | 成人欧美在线 | 国产区精品在线观看 | 欧美精品综合在线 | 九九九久久国产免费 | www.婷婷亚洲基地 | 久久久久久蜜桃一区二区 | 99精品久久久久久中文字幕 | 久久美女视频 | 国产女人叫床高潮大片免费 | 中文字幕一区二区三区四区五区 | 亚洲天堂一区二区 | 午夜精品久久久久久久久久久久久 | 伊人网站在线 | 久久性| 久久成人免费 | 国产成人久久av免费高清密臂 | 亚洲精品一区二区三区中文字幕 | 不卡在线视频 | 日韩av在线免费 | 国产一区二区 | 亚洲狠狠| 国产乱一区二区三区视频 | 亚洲成人福利在线观看 | 欧美一级特黄aaa大片在线观看 | 欧美日韩18 | 精品在线一区二区三区 | 91精品国产综合久久久久久丝袜 | 亚洲电影一区二区三区 | 亚洲电影免费 | 成人在线观看免费视频 | 亚洲精品久久久久久久久久吃药 | 亚洲国产一区二区三区在线观看 | 91精品国产91久久久久久三级 | www.久久久.com|