找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于stm32F103VET6蓝牙小车程序与APP

[复制链接]
跳转到指定楼层
楼主
ID:813640 发表于 2021-9-23 20:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各个引脚都有相对应的连接解释。又不懂的铁子们可以私聊我。

引脚分配

HC05与开发板的连接线,使用杜邦线连接:

        HC05_TXD     <--->    PA3          //串口2接收引脚
        HC05_RXD      <--->     PA2            //串口2发送引脚
        HC05_KEY     <--->     PB14        //普通GPIO、输出
        HC05_INT      <--->     PB13        //普通GPIO、输入
        
        HC05_VCC    <--->     接5V或3.3V
        HC05_GND     <--->     接地线         
        
调试串口(TTL-USB TO USART):
CH340的收发引脚与STM32的发收引脚相连。
    RX<--->PA9
    TX<--->PA10
单片机源程序如下:
  1. #include "stm32f10x.h"
  2. #include "./usart/bsp_usart.h"
  3. #include "./usart/bsp_usart_blt.h"
  4. #include "./systick/bsp_SysTick.h"
  5. #include "./hc05/bsp_hc05.h"
  6. #include "./led/bsp_led.h"
  7. #include "./key/bsp_key.h"
  8. #include <string.h>
  9. #include <stdlib.h>
  10. #include "MOTOR.h"
  11. BLTDev bltDevList;
  12. extern ReceiveData DEBUG_USART_ReceiveData;
  13. extern ReceiveData BLT_USART_ReceiveData;
  14. /**
  15.   * @brief  主函数
  16.   * @param  无
  17.   * @retval 无
  18.   */
  19. int main(void)
  20. {        
  21.         char hc05_name[30]="HC05_SLAVE";
  22.         char hc05_nameCMD[40];
  23.           //初始化systick
  24.         SysTick_Init();
  25.         SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;
  26.         
  27. MotorInit();//控制电机函数
  28.         USART_Cmd(USART1, ENABLE); //使能串口
  29.         USART_Config();
  30.         
  31.         LED_GPIO_Config();
  32.         Key_GPIO_Config();
  33.         
  34.         HC05_INFO("**********HC05模块AT指令测试实验************");
  35.         
  36.         if(HC05_Init() == 0)
  37.                 HC05_INFO("HC05模块检测正常。");
  38.         else
  39.         {
  40.                 HC05_ERROR("HC05模块检测不正常,请检查模块与开发板的连接,然后复位开发板重新测试。");
  41.                 while(1);
  42.         }
  43.                
  44.         /*各种命令测试演示,默认不显示。
  45.          *在bsp_hc05.h文件把HC05_DEBUG_ON 宏设置为1,
  46.          *即可通过串口调试助手接收调试信息*/        
  47.         
  48.         HC05_Send_CMD("AT+VERSION?\r\n",1);
  49.         
  50.         HC05_Send_CMD("AT+ADDR?\r\n",1);
  51.         
  52.         HC05_Send_CMD("AT+UART?\r\n",1);
  53.         
  54.         HC05_Send_CMD("AT+CMODE?\r\n",1);
  55.         
  56.         HC05_Send_CMD("AT+STATE?\r\n",1);        

  57.         HC05_Send_CMD("AT+ROLE=0\r\n",1);
  58.         
  59.         /*初始化SPP规范*/
  60.         HC05_Send_CMD("AT+INIT\r\n",1);
  61.         HC05_Send_CMD("AT+CLASS=0\r\n",1);
  62.         HC05_Send_CMD("AT+INQM=1,9,48\r\n",1);
  63.         
  64.         /*设置模块名字*/
  65.         sprintf(hc05_nameCMD,"AT+NAME=%s\r\n",hc05_name);
  66.         HC05_Send_CMD(hc05_nameCMD,1);

  67.         HC05_INFO("本模块名字为:%s ,模块已准备就绪。",hc05_name);
  68.         while(1)
  69.         {        
  70.           if(DEBUG_USART_ReceiveData.receive_data_flag == 1)
  71.                 {                        
  72.                         DEBUG_USART_ReceiveData.uart_buff[DEBUG_USART_ReceiveData.datanum] = 0;
  73.                         if(strstr((char *)DEBUG_USART_ReceiveData.uart_buff,"AT"))//如果数据是以AT开头的,就把KEY置高,设置蓝牙模块
  74.                         {
  75.                                 BLT_KEY_HIGHT;
  76.                                 delay_ms(20);
  77.                                 Usart_SendStr_length(BLT_USARTx,DEBUG_USART_ReceiveData.uart_buff,DEBUG_USART_ReceiveData.datanum);        
  78.                           Usart_SendStr_length(BLT_USARTx,"\r\n",2);        
  79.                                 BLT_KEY_LOW;
  80.                         }else if(strstr((char *)BLT_USART_ReceiveData.uart_buff,"4"))//在这里可以自己定义想要接收的字符串然后处理
  81.                         {
  82.                                 Turnfront(); //小车前进
  83.                                 LED_GREEN;
  84.                         }
  85.                  if(strstr((char *)BLT_USART_ReceiveData.uart_buff,"0"))
  86.                         {
  87.                         
  88.                            Stop();//小车停止
  89.                            LED_RED;
  90.                         }
  91.                 if(strstr((char *)BLT_USART_ReceiveData.uart_buff,"1"))
  92.                         {
  93.                         
  94.                            Turnleft();//小车向左
  95.                            LED_BLUE
  96.                         }
  97.                 if(strstr((char *)BLT_USART_ReceiveData.uart_buff,"2"))
  98.                         {
  99.                         
  100.                            Turnright();//小车向右
  101.                            LED_YELLOW
  102.                         }
  103.                 if(strstr((char *)BLT_USART_ReceiveData.uart_buff,"3"))
  104.                         {
  105.                         
  106.                            Turnback();//小车后退
  107.                            LED_PURPLE
  108.                         }
  109.                         else
  110.                         {
  111.                                 BLT_KEY_LOW;
  112.                                 Usart_SendStr_length(BLT_USARTx,DEBUG_USART_ReceiveData.uart_buff,DEBUG_USART_ReceiveData.datanum);
  113.                         }
  114.                         DEBUG_USART_ReceiveData.receive_data_flag = 0;                //接收数据标志清零
  115.                         DEBUG_USART_ReceiveData.datanum = 0;               
  116.                 }
  117.                 if(BLT_USART_ReceiveData.receive_data_flag == 1)
  118.                 {
  119.                         BLT_USART_ReceiveData.uart_buff[BLT_USART_ReceiveData.datanum] = 0;
  120.                         if(strstr((char *)BLT_USART_ReceiveData.uart_buff,"4"))//在这里可以自己定义想要接收的字符串然后处理
  121.                         {
  122.                                 Turnfront(); //小车前进
  123.                                 LED_GREEN;
  124.                         }
  125.                  if(strstr((char *)BLT_USART_ReceiveData.uart_buff,"0"))
  126.                         {
  127.                         
  128.                            Stop();//小车停止
  129.                            LED_RED;
  130.                         }
  131.                 if(strstr((char *)BLT_USART_ReceiveData.uart_buff,"2"))
  132.                         {
  133.                         
  134.                            Turnleft();//小车向左
  135.                            LED_BLUE
  136.                         }
  137.                 if(strstr((char *)BLT_USART_ReceiveData.uart_buff,"1"))
  138.                         {
  139.                         
  140.                            Turnright();//小车向右
  141.                            LED_YELLOW
  142.                         }
  143.                 if(strstr((char *)BLT_USART_ReceiveData.uart_buff,"3"))
  144.                         {
  145.                         
  146.                            Turnback();//小车后退
  147.                            LED_PURPLE
  148.                         }
  149.                         else
  150.                         {                        
  151.                                 Usart_SendStr_length(DEBUG_USARTx,BLT_USART_ReceiveData.uart_buff,BLT_USART_ReceiveData.datanum);
  152.                           Usart_SendStr_length(DEBUG_USARTx,"\r\n",2);                                
  153.                         }
  154.         clean_rebuff();
  155.                 }
  156.         }
  157. }

  158. /*********************************************END OF FILE**********************/
复制代码

所有资料51hei附件下载:
STM32代码: 蓝牙小车.7z (192.11 KB, 下载次数: 45)
安卓apk: 3.配套软件.rar (22.1 KB, 下载次数: 32)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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