【STM32+HAL】蓝牙串口模块JDY-31

一、准备工作:

有关CUBEMX的初始化配置,参见我的另一篇blog:【STM32+HAL】CUBEMX初始化配置

二、所用工具:

1、芯片:STM32F103C8T6

2、CUBEMX配置软件

3、蓝牙串口模块JDY-31

三、实现功能:

实现手机和电脑端串口蓝牙通信

四、HAL配置步骤:

1、打开串口一和电脑通信(115200bit/s),串口二和手机蓝牙连接(9600bit/s)

2、使能中断

至此,CUBEMX配置完毕

五、KEIL填写代码:

1、串口初始化

   HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer1, 1);
   HAL_UART_Receive_IT(&huart2, (uint8_t *)&aRxBuffer2, 1);	//串口接收初始化

2、数据接收函数

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    UNUSED(huart);
	if(huart==&huart1){
		if(Uart1_Rx_Cnt >= 255) {
			Uart1_Rx_Cnt = 0;
			memset(RxBuffer1,0x00,sizeof(RxBuffer1));
			HAL_UART_Transmit(&huart1, (uint8_t *)"OVERFLOW!\r\n", 10,0xFFFF);
		}
		else{
			RxBuffer1[Uart1_Rx_Cnt++] = aRxBuffer1;
			if((RxBuffer1[Uart1_Rx_Cnt-1] == 0x0A)&&(RxBuffer1[Uart1_Rx_Cnt-2] == 0x0D)) {
				strcpy(rx_buf1,RxBuffer1);
				rx1=atoi(rx_buf1);
				printf("%s",rx_buf1);
				while(HAL_UART_GetState(&huart1) == HAL_UART_STATE_BUSY_TX);
				Uart1_Rx_Cnt = 0;
				memset(RxBuffer1,0x00,sizeof(RxBuffer1));
			}
		}
		HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer1, 1);
	}
	if(huart==&huart2){
		if(Uart2_Rx_Cnt >= 255) {
			Uart2_Rx_Cnt = 0;
			memset(RxBuffer2,0x00,sizeof(RxBuffer2));
			HAL_UART_Transmit(&huart2, (uint8_t *)"OVERFLOW!\r\n", 10,0xFFFF);
		}
		else{
			RxBuffer2[Uart2_Rx_Cnt++] = aRxBuffer2;
//			if((RxBuffer2[Uart2_Rx_Cnt-1] == 0x0A)&&(RxBuffer2[Uart2_Rx_Cnt-2] == 0x0D)) {
				strcpy(rx_buf2,RxBuffer2);
				rx2=atoi(rx_buf2);
				printf("%s",rx_buf2);
				while(HAL_UART_GetState(&huart2) == HAL_UART_STATE_BUSY_TX);
				Uart2_Rx_Cnt = 0;
				memset(RxBuffer2,0x00,sizeof(RxBuffer2));
//			}
		}
		HAL_UART_Receive_IT(&huart2, (uint8_t *)&aRxBuffer2, 1);
	}
}

3、控制灯闪烁

  /* USER CODE BEGIN WHILE */
  while (1)
  {
	  if(rx1 == 1||rx2 == 1) HAL_GPIO_TogglePin(GPIOC,LED_Pin);
	  HAL_Delay(200);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

六、源码提供

【免费】JDY-31蓝牙SPP串口透传模块手册

蓝牙串口模块JDY-31工程

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值