標(biāo)題:
stm32藍(lán)牙小車程序分享
[打印本頁]
作者:
921736537
時(shí)間:
2019-6-9 16:19
標(biāo)題:
stm32藍(lán)牙小車程序分享
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ī)源程序如下:
#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 主函數(shù)
* @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)
{
//搜索藍(lán)牙模塊,并進(jìn)行連接
if(Task_Delay[2]==0 && !IS_HC05_CONNECTED() )
{
if(hc05_role == 1) //主模式
{
HC05_INFO("正在掃描藍(lán)牙設(shè)備...");
linkHC05();
Task_Delay[2]=3000; //此值每1ms會減1,減到0才可以重新進(jìn)來這里,所以執(zhí)行的周期是3s
}
else //從模式
{
HC05_Send_CMD("AT+INQ\r\n",1);//模塊在查詢狀態(tài),才能容易被其它設(shè)備搜索到
delay_ss(1000);
HC05_Send_CMD("AT+INQC\r\n",1);//中斷查詢,防止查詢的結(jié)果干擾串口透傳的接收
Task_Delay[2]=2000; //此值每1ms會減1,減到0才可以重新進(jìn)來這里,所以執(zhí)行的周期是2s
}
}
//連接后每隔一段時(shí)間檢查接收緩沖區(qū)
if(Task_Delay[0]==0 && IS_HC05_CONNECTED())
{
uint16_t linelen;
/*獲取數(shù)據(jù)*/
redata = get_rebuff(&len);
// k=(int)redata;
// printf ("k:\r\n%s",k);
linelen = get_line(linebuff,redata,len);
// /*檢查數(shù)據(jù)是否有更新*/
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();
}
}
/*處理數(shù)據(jù)后,清空接收藍(lán)牙模塊數(shù)據(jù)的緩沖區(qū)*/
clean_rebuff();
}
Task_Delay[0]=500;//此值每1ms會減1,減到0才可以重新進(jìn)來這里,所以執(zhí)行的周期是500ms
}
}
}
/*********************************************END OF FILE**********************/
復(fù)制代碼
所有資料51hei提供下載:
藍(lán)牙小車.7z
(201.43 KB, 下載次數(shù): 84)
2019-6-10 03:20 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
易冥想
時(shí)間:
2019-11-14 23:52
感謝分享
作者:
易冥想
時(shí)間:
2019-11-17 22:46
樓主 ,想問一下 usart1 usart2 處的波特率 哪一個(gè)是要hc05 匹配的呀
(新手)
作者:
921736537
時(shí)間:
2020-5-8 17:08
易冥想 發(fā)表于 2019-11-17 22:46
樓主 ,想問一下 usart1 usart2 處的波特率 哪一個(gè)是要hc05 匹配的呀
(新手)
USart2是藍(lán)牙的
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1