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
單片機源程序如下:
- #include "stm32f10x.h"
- #include "./usart/bsp_usart.h"
- #include "./usart/bsp_usart_blt.h"
- #include "./systick/bsp_SysTick.h"
- #include "./hc05/bsp_hc05.h"
- #include <string.h>
- #include <stdlib.h>
- #include "delay.h"
- #include "sys.h"
- #include "timer.h"
- unsigned int Task_Delay[NumOfTask];
- BLTDev bltDevList;
- char sendData[1024];
- char linebuff[1024];
- /**
- * @brief 主函數
- * @param 無
- * @retval 無
- */
- int main(void)
- {
- char* redata;
- uint16_t len;
- static uint8_t hc05_role=0;
-
-
- delay_init();
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- //初始化systick
- SysTick_Init();
- SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;
- USART_Config();
- HC05_INIT();
- TIM3_PWM_Init(1999,719);
-
- while(1)
- {
-
-
-
- //搜索藍牙模塊,并進行連接
- if(Task_Delay[2]==0 && !IS_HC05_CONNECTED() )
- {
- if(hc05_role == 1) //主模式
- {
- HC05_INFO("正在掃描藍牙設備...");
-
- linkHC05();
-
- Task_Delay[2]=3000; //此值每1ms會減1,減到0才可以重新進來這里,所以執行的周期是3s
- }
- else //從模式
- {
- HC05_Send_CMD("AT+INQ\r\n",1);//模塊在查詢狀態,才能容易被其它設備搜索到
- delay_ss(1000);
- HC05_Send_CMD("AT+INQC\r\n",1);//中斷查詢,防止查詢的結果干擾串口透傳的接收
- Task_Delay[2]=2000; //此值每1ms會減1,減到0才可以重新進來這里,所以執行的周期是2s
- }
-
- }
-
-
-
- //連接后每隔一段時間檢查接收緩沖區
- if(Task_Delay[0]==0 && IS_HC05_CONNECTED())
- {
- uint16_t linelen;
- /*獲取數據*/
- redata = get_rebuff(&len);
- // k=(int)redata;
- // printf ("k:\r\n%s",k);
- linelen = get_line(linebuff,redata,len);
-
- // /*檢查數據是否有更新*/
- if(linelen<200 && linelen != 0)
- {
-
- if(strcmp(redata,"AT+LED1=ON")==0)
- {
-
- HC05_SendString("+LED1:ON\r\nOK\r\n");
- }
- else if(strcmp(redata,"AT+LED1=OFF")==0)
- {
-
- HC05_SendString("+LED1:OFF\r\nOK\r\n");
- }
- else
- {
- HC05_INFO("receive:\r\n%s",redata);
-
- if(strcmp(redata,"111")==0)
- {
-
- }
-
- if(strcmp(redata,"000")==0)
- {
-
- }
- if(strcmp(redata,"1")==0)
- {
- go_left_revolve1();
- }
- if(strcmp(redata,"2")==0)
- {
- go_straight1();
- }
- if(strcmp(redata,"3")==0)
- {
- go_right_revolve1();
- }
- if(strcmp(redata,"4")==0)
- {
- go_left1();
- }
- if(strcmp(redata,"5")==0)
- {
- go_stop();
- }
- if(strcmp(redata,"6")==0)
- {
- go_right1();
- }
- if(strcmp(redata,"8")==0)
- {
- go_back();
- }
-
- }
-
- /*處理數據后,清空接收藍牙模塊數據的緩沖區*/
-
- clean_rebuff();
- }
- Task_Delay[0]=500;//此值每1ms會減1,減到0才可以重新進來這里,所以執行的周期是500ms
- }
-
-
- }
- }
- /*********************************************END OF FILE**********************/
復制代碼
所有資料51hei提供下載:
藍牙小車.7z
(201.43 KB, 下載次數: 84)
2019-6-10 03:20 上傳
點擊文件名下載附件
|