找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2599|回复: 3
收起左侧

stm32蓝牙小车程序分享

[复制链接]
ID:486777 发表于 2019-6-9 16:19 | 显示全部楼层 |阅读模式

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

        HC05_TXD     <--->    PA3          //串口2接收引脚
        HC05_RXD      <--->     PA2            //串口2发送引脚
        HC05_KEY     <--->     PA5            //普通GPIO、输出
        HC05_INT      <--->     PA7            //普通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 <string.h>
  7. #include <stdlib.h>

  8. #include "delay.h"
  9. #include "sys.h"
  10. #include "timer.h"

  11. unsigned int Task_Delay[NumOfTask];
  12. BLTDev bltDevList;
  13. char sendData[1024];
  14. char linebuff[1024];







  15. /**
  16.   * @brief  主函数
  17.   * @param  无
  18.   * @retval 无
  19.   */
  20. int main(void)
  21. {       


  22.         char* redata;
  23.         uint16_t len;
  24.         static uint8_t hc05_role=0;

  25.        

  26.        
  27.         delay_init();       
  28. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);       

  29.           //初始化systick
  30.         SysTick_Init();
  31.         SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;

  32.         USART_Config();

  33. HC05_INIT();
  34.         TIM3_PWM_Init(1999,719);
  35.        


  36.         while(1)
  37.         {



  38.                
  39.                
  40.                
  41.                 //搜索蓝牙模块,并进行连接
  42.                 if(Task_Delay[2]==0 && !IS_HC05_CONNECTED() )
  43.                 {
  44.                         if(hc05_role == 1)        //主模式
  45.                         {
  46.                                 HC05_INFO("正在扫描蓝牙设备...");
  47.                                
  48.                                 linkHC05();
  49.                                
  50.                                 Task_Delay[2]=3000; //此值每1ms会减1,减到0才可以重新进来这里,所以执行的周期是3s

  51.                         }
  52.                         else        //从模式
  53.                         {
  54.                                         HC05_Send_CMD("AT+INQ\r\n",1);//模块在查询状态,才能容易被其它设备搜索到
  55.                                         delay_ss(1000);
  56.                                         HC05_Send_CMD("AT+INQC\r\n",1);//中断查询,防止查询的结果干扰串口透传的接收

  57.                                         Task_Delay[2]=2000; //此值每1ms会减1,减到0才可以重新进来这里,所以执行的周期是2s

  58.                         }
  59.                        
  60.                 }       
  61.                
  62.                
  63.                
  64.                         //连接后每隔一段时间检查接收缓冲区
  65.                 if(Task_Delay[0]==0 && IS_HC05_CONNECTED())  
  66.                 {
  67.                                 uint16_t linelen;

  68.                                 /*获取数据*/
  69.                                 redata = get_rebuff(&len);
  70. //                        k=(int)redata;                                                       
  71. //                                printf ("k:\r\n%s",k);
  72.                                 linelen = get_line(linebuff,redata,len);

  73.                        
  74. //                                /*检查数据是否有更新*/
  75.                                 if(linelen<200 && linelen != 0)
  76.                                 {
  77.                                        
  78.                                         if(strcmp(redata,"AT+LED1=ON")==0)
  79.                                         {
  80.                                                                                
  81.                                                 HC05_SendString("+LED1:ON\r\nOK\r\n");

  82.                                         }
  83.                                         else if(strcmp(redata,"AT+LED1=OFF")==0)
  84.                                         {
  85.                                                
  86.                                                 HC05_SendString("+LED1:OFF\r\nOK\r\n");

  87.                                         }
  88.                                         else
  89.                                         {
  90.                                                 HC05_INFO("receive:\r\n%s",redata);
  91.                                        
  92. if(strcmp(redata,"111")==0)
  93. {
  94.                
  95. }
  96.                                
  97. if(strcmp(redata,"000")==0)
  98. {
  99.        
  100. }
  101. if(strcmp(redata,"1")==0)
  102. {
  103.                 go_left_revolve1();
  104. }
  105. if(strcmp(redata,"2")==0)
  106. {
  107.                 go_straight1();
  108. }
  109. if(strcmp(redata,"3")==0)
  110. {
  111.               go_right_revolve1();
  112. }
  113. if(strcmp(redata,"4")==0)
  114. {
  115.                         go_left1();
  116. }
  117. if(strcmp(redata,"5")==0)
  118. {
  119.                                 go_stop();
  120. }
  121. if(strcmp(redata,"6")==0)
  122. {
  123.                                 go_right1();
  124. }
  125. if(strcmp(redata,"8")==0)
  126. {
  127.                         go_back();
  128. }                               
  129.                                        
  130.                                         }
  131.                                        
  132.                                         /*处理数据后,清空接收蓝牙模块数据的缓冲区*/
  133.                                        
  134.                                 clean_rebuff();       
  135.                                 }
  136.                         Task_Delay[0]=500;//此值每1ms会减1,减到0才可以重新进来这里,所以执行的周期是500ms
  137.                 }
  138.                
  139.                
  140.         }
  141. }

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

所有资料51hei提供下载:
蓝牙小车.7z (201.43 KB, 下载次数: 84)

评分

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

查看全部评分

回复

使用道具 举报

ID:632678 发表于 2019-11-14 23:52 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:632678 发表于 2019-11-17 22:46 | 显示全部楼层
楼主 ,想问一下 usart1  usart2  处的波特率 哪一个是要hc05 匹配的呀  
(新手)
回复

使用道具 举报

ID:486777 发表于 2020-5-8 17:08 | 显示全部楼层
易冥想 发表于 2019-11-17 22:46
楼主 ,想问一下 usart1  usart2  处的波特率 哪一个是要hc05 匹配的呀  
(新手)

USart2是蓝牙的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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