IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 带你学习STM32f1之蓝牙控制LED(简单入手,含主代码) -> 正文阅读

[嵌入式]带你学习STM32f1之蓝牙控制LED(简单入手,含主代码)

目录

前言

?一、蓝牙模块简介

?二、代码部分详解

三、总结

题外话:


前言

这次博文还是主要以STM32f103zet6小系统板来操作,依旧使用库函数入手,寄存器版本可能要到后续再做更新(因为我才刚开始入手寄存器不久,不是很熟练,还在熟悉哈哈),好的,言归正传,今天我们主要是来讲一下蓝牙通信

?

?

?一、蓝牙模块简介

关于蓝牙模块的使用相信大家在浏览众多博文中已经心中有数,关于它的指令使用部分,我们有时间再详细介绍介绍,另外在博客上也有许多文章介绍,大家可以学习学习,我也只是个小小搬运工,再把自己的理解写成一篇文章,希望能对大家有所帮助。

先看看它的模样吧

其中我们可以看到用到了四个接口,即RXD、TXD、VCC、GND

在这里RXD接单片机上串口的TXD,TXD接单片机上串口的RXD,VCC和GND就不用多说了吧哈哈

下面代码里面我接的是串口2,即PA2(TXD)和PA3(RXD)

然后介绍一下我们要使用到的工具:

1、单片机STM32f1系列板子,会控制LED灯(啰里啰嗦的我哈哈)

2、手机蓝牙软件(到应用市场搜索蓝牙串口即SPP)

3、蓝牙模块HC-05

接下来就直接上代码解释了

?

?二、代码部分详解

蓝牙代码部分:

#include "lanya.h"

u8 res;
void lanya_Init(void)
{
        
    GPIO_InitTypeDef GPIO_InitStrue;  
    USART_InitTypeDef USART_InitStrue;  
    NVIC_InitTypeDef NVIC_InitStrue;  
      
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);// 
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//   
     
    GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;  
    GPIO_InitStrue.GPIO_Pin=GPIO_Pin_2;  
    GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;  
    GPIO_Init(GPIOA,&GPIO_InitStrue); 
	
		GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;  
    GPIO_InitStrue.GPIO_Pin=GPIO_Pin_3;  
    GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;  
    GPIO_Init(GPIOA,&GPIO_InitStrue);
	
    USART_InitStrue.USART_BaudRate=9600;  //波特率设置9600,串口设置
    USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;  
    USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;  
    USART_InitStrue.USART_Parity=USART_Parity_No;  
    USART_InitStrue.USART_StopBits=USART_StopBits_1;  
    USART_InitStrue.USART_WordLength=USART_WordLength_8b;  
      
    USART_Init(USART2,&USART_InitStrue);
      
    USART_Cmd(USART2,ENABLE);     //
      
    USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//
      
    NVIC_InitStrue.NVIC_IRQChannel=USART2_IRQn;  
    NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;  
    NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=0;  
    NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;  
    NVIC_Init(&NVIC_InitStrue);  
      
}  
  
void USART2_IRQHandler(void)  
{  

     if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET)  
 {  
     res= USART_ReceiveData(USART2);   //接收数据给res
//     USART_SendData(USART2,res);    
  }  
}

这里主要还是初始化串口,即蓝牙初始化,后面又开启串口2中断接受数据吗,这里因为我采用了串口2,所以并没有开启发送到电脑的串口助手上,我们仅通过与手机软件的互联,这也是我们通过手机端来控制LED的亮灭,进而实现其他高阶操作。

头文件就单纯声明了初始化函数

接下来就是主函数了

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "lanya.h"

extern u8 res;         
 int main(void)
 {   
 int i;
 char a[]="abcdefg";

 delay_init();
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 
 uart_init(115200);        
 LED_Init();            
 lanya_Init();
  while(1)
 {
  if(res=='0')
  {
   LED0=0;
   delay_ms(500);    
   for(i=0;i<7;i++)
   {
    USART_SendData(USART2, a[i]); 
  while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
		 
   }
   res=0;
  }
  if(res=='1')
  {
   LED1=0;
   delay_ms(50);
   res=0;
  }
	if(res=='2')
	{
		LED0=1;
        delay_ms(50);
		res=0;
	}
		if(res=='3')
	{
		LED1=1;
        delay_ms(50);
		res=0;
	}

 }  
}

写的有点乱,见谅见谅哈哈,修改乱了懒得改,这里就是在手机蓝牙串口上输入数字0、1、2、3来控制LED的亮灭,具体见下图:?

输入‘0’:

?

输入‘1’?

?

?那么学习到这你就会对蓝牙模块有了很简单的理解,就可以操作蓝牙来实现操作其他东西

三、总结

这一讲其实我也没有讲的特别详细,主要理解还不太深刻哈哈,但是尽量的去把自己的东西写出来来,希望对大家有所帮助。

?

有问题欢迎评论探讨交流,你的每一次评论,每一个点赞,还有您的关注,始终是我前进路上的不竭动力!

题外话:

挺喜欢彭于晏说的一句话:“我就是没有才华,所以才用命去拼!”

学习32之路固然辛苦,但要是坚持下来了,那不是很酷?哈哈哈

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-10 13:34:55  更:2021-08-10 13:35:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/12 9:44:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码