本人也是小白,看了很多博客都没做出来,如果你也是小白,希望这篇文章可以帮助你。
这篇文章是为了实现蓝牙控制stm32灯翻转,并且stm32每次返回给手机的数字加3,需要其他的功能可直接根据模板改。
一、 蓝牙插在电脑上与手机通信
软件下载链接:串口调试助手:UartAssist串口调试助手 V5.0.2-软件工具-野人家园 (cmsoft.cn)
蓝牙调试器:https://pan.baidu.com/s/1OV5MgmTUjyNafIsshcdh6Q
提取码:8888(感谢这位大佬的链接)
ch340:直接搜索ch340即可
关于这部分大家可以看看这个博主写的,我觉得很详细。
https://blog.csdn.net/weixin_53348716/article/details/123488818
(但是en脚可以直接悬空,不用管它)
我们需要知道蓝牙的名字,波特率,密码。
常用AT指令:
AT+NAME(查询蓝牙名字)
AT+PSWD(查询密码)
AT+UART=9600,0,0(修改蓝牙波特率为9600);
STM32蓝牙与手机通信
首先,先在cubmax里面配置USART;
波特率要与蓝牙波特率相同,否则不能通讯。(蓝牙一般为9600)
打开usart.c
/* USER CODE BEGIN 1 */
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xffff);
return ch;
}
/* USER CODE END 1 */
打开usart.h
/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */
打开main.c
/* USER CODE BEGIN PV */
char arxbuff,rxbuff[10],kk,gg; //arxbuff为手机发送的数据
int a=5,i,j; //a为单片机向手机发送的字符
/* USER CODE END PV */
/* USER CODE BEGIN 2 */
HAL_UART_Receive_IT(&huart2,(unsigned char *)&arxbuff,1); //打开接收
/* USER CODE END 2 */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_8); //电平翻转
for(i=0;i<5000;i++) //延时
{
for(j=0;j<2000;j++){}
}
printf("%d",a); //单片机向手机发送
}
/* USER CODE END 3 */
文章来源地址https://www.toymoban.com/news/detail-696862.html
/* USER CODE BEGIN 4 */
void uart_clear(void)
{
kk = 0;
for(gg = 0;gg < 10;gg++)
{
rxbuff[gg] = 0;
}
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
rxbuff[kk] = arxbuff; //若需要多个串口,在这段代码前写if(huart == &huart1)
kk++;
if(rxbuff[kk - 1] == '\n' || rxbuff[kk - 2] == '\r' || rxbuff[kk - 3] == '1')
{
a+=3; //需要其他功能,直接改这段代码
uart_clear();
}
HAL_UART_Receive_IT(&huart2,(unsigned char *)&arxbuff,1);
}
/* USER CODE END 4 */
文章来源:https://www.toymoban.com/news/detail-696862.html
到了这里,关于stm32与手机进行蓝牙通信(超详细版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!