找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stm32藍(lán)牙小車程序分享

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:486777 發(fā)表于 2019-6-9 16:19 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式

HC05與開發(fā)板的連接線,使用杜邦線連接:

        HC05_TXD     <--->    PA3          //串口2接收引腳
        HC05_RXD      <--->     PA2            //串口2發(fā)送引腳
        HC05_KEY     <--->     PA5            //普通GPIO、輸出
        HC05_INT      <--->     PA7            //普通GPIO、輸入
        
        HC05_VCC    <--->     接5V或3.3V
        HC05_GND     <--->     接地線         
        


調(diào)試串口(TTL-USB TO USART):
CH340的收發(fā)引腳與STM32的發(fā)收引腳相連。
    RX<--->PA9
    TX<--->PA10

單片機(jī)源程序如下:
  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  主函數(shù)
  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.                 //搜索藍(lán)牙模塊,并進(jìn)行連接
  42.                 if(Task_Delay[2]==0 && !IS_HC05_CONNECTED() )
  43.                 {
  44.                         if(hc05_role == 1)        //主模式
  45.                         {
  46.                                 HC05_INFO("正在掃描藍(lán)牙設(shè)備...");
  47.                                
  48.                                 linkHC05();
  49.                                
  50.                                 Task_Delay[2]=3000; //此值每1ms會減1,減到0才可以重新進(jìn)來這里,所以執(zhí)行的周期是3s

  51.                         }
  52.                         else        //從模式
  53.                         {
  54.                                         HC05_Send_CMD("AT+INQ\r\n",1);//模塊在查詢狀態(tài),才能容易被其它設(shè)備搜索到
  55.                                         delay_ss(1000);
  56.                                         HC05_Send_CMD("AT+INQC\r\n",1);//中斷查詢,防止查詢的結(jié)果干擾串口透傳的接收

  57.                                         Task_Delay[2]=2000; //此值每1ms會減1,減到0才可以重新進(jìn)來這里,所以執(zhí)行的周期是2s

  58.                         }
  59.                        
  60.                 }       
  61.                
  62.                
  63.                
  64.                         //連接后每隔一段時(shí)間檢查接收緩沖區(qū)
  65.                 if(Task_Delay[0]==0 && IS_HC05_CONNECTED())  
  66.                 {
  67.                                 uint16_t linelen;

  68.                                 /*獲取數(shù)據(jù)*/
  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. //                                /*檢查數(shù)據(jù)是否有更新*/
  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.                                         /*處理數(shù)據(jù)后,清空接收藍(lán)牙模塊數(shù)據(jù)的緩沖區(qū)*/
  133.                                        
  134.                                 clean_rebuff();       
  135.                                 }
  136.                         Task_Delay[0]=500;//此值每1ms會減1,減到0才可以重新進(jìn)來這里,所以執(zhí)行的周期是500ms
  137.                 }
  138.                
  139.                
  140.         }
  141. }

  142. /*********************************************END OF FILE**********************/
復(fù)制代碼

所有資料51hei提供下載:
藍(lán)牙小車.7z (201.43 KB, 下載次數(shù): 84)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:632678 發(fā)表于 2019-11-14 23:52 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

板凳
ID:632678 發(fā)表于 2019-11-17 22:46 | 只看該作者
樓主 ,想問一下 usart1  usart2  處的波特率 哪一個是要hc05 匹配的呀  
(新手)
回復(fù)

使用道具 舉報(bào)

地板
ID:486777 發(fā)表于 2020-5-8 17:08 | 只看該作者
易冥想 發(fā)表于 2019-11-17 22:46
樓主 ,想問一下 usart1  usart2  處的波特率 哪一個是要hc05 匹配的呀  
(新手)

USart2是藍(lán)牙的
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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