基于STM32CUBEMX,HAL库蓝牙通信

这篇具有很好参考价值的文章主要介绍了基于STM32CUBEMX,HAL库蓝牙通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 蓝牙通信(实现手机与stm32连接)

1.准备工作

  • 蓝牙模块HC-05模块
  • 安卓APP软件

    基于STM32CUBEMX,HAL库蓝牙通信

基于STM32CUBEMX,HAL库蓝牙通信

HC-05蓝牙模块支持AT指令。要进入AT指令模式,需要先按住蓝牙模块上的按键,接通电源,当模块上的LED灯进入慢闪后再松开按键,此时已经进入AT指令模式,可以进行AT指令设置1。

常用的AT指令包括:

AT+VERSION?

返回HC-05的软件版本号

AT+NAME?

返回HC-05的名字

AT+UART?

返回蓝牙波特率

AT+UART=115200,0,0

设置串口波特率115200,1位停止位,无校验位

AT+NAME=bluetooth

修改蓝牙模块的名字为bluetooth

AT+PSWD?

查询配对密码

AT+PSWD=”1234”

设置密码1234

AT+ROLE?

查询主从状态,=1:设置成主,=0:设置成从,=2:设置成回环

AT+ROLE=0

设置成从

AT+ORGL

恢复出厂默认设置。

2.stm32cubemx设置

设置和串口一样,因为需要用到中断,所以我们需要打开中断。

基于STM32CUBEMX,HAL库蓝牙通信

基于STM32CUBEMX,HAL库蓝牙通信

我们打开2个串口。UART5连接蓝牙模块。

3.keil代码

基础配置一下

基于STM32CUBEMX,HAL库蓝牙通信

usart.c下

/* USER CODE BEGIN 1 */
char Buff[255];//存储数据
uint8_t Data;	//暂存数据
int Cnt = 0;	//计数

void  HAL_UART_RxCpltCallback(UART_HandleTypeDef  *huart)
{
    if(huart ==&huart5)
    {
      
			Buff[Cnt++] = (char)Data;
			if(Buff[Cnt-1] == 0x0A && Buff[Cnt-2] == 0x0D)//判断是否为回车结尾  
			{
			
							if(Buff[Cnt-3] == 0x01)
							{
								flag = 1;
							}
							if(Buff[Cnt-3] == 0x02)
							{
								flag = 2;
							}
							if(Buff[Cnt-3] == 0x03)
							{
								flag = 3;
							}
							if(Buff[Cnt-3] == 0x04)
							{
								flag = 4;
							}
							if(Buff[Cnt-3] == 0x05)
							{
								flag = 5;
							}							
 							if(Buff[Cnt-3] == 0x06)
							{
								flag = 6;
							}
			}							
        HAL_UART_Receive_IT(&huart5,(uint8_t *)&Data,sizeof(Data));
    }
}


///重定向c库函数printf到串口DEBUG_USART,重定向后可使用printf函数
int fputc(int ch, FILE *f)
{
	/* 发送一个字节数据到串口DEBUG_USART */
	HAL_UART_Transmit(&huart5, (uint8_t *)&ch, 1, 1000);	
	
	return (ch);
}
/* USER CODE END 1 */

 usart.h

/* USER CODE BEGIN Includes */
#include <stdio.h>
/* USER CODE END Includes */

/* USER CODE BEGIN Private defines */
extern char Buff[255];//存储数据
extern uint8_t Data;	//暂存数据
extern int Cnt;	//计数
extern int flag;
/* USER CODE END Private defines */

 main.c

/* USER CODE BEGIN PTD */
	int flag;
/* USER CODE END PTD */

  /* USER CODE BEGIN 2 */
  HAL_UART_Receive_IT(&huart5,(uint8_t *)&Data,sizeof(Data));
  /* USER CODE END 2 */

  /* USER CODE BEGIN WHILE */
  while (1)
  {
	      switch(flag)    
    		 {
    		 case(1):
				 printf("1");
			 break;
    		 case(2):
				 printf("2");
			 break;
    		 case(3):
				 printf("3");
			 break;
    		 case(4):
				 printf("4");
			 break;
    		 case(5):
				 printf("5");
			 break;
			 case(6):
				 printf("6");
			 break;
    		 default:
				 printf("0");
				 break;
    		 } 
			 HAL_Delay(1000);
    /* USER CODE END WHILE */

 

4.实验现象

发送01 0D 0A(0D 0A是两个ASCII码,分别代表回车(CR)和换行(LF))

基于STM32CUBEMX,HAL库蓝牙通信

发送02 0D 0A

基于STM32CUBEMX,HAL库蓝牙通信

如果需要在电脑上显示,我们把发送给手机的端口huart5改成huart1就可以了。文章来源地址https://www.toymoban.com/news/detail-478328.html

到了这里,关于基于STM32CUBEMX,HAL库蓝牙通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32HAL ADC+TIM+DMA采集交流信号 基于cubemx

    本文主要讲解定时器触发ADC去采集交流信号,DMA把数据搬移到内存。 所需工具: 开发板:STM32F103C8T6 STM32CubeMX IDE: Keil-MDK 相关文章: STM32HAL ADC+TIM+DMA采集交流信号 基于cubemx(二) STM32cubemx ADC+TIM+DMA超频采样 ADC+TIM+DMA采集交流信号是电赛中使用范围最为广泛的一个技术。这个模

    2024年02月03日
    浏览(20)
  • 基于STM32的双蓝牙通信

    首先我们应该让两个蓝牙间互相通信 1.准备两个蓝牙模块(主从一体),用USB转TTL连接到电脑,再打开两个串口分别连接两个蓝牙模块,上电同时按住蓝牙上的按键进入AT指令模式(指示灯慢闪),波特率设置为38400,发送AT 返回ok 2.在串口1中 发送AT+ORGL,恢复1的默认设置 返

    2023年04月17日
    浏览(17)
  • STM32CubeMx实现ADC多通道+DMA读取(HAL库)

    目录 一、实验结果  二、STM32CubeMx配置 三、main.c测试代码 1、RCC配置 (外部晶振选择8MHz。设置相应的分频器M=8,倍频器倍频系数N=336,分频器分频系数P=2,那么主PLL生成的第一个输出高速时钟PLLP为:168MHz)  2、SYS配置  3、ADC(规则)通道配置(独立模式,预分频4分频,1

    2024年02月15日
    浏览(16)
  • STM32-03基于HAL库(CubeMX+MDK+Proteus)输入检测案例(按键控制LED)

    搭建完成开发STM32开发环境之后,开始GPIO的学习。上一节已经测试了使用GPIO的输出模式,实现LED点亮的功能。 本次案例实现GPIO的输入检测功能,实现按键状态检测,通过按键状态控制LED。 需求分析: 接线:PA6-KEY1、PA7-KEY2、PA0-LED1、PA1-LED2; KEY1控制LED1、KEY2控制LED2; 按键闭

    2024年04月23日
    浏览(25)
  • 基于CubeMX(hal库)stm32中hrtim高分辨率定时器的基本使用(自存)

    1、选通道 单通道输出or双通道输出 2、Timer A~F配置 (Master Timer不用管) 比较值Compare 个人感觉跟CCR差不多的意思, 注意不要大于上面的Period就行 设置上升沿和下降沿时间: 若想让上设Compare=CCR 如图设置 即可 即在 计数到Compare1时拉低,计数溢出时拉高 所以上图输出频率10kHz占

    2024年02月04日
    浏览(25)
  • DM9051--TCP通信实验(基于STM32CUBEMX)

    最近作者一直在研究DM9051芯片的工作机理,在此过程中,上网上找了很多资料,但根据资料还是不能了解很通透。因此我直接开始实战,经过多番周折,终于调通了程序。再此篇文章分享下自己的调试过程,也把疑问分享一下!(写的比较潦草,资料在最后) DM9051NP SPI接口网

    2024年02月08日
    浏览(38)
  • STM32CubeMX配置HAL库实现SPI-DMA的递归调用

    核心: STM32F407ZET6   外设ADC: ADS1258   数量:3个   ※ 核心与3个ADC使用SPI总线 “一主多从” 方式连接,PCB布线的方式与下图一致。 ※ 在电路板上STM32与三个ADS1258在同一直线上分布,STM32在一端,三个ADC依次排布。 ※ 离STM32最远ADC的DRDY硬件管脚与STM32的EXTI line4 interrupt连接

    2024年02月15日
    浏览(22)
  • STM32CubeMX实现USART串口通信

    硬件:stm32f103c8t6核心板 软件:STM32CubeMX 6.6.1 keil5 mdk 这里就不再详细介绍了,详细请参考上一篇博客: https://blog.csdn.net/qq_55894922/article/details/127232999?spm=1001.2014.3001.5501 若点击 Manage embedded software packages 后,出现失败,则需要随便点击其它任一选项,进行下载一些文件,比如点

    2023年04月17日
    浏览(17)
  • STM32F4 基于USART串口的蓝牙通信

    目录 一、硬件资源 连接方案 其他配置 二、实验原理 基本定义 USART介绍 USART工作原理 数据发送 数据接收 蓝牙HM-10配置 三、代码部分 usart.c usart.h Serial.c Serial.h main.c 结语 STM32F401,OLED,蓝牙hm10 连接方案 设备1的TX与设备2的RX连接,这样设备1发送的数据可以被设备2接收到。

    2024年01月17日
    浏览(16)
  • 【STM32+cubemx】0030 HAL库开发:DDS芯片AD9833实现简单的波形发生器

    大家好,我是学电子的小白白,今天带大家了解一款波形发生器芯片——AD9833。 AD9833是AD公司出品的一款DDS波形发生器,能够产生正弦波、三角波和方波输出。 通俗来讲,DDS是一种把波形预先存储在芯片内部的DAC,只要设置好它的工作频率,就能按这个频率来输出特定的波形

    2024年02月02日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包