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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> ESP32 Bluedroid蓝牙main device API函数介绍 -> 正文阅读

[嵌入式]ESP32 Bluedroid蓝牙main device API函数介绍

零. 声明


本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:

第一篇:ESP-IDF基本介绍,主要会涉及模组,芯片,开发板的介绍,环境搭建,程序编译下载,启动流程等一些基本的操作,让你对ESP-IDF开发有一个总体的认识,比我们后续学习打下基础!

第二篇:ESP32-IDF外设驱动介绍,主要会根据esp-idf现有的driver,提供各个外设的驱动,比如LED,OLED,SPI LCD,TOUCH,红外,Codec ic等等,在这一篇中,我们不仅仅来做外设驱动,还会对常用的外设总线做一个介绍,让大家知其然又知其所以然!

第三篇:目前比较火热的GUI LVGL介绍,主要会设计LVGL7.1,LVGL8的移植介绍,并且也会介绍各个组件,知道原理后,最后,我们会推出一款组态软件来构建我们的GUI,来提升我们的效率!

第四篇:ESP32-蓝牙,熟悉我的,应该都知道,我即使从事蓝牙协议栈的开发的,所以这个是我们独有的优势,在这一篇章,我们会提供不仅仅是蓝牙应用方法的知识,也会应用结合蓝牙底层协议栈的理论,让你彻底从上到下打通蓝牙任督二脉!

第五篇:Wi-Fi介绍,熟悉我的,应该也知道,我们也做过一款sdio wifi的驱动教程板子,所以在wifi这方面我们也是有独有的优势,在这一篇章,我们同样不仅仅提供Wi-Fi应用方面的知识,也会结合底层理论,让你对Wi-Fi有一个清晰的认知!

第六篇:FreeRTOS介绍,主要介绍下FreeRTOS各个功能(任务管理/消息队列/信号量/互斥量/事件/软件定时器/任务通知/内存管理/中断管理等)的使用以及运作机制。

第七篇:Arduino介绍,主要介绍ESP32 Arduino的基本操作(环境搭建,烧录,下载等开发流程),以及介绍下基于Arduino的外设,蓝牙,wifi的使用。

第八篇:Demo,此篇章是融会贯通以上章节,做一些综合性的demo,让你巩固以上篇章的同时,还能学到实际项目!!

另外,我们的教程包括但是不局限于以上篇章,为了给你一个更好的导航,以下信息尤其重要,请详细查看!!

------------------------------------------------------------------------------------------------------------------------------------------

购买开发板(点击我)

文档目录(点击我)

Github代码仓库(点击我)

蓝牙交流扣扣群:539357317

微信公众号↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

------------------------------------------------------------------------------------------------------------------------------------------

一.介绍

之前我们看过我们写的文章,ESP32可以用Bluedroid跟Nimble作为蓝牙Host,如下图所示:

我们本章主要讲解Bluedroid Host的common API!官网连接为:

BT MAIN API - ESP32 - — ESP-IDF 编程指南 v4.4.1 文档

BT DEVICE APIs - ESP32 - — ESP-IDF 编程指南 v4.4.1 文档

二.Bluedtooth Main

在这个头文件中:bt/host/bluedroid/api/include/api/esp_bt_main.h

esp_bluedroid_status_t esp_bluedroid_get_status(void)

作用:获取蓝牙Host的状态

返回值:esp_bluedroid_status_t

typedef enum {

ESP_BLUEDROID_STATUS_UNINITIALIZED = 0, /*!< Bluetooth not initialized */

ESP_BLUEDROID_STATUS_INITIALIZED, /*!< Bluetooth initialized but not enabled */

ESP_BLUEDROID_STATUS_ENABLED /*!< Bluetooth initialized and enabled */

} esp_bluedroid_status_t;

esp_err_t esp_bluedroid_enable(void)

作用:Enable bt host bluedroid ,必须在esp_bluedroid_init之后调用

返回值:esp_err_t

typedef int esp_err_t;

/* Definitions for error constants. */

#define ESP_OK 0 /*!< esp_err_t value indicating success (no error) */

#define ESP_FAIL -1 /*!< Generic esp_err_t code indicating failure */

#define ESP_ERR_NO_MEM 0x101 /*!< Out of memory */

#define ESP_ERR_INVALID_ARG 0x102 /*!< Invalid argument */

#define ESP_ERR_INVALID_STATE 0x103 /*!< Invalid state */

#define ESP_ERR_INVALID_SIZE 0x104 /*!< Invalid size */

#define ESP_ERR_NOT_FOUND 0x105 /*!< Requested resource not found */

#define ESP_ERR_NOT_SUPPORTED 0x106 /*!< Operation or feature not supported */

#define ESP_ERR_TIMEOUT 0x107 /*!< Operation timed out */

#define ESP_ERR_INVALID_RESPONSE 0x108 /*!< Received response was invalid */

#define ESP_ERR_INVALID_CRC 0x109 /*!< CRC or checksum was invalid */

#define ESP_ERR_INVALID_VERSION 0x10A /*!< Version was invalid */

#define ESP_ERR_INVALID_MAC 0x10B /*!< MAC address was invalid */

#define ESP_ERR_WIFI_BASE 0x3000 /*!< Starting number of WiFi error codes */

#define ESP_ERR_MESH_BASE 0x4000 /*!< Starting number of MESH error codes */

#define ESP_ERR_FLASH_BASE 0x6000 /*!< Starting number of flash error codes */

#define ESP_ERR_HW_CRYPTO_BASE 0xc000 /*!< Starting number of HW cryptography module error codes */

esp_err_t esp_bluedroid_disable(void)

作用:Disable bt host bluedroid,必须在esp_bluedroid_deinit之前调用

esp_err_t esp_bluedroid_init(void)

作用:Init bt host bluedroid,必须在所有蓝牙操作之前调用

esp_err_t esp_bluedroid_deinit(void)

作用:Deinit bt host bluedroid,必须在所有蓝牙操作之后调用

整个流程如下:

其实我们做enable很简单,只是调用几个API就行,下面我们来展示下代码(附带之前小节controller API的代码)

ESP_LOGI(DEBUG_TAG, "Hello everybody,This is wireless link classical bluetooth hfp hf role project\n");
    esp_err_t ret = nvs_flash_init();
    if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND)
    {
        ESP_ERROR_CHECK(nvs_flash_erase());
        ret = nvs_flash_init();
    }
    ESP_ERROR_CHECK( ret );

    esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
    if ((ret = esp_bt_controller_init(&bt_cfg)) != ESP_OK)
    {
        ESP_LOGE(DEBUG_TAG, "%s initialize controller failed: %s\n", __func__, esp_err_to_name(ret));
        return;
    }

    if ((ret = esp_bt_controller_enable(ESP_BT_MODE_BTDM)) != ESP_OK)
    {
        ESP_LOGE(DEBUG_TAG, "%s enable controller failed: %s\n", __func__, esp_err_to_name(ret));
        return;
    }

    ESP_LOGI(DEBUG_TAG, "Controller enable success\n");

    if ((ret = esp_bluedroid_init()) != ESP_OK) 
	{
        ESP_LOGE(DEBUG_TAG, "%s initialize bluedroid failed: %s\n", __func__, esp_err_to_name(ret));
        return;
    }

    if ((ret = esp_bluedroid_enable()) != ESP_OK) 
	{
        ESP_LOGE(DEBUG_TAG, "%s enable bluedroid failed: %s\n", __func__, esp_err_to_name(ret));
        return;
    }

三.Bluedtoot Device

在这个头文件中:bt/host/bluedroid/api/include/api/esp_bt_device.h

const uint8_t *esp_bt_dev_get_address(void)

作用:获取Local的蓝牙地址,必须在esp_bluedroid_enable后使用

返回值:const uint8_t *

6byte的蓝牙地址

esp_err_t esp_bt_dev_set_device_name(const char *name)

作用:设置Local的蓝牙地址,必须在esp_bluedroid_enable之后调用

参数1:const char *name

蓝牙名称

返回值:esp_err_t

  • ESP_OK : Succeed
  • ESP_ERR_INVALID_ARG : if name is NULL pointer or empty, or string length out of limit
  • ESP_ERR_INVALID_STATE : if bluetooth stack is not yet enabled
  • ESP_FAIL : others

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章           查看所有文章
加:2022-05-05 11:35:52  更:2022-05-05 11:40:21 
 
开发: 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年11日历 -2024/11/26 3:42:03-

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