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

2023-11-10

目录

前言

 一、蓝牙模块简介

 二、代码部分详解

三、总结

题外话:


前言

这次博文还是主要以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之路固然辛苦,但要是坚持下来了,那不是很酷?哈哈哈

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带你学习STM32f1之蓝牙控制LED(简单入手,含主代码) 的相关文章

  • 在线智能抠图软件有哪些?证件照背景颜色更换不求人

    2024年上半年全国计算机等级考试 NCRE 报名开始啦 不出意外 这次报名仍然是需要提交证件照 具体要求如下 本人近期正面免冠 白色背景 彩色证件照 不得使用生活照 美颜照 最小像素高宽为192x144 最小成像区高宽为48mmx33mm
  • Win11熄屏,自动断开WiFi解决方法

    一 前言 由于 我需要使用自己的电脑 远程连接服务器跑代码 电脑息屏之后 wifi断开 代码也就自动停止了 非常生气 二 解决办法 网上的办法很多都是win10 而且别人的都有电源管理 而我的没有 下面是别人的 这是我的 就是没有电源管理
  • 物联网项目分享 Stm32单片机的音乐播放器设计 - 物联网 嵌入式

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 设计原理 5 部分核心代码 6 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求 这两年不断有学弟学妹告诉
  • 机器配音在线工具有哪些? 让你的语音合成更自然

    你是不是也想成为一名大博主 随着现在的互联网时代蓬勃发展 出现了一批又一批的网红 在家里带带货 拍拍视频就能赚大钱 越来越多的人朝向网络世界进击 那么这些大博主制作一个爆款视频 必不可少的就是配音啦 但是其实很多博主用的并不是真人配音 而是
  • 【性能测试入门】:压力测试概念!

    压力测试可以验证软件应用程序的稳定性和可靠性 压力测试的目标是评估软件在极端负载条件下的鲁棒性和错误处理能力 并确保软件在紧急情况下不会崩溃 它甚至可以进行超出软件正常工作条件的测试 并评估软件在极端条件下的工作方式 在软件工程中 压力测试
  • 处理不舒服的同事关系:实用建议与技巧

    处理不舒服的同事关系 实用建议与技巧 在工作中 我们难免会遇到一些与同事关系不和谐的情况 这些不舒服的关系可能会影响到我们的工作情绪和效率 那么 如何处理这些不舒服的同事关系呢 本文将为你提供一些实用的建议 一 保持冷静和理智 在处理同事关
  • 考HCIE要多久 | HCIE学员经验分享

    大家好 我是讯方 智汇云校的学员林同学 来自深圳信息职业技术学院的一名22届的通信专业的学生 通过近半年在云校的学习 我在年底成功考取了云服务方向的HCIE证书 想把我的一些考证心得分享给正在备考的小伙伴们 刚开始了解到ICT行业是在学校的
  • 驾驭远程工作:提高工作效率与灵活性的秘诀

    随着科技的飞速发展 远程工作已成为越来越多企业和员工的选择 这种工作模式不仅为员工提供了更大的灵活性 也为提高工作效率创造了新的可能 本文将深入探讨如何通过远程工作提高工作效率和灵活性 一 明确目标与计划 在远程工作中 明确的目标和计划至关
  • 图片翻译在线怎么用?分享翻译软件给你

    作为一个不擅长学习语言的人 我真是要被生活中似乎无处不在的英语搞蒙了 想象一下 你正在逛商场 想买一瓶洗护用品 拿起来却看到商品上满是看不懂英文说明 是不是一头雾水 或者 你在浏览社交媒体时 看到一张充满英文的趣味图片 却因为语言障碍而错过
  • 挖掘知识的宝藏:如何利用在线资源提升个人技能

    在这个信息爆炸的时代 互联网已经成为我们获取知识 提升技能的重要途径 无论是学习编程 提高语言能力 还是了解新的行业趋势 网络资源都为我们提供了无限可能 本文将探讨如何有效利用在线资源进行自我提升 一 选择合适的在线学习平台 首先 我们需要
  • 会议设备:提升会议体验与效率的关键

    在当今高度信息化的社会 会议已成为企业 机构和团队之间交流与合作的重要方式 而会议设备的选择与使用 对于提升会议的体验与效率具有举足轻重的地位 本文将详细探讨会议设备的重要性 以及如何选择和使用合适的会议设备 以实现高效 顺畅的沟通 首先
  • 储存设备的进化与发展:从传统到现代的飞跃

    随着科技的飞速发展 储存设备作为信息时代的基石 经历了翻天覆地的变化 从最早的机械硬盘到现代的固态硬盘和云存储 储存设备的进化与发展不仅提升了数据存储的速度和容量 还极大地改变了我们的工作和生活方式 本文将带您回顾储存设备的进化历程 并探讨
  • 哪里有视频压缩软件免费版在线使用?轻松压缩视频大小

    作为一个文件管理员 我常常需要处理大量的视频文件 有时候 视频文件过大给传输 存储带来了诸多不便 遇到这种情况 很多人就会选择使用视频压缩软件来减小文件大小 不过一些小伙伴不清楚视频压缩软件app 电脑软件 网页有哪些 接下来我们将从功能
  • 特殊寄存器

    特殊寄存器 文章目录 前言 一 背景 二 2 1 2 2 总结 前言 前期疑问 STM32特殊寄存器到底是什么 特殊寄存器怎么查看和调试代码 本文目标 记录和理解特殊寄存器 一 背景 最近在看ucosIII文章是 里面提到特殊寄存器 这就进
  • 新画图不好用?『 图层困扰?』『 剪切板拷贝失败?』旧版画图软件yyds

    樊梓慕 个人主页 个人专栏 C语言
  • 嵌入式 C++11 代码 — 我需要 volatile 吗?

    采用 Cortex M3 MCU STM32F1 的嵌入式设备 它具有嵌入式闪存 64K MCU固件可以在运行时重新编程闪存扇区 这是由闪存控制器 FMC 寄存器完成的 所以它不像a b那么简单 FMC 获取缓冲区指针并将数据刻录到某个闪存
  • 使用 STM32 USB 设备库将闪存作为大容量存储设备

    我的板上有这个闪存IC 它连接到我的STM32F04 ARM处理器 处理器的USB端口可供用户使用 我希望我的闪存在通过 USB 连接到 PC 时被检测为存储设备 作为第一步 我在程序中将 USB 类定义为 MSC 效果很好 因为当我将主板
  • 哪些变量类型/大小在 STM32 微控制器上是原子的?

    以下是 STM32 微控制器上的数据类型 http www keil com support man docs armcc armcc chr1359125009502 htm http www keil com support man d
  • 当端点和 PMA 地址均更改时,CubeMX 生成的 USB HID 设备发送错误数据

    我正在调试我正在创建的复合设备的问题 并在新生成的仅 CubeMX 代码中重新创建了该问题 以使其更容易解决 我添加了少量代码main 让我发送 USB HID 鼠标点击 并在按下蓝色按钮时使 LED 闪烁 uint8 t click re
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能

随机推荐

  • eMMC简介

    eMMC是embedded MultiMediaCard的简称 MultiMediaCard 即MMC 是一种闪存卡 Flash Memory Card 标准 它定义了MMC的架构以及访问Flash Memory的接口和协议 而eMMC则是
  • 全屏dialog

    下面是iOS里面做全屏Dialog的代码 调用show时Dialog会覆盖当前的controller 全屏显示 可以用来做蒙板效果 欢迎转载 转载请注明出处 http blog csdn net tadican article detail
  • Python中的装饰器是什么?装饰器是如何工作的?

    Python很早就引入了装饰器 在PEP 318中 作为一种简化函数和方法定义方式的机制 这些函数和方法在初始定义之后必须进行修改 这样做的最初动机之一是 使用classmethod和staticmethod等函数来转换方法的原始定义 但是
  • hibernate映射继承关系(一):一张表对应一整棵类继承树

    翻译 hibernate映射继承关系 一 一张表对应一整棵类继承树 2人收藏此文章 我要收藏发表于1年前 2012 05 22 16 34 已有 482次阅读 共 0个评论 英文原址 网上这个主题的文章不在少数 这个系列的文章的部分价值在于
  • 【100%通过率 】【华为OD机试 c++】最多等和不相交连续子序列【 2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 最多等和不相交连续子序列 给定一个数组 我们称其中连续的元素为连续子序列 称这些元素的和为连续子序列的和 数组中可能存在几组连续子序列 组内的连
  • NexT主题进阶

    NexT 是 Hexo 框架中最为流行的主题之一 精于心 简于形 NexT 支持多种常见第三方服务 使用 第三方服务 来扩展站点的功能 除了 Markdown 支持的语法之外 NexT 借助 Hexo 提供的 tag 插件 为您提供在书写文
  • EDK2安装教程

    1 1基础搭建 相关文件请自行百度下载 1 安装VS2015到C盘 请勿修改默认目录 否则需要修改C edk2 Conf tools def txt 2 如安装包所示 安装python2 7到C盘并设置环境变量如下 3 将nasm解压到C
  • JavaScript-二分法详解

    文章目录 二分法 二分查找 非递归实现 二分查找 递归实现 二分排序 复杂度分析 推荐文章 经典例题 力扣习题 二分法 二分法又可以被称为二分查找 它描述了在有序集合中搜索特定值的过程 广义的二分查找是将问题的规模尽可能的缩小到原有的一半
  • win10,创建新环境并安装pytorch-gpu=1.7.0版本

    之前装过gpu版本tensorflow 包含cudatoolkit 10 1 创建新环境装gpu版本pytorch时考虑是否再装cudatoolkit 以下是没有再装cudatoolkit情况下 目前正常 文章目录 Anaconda 创建新
  • 图注意力网络(Graph Attention Network, GAT) 模型解读与代码实现(tensorflow2.0)

    前面的文章 我们讲解了图神经网络三剑客GCN GraphSAGE GAT中的两个 图卷积神经网络 GCN 理解与tensorflow2 0代码实现 GraphSAGE 模型解读与tensorflow2 0代码实现 本要讲的是GAT Grap
  • 解决Intellij IDEA maven 自动设置JDK为JDK1.5

    在idea中创建maven项目 每次更新或重新载入maven项目后 都会重新变成JDK1 5 就算手动设置maven项目或者模块JDK1 8 刷新后还是会变为JDK1 5 这是由于创建项目时没有指定jdk版本 而maven的默认jdk版本为
  • Oracle instr函数和sign函数详解

    1 instr 函数 俗称 字符查找函数 格式一 instr string1 string2 instr 源字符串 目标字符串 格式二 instr string1 string2 start position nth appearance
  • 目标检测YOLO实战应用案例100讲-基于改进YOLOv5的口罩人脸检测

    目录 前言 国内外研究现状 目标检测研究发展 国内外口罩人脸检测研究现状
  • Spring Swagger在nginx 二级url 无法正常使用问题解决

    问题描述 测试环境用了nginx做二级url做映射 但swagger的 http www xxx com 二级url v2 JSON里面的host地址还是一级目录 不自动对应nginx做了映射的二级url 因此使用swagger ui ht
  • CENTOS 下service network restart失败最全解决方案

    经常会有人在centOS 7下更改完静态ip后发现network服务重启不了 翻遍了网络 尝试了各种方法 终于解决了 现把各种解决方法归纳整理 希望能让大家少走点歪路 首先看问题 执行service network restart命令后出现
  • 五个温度带的分界线_寒带与温带的分界线是什么啊

    寒带与温带的分界线是什么啊2020 06 01 09 19 44文 钟诗贺 温带与寒带的分界线是 极圈 纬度 66 5 度 地球五带中 热带与温带的分界线是回归线 南北回归线 纬度是23 5度 南北纬23 5度 温带与寒带的分界线是极圈 南
  • 【ISP】光圈、焦距与景深的关系

    最直接的图 1 弥散圆 在焦点前后 光线开始聚集和扩散 点的影象变成模糊的 形成一个扩大的圆 这个圆就叫做弥散圆 现实当中 观赏拍摄的影象是以某种方式 比如投影 放大成照片等等 来观察的 人的肉眼所感受到的影象与放大倍率 投影距离及观看距离
  • ChatGPT4使用体验

    GPT火了很久 被各种媒体吹上了天 但是因为工作原因 一直没有机会去真正的尝试 最近终于有了一天的空闲时间 就想着好好看看GPT当前到底能干啥 如下是我针对不同类别 分别提出不同问题 GPT给的回答 如果有兴趣可以看看 1 定性问题 对于一
  • pandas.read_csv参数详解

    pandas read csv参数整理 读取CSV 逗号分割 文件到DataFrame 也支持文件的部分导入和选择迭代 更多帮助参见 http pandas pydata org pandas docs stable io html 参数
  • 带你学习STM32f1之蓝牙控制LED(简单入手,含主代码)

    目录 前言 一 蓝牙模块简介 二 代码部分详解 三 总结 题外话 前言 这次博文还是主要以STM32f103zet6小系统板来操作 依旧使用库函数入手 寄存器版本可能要到后续再做更新 因为我才刚开始入手寄存器不久 不是很熟练 还在熟悉哈哈