蓝牙CC2541的串口通讯

2023-05-16

协议栈版本是CC254x-1.3.2
TI把串口线管的东西封装在协议栈的一个NPI的文件夹中npi.c
下面是npi.c中的初始化函数

void NPI_InitTransport( npiCBack_t npiCBack )//初始化串口通讯
{
  halUARTCfg_t uartConfig;
  // configure UART
  uartConfig.configured           = TRUE;
  uartConfig.baudRate             = NPI_UART_BR;//波特率
  uartConfig.flowControl          = NPI_UART_FC;//进去改成FALSE,即关闭流控
  uartConfig.flowControlThreshold = NPI_UART_FC_THRESHOLD;
  uartConfig.rx.maxBufSize        = NPI_UART_RX_BUF_SIZE;
  uartConfig.tx.maxBufSize        = NPI_UART_TX_BUF_SIZE;
  uartConfig.idleTimeout          = NPI_UART_IDLE_TIMEOUT;
  uartConfig.intEnable            = NPI_UART_INT_ENABLE;
  uartConfig.callBackFunc         = (halUARTCBack_t)npiCBack;
  // start UART
  // Note: Assumes no issue opening UART port.
  (void)HalUARTOpen( NPI_UART_PORT, &uartConfig );
  return;
}

然后再 simpleBLEPeripheral.c文件中包含“npi.h”文件
在SimpleBLEPeripheral_Init函数中初始化串口通讯,
即调用NPI_InitTransport( NpiSerialCallback);
这里回调了一个函数NpiSerialCallback,这个函数要在 simpleBLEPeripheral.c文件中声明并实现。
如下:

//先声明一个回调函数
static void NpiSerialCallback( uint8 port, uint8 events );
//这是一个回调函数,实现了读写串口数据
static void NpiSerialCallback( uint8 port, uint8 events )
{
  (void)port;
  uint8 numBytes = 0;
  uint8 buf[128];

  if (events & HAL_UART_RX_TIMEOUT)   //串口有数据
  {
    numBytes = NPI_RxBufLen();       //读出串口缓冲区有多少字节
    if(numBytes)
    {
      //从串口缓冲区读出numBytes字节数据
      NPI_ReadTransport(buf,numBytes);    
      //把串口接收到的数据再打印出来
      NPI_WriteTransport(buf,numBytes);
    }
  }
}

最后设置预处理程序,
修改这两个地方,HAL_UART=TRUE开启串口

三步就可以实现串口通讯了

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

蓝牙CC2541的串口通讯 的相关文章

  • 蓝牙CC2541的串口通讯

    协议栈版本是CC254x 1 3 2 TI把串口线管的东西封装在协议栈的一个NPI的文件夹中npi c 下面是npi c中的初始化函数 void NPI InitTransport npiCBack t npiCBack 初始化串口通讯 h
  • MANIFOLD 2-G开发 之 利用ROS话题编程实现UART1串口通讯

    目录 MANIFOLD 2 G开发笔记1 项目描述2 遇到的问题3 解决方案4 示例代码5 注意事项6 资源附件6 运行与调试 MANIFOLD 2 G开发笔记 本博客内容将记录MANIFOLD 2 G 开发过程中遇到的问题及解决方案 xf
  • ros串口通讯(读取串口数据)

    ros串口通讯是非常重要的通讯手段 xff0c 通常跟下位机或者各种usb口外设都是通过串口进行通讯的 那么我们跟着教程来学习一下如何读取手机通过无线串口发送给电脑的数据 这里我通过一个usb ttl工具将蓝牙连接到电脑上 xff0c 然后
  • UART串口通讯

    UART代表通用异步接收器 发送器也称为串口通讯 xff0c 它不像SPI和I2C这样的通信协议 xff0c 而是微控制器中的物理电路或独立的IC UART的主要目的是发送和接收串行数据 xff0c 其最好的优点是它仅使用两条线在设备之间传
  • 第20章 USART—串口通讯—零死角玩转STM32-F429系列

    第20章 USART 串口通讯 全套 200 集视频教程和 1000 页 PDF 教程请到秉火论坛下载 xff1a www firebbs cn 野火视频教程优酷观看网址 xff1a http i youku com firege 本章参考
  • ROS serial串口通讯

    目录 ROS serial 串口通讯安装基本使用代码示例 Reference ROS serial 串口通讯 安装 sudo apt get install ros kinetic serial 基本使用 代码示例 include lt r
  • STM32CubeMX串口通讯

    串口的简单介绍 RS 232与TTL 根据通讯使用的电平标准不同 xff0c 串口通讯可分为 TTL 标准及 RS 232 标准 而STM32的串口是TTL电平标准的 如果需要使用到RS 232则需要一个电平转换芯片 单工通信 半双工通信和
  • STM32CubeMX系列|串口通讯

    串口通讯 1 串口简介 在串行通信中 xff0c 一个字符一个字符地传输 xff0c 每个字符一位一位地传输 xff0c 并且传输一个字符时 xff0c 总是以 起始位 开始 xff0c 以 停止位 结束 在进行传输之前 xff0c 双方一
  • 串口通讯UART/RS232/RS485/RS-422笔记

    串口通讯详解笔记 串口通讯概述串口通讯传输数据帧的结构UARTRS232RS485RS 422RS 232 RS 422和RS 485的主要区别 xff08 重要 xff09 串口通讯概述 串口通讯是指数据按位 xff08 bit xff0
  • 【STM32】 STM32 F4 串口通讯

    概念 串口 xff0c 即串行接口 xff0c 是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去 xff0c 同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件 串口通信 xff08 Serial Commu
  • 四、stm32-USART串口通讯(重定向、接发通信、控制LED亮灭)

    目录 一 固件库模板二 准备资料三 STM32串口通讯1 STM32的USART 简介2 USART 功能框图2 1 数据寄存器2 2 控制器2 3 发送器2 4 接收器2 5 小数波特率生成 3 校验控制3 1 中断控制 4 USART
  • 基于STM32的串口通讯

    基于STM32的串口通讯 设备之间通信的方式 串行通信一般是以帧格式传输数据 xff0c 即一帧一帧的传输 xff0c 每一帧都含有起始信号 xff0c 数据信息以及停止信息等 并行通信 数据各个位同时传输 xff0c 速度快 xff0c
  • CC2541低功耗的实现方法

    转自 xff1a http blog csdn net mzy202 article details 42091537 CC2541 CC2540 实现超低功耗是非常重要的 xff1a 我们来总结一下实现方法 xff1a 1 xff0c 有
  • STM32串口通讯(接收完成一整个数据帧再将数据发送出去)

    STM32串口通信可以分为查询 xff0c 中断 xff0c DMA三种方式进行通讯 xff0c 本文主要就中断的方式进行讲解 采用中断的方式进行通讯时 xff0c 可以使能接受非空中断 xff08 RXNE xff09 xff0c 当接收
  • 串口通讯(USART)

    对于通讯协议 xff0c 我们也以分层的方式来理解 xff0c 最基本的是把它分为物理层和协议层 物理层规定通讯系统中具有机械 电子功能部分的特性 xff0c 确保原始数据在物理媒体的传输 协议层主要规定通讯逻辑 xff0c 统一收发双方的
  • NX串口通讯windows

    我用windows与NX进行通讯 xff0c 用的线是CH340下载线 USB端连接windows xff0c 绿色的TXD连接NX的10号 RXD xff0c 白色的RXD连接NX的8号 TXD 目录 1 windows端 2 NX端 2
  • DSPF28335 SCI FIFO串口通讯

    在工作过程中 xff0c 通过串口进行上位机与控制器之间进行数据的传输 xff0c 标准的串口通讯容易造成数据的丢失和内存堆满的现象 xff0c 便使用SCI中的FIFO对数据进行中断处理 一 串口通信基本知识 F28335 处理器共有 3
  • stm32f103串口接收队列,DMA循环模式+空闲中断

    串口通讯最主要的就是要不丢数据 不丢帧 基本设想就是建立一个大的串口缓冲区 串口接收到的数据使用循环队列的方式全部往这个缓冲区放 不过这种方式需要把串口缓冲区弄大一点 防止数据覆盖 在stm32中 利用DMA 空闲中断很容易做到这一点 只需
  • 【BLE】-CC2541 OSAL操作系统抽象层应用程序接口API介绍

    参考源source 简介 目的 本文档的目的是定义OS抽象层 OSAL 的API 这个API适用于TI协议栈软件组的产品 例如Z 堆栈 RemoTI 和BLE 适用范围 该文件列举了由OSAL提供的所有函数调用 详细地说明了所有函数调用 方
  • java串口通讯详解

    序言 说到开源 恐怕很少有人不挑大指称赞 学生通过开源代码学到了知识 程序员通过开源类库获得了别人的成功经验及能够按时完成手头的工程 商家通过开源软件赚到了钱 总之是皆大欢喜 然而开源软件或类库的首要缺点就是大多缺乏详细的说明文档和使用的例

随机推荐

  • debian下添加环境变量

    1 添加临时环境变量方法 xff1a export PATH 61 PATH usr local 你的环境变量路径 2 添加永久环境变量 cd 打开文件 gedit bashrc 在 bashrc文件末尾添加如下 xff1a PATH 61
  • STM32F407学习笔记——GPIO_按键控制LED亮灭

    include lt stm32f4xx h gt include 34 stm32f4xx conf h 34 include 34 delay h 34 GPIO TypeDef io led 61 GPIOC 定义一个指向结构体 sp
  • ARM 安装中文输入法

    TX2 为嵌入式开发板 xff0c 系统架构为ARM xff0c 普通的PC上的Linux系统安装中文输入法的方法不适用 xff0c 所以这里提供ARM上的中文输入法的安装方法 步骤1 xff1a 打开终端 xff0c 输入以下命令 sud
  • ElasticSearch基础、分布式架构及读写流程

    ElasticSearch 文章目录 ElasticSearch基础概念IndexTypeMapperDocumentField 读取中的概念getqueryfilter DSL 分布式架构名词概念primary shardreplica
  • Deepin下apt安装node.js和npm

    写在前面 折腾了一下午 xff0c 发现怎么装node js和npm都不能安装上 xff0c 也不能使用命令 xff0c 开始以为是官方源版本太老 xff0c 后来换了阿里源也是一样 root 64 baike PC home baike
  • windows下,vscode配合pyenv-win使用python虚拟环境

    vscode安装python插件 安装pyenv win xff0c 推荐使用chocolatey安装 pyenv安装需要的python版本 xff0c 安装后需要pyenv rehash 创建工程文件夹 在文件夹中输入 pyenv loc
  • 关于独立版ASIO库在不同编译器下的几个使用问题

    window平台 一 在VS2019中使用 VS2019 使用微软自己的MSVC编译器 xff0c 只需要在工程项目属性中 加入2个预编译宏定义项 xff1a WIN32 WINNT span class token operator 61
  • Vue系列之单文件组件

    文章目录 前言一 什么是单文件组件 xff1f 二 单文件组件的结构三 如何引入并使用单文件组件1 B组件中需导出 xff08 export xff09 2 A组件中需导入并局部注册B xff08 import xff09 前言 Vue应用
  • 记录一个js自动批量导入模块的方法require.context()

    应用场景 在vuex中分模块管理全局数据时 xff0c 不用手动一个一个的导出 span class token keyword const span files span class token operator 61 span requ
  • 可截取签名

    可截取签名 定义 可截取签名 xff08 Content Extraction Signature CES xff09 的概念出现于 2001 年 xff0c 由一位名叫 Steinfeld 的学者提出1 可截取签名的特点在于 xff0c
  • 关于最新版win10下,vscode不能离线启动的解决方案

    问题描述 xff1a 双击vscode图标 xff0c 发现程序不能启动 xff0c 使用cmd输入code后提示 xff1a dns js 246 this handle 61 new ChannelWrap Error EFILE at
  • Docker Desktop for Windows(WSL 2 方式)数据卷位置和访问

    Docker Desktop for Windows 运行容器后发现 xff0c 挂载的卷并不是windows本地的文件 xff0c 后来发现在wsl2方式下 xff0c windows上的docker是运行在Windows10中的linu
  • windows10 安装 docker 基于 WSL 2

    Docker Desktop安装 下载Docker Desktop 下载 Docker Desktop Stable 2 3 0 2 或更高版本 https hub docker com editions community docker
  • frp内网穿透原理及配置应用

    1 Frp介绍 frp 是一个专注于内网穿透的高性能的反向代理应用 xff0c 支持 TCP UDP HTTP HTTPS 等多种协议 可以将内网服务以安全 便捷的方式通过具有公网 IP 节点的中转暴露到公网 frp 项目官网 https
  • mysql导出excel表格表结构

    里面的字段 xff0c 根据information schema COLUMNS表 SELECT COLUMN NAME 列名 COLUMN TYPE 数据类型 DATA TYPE 字段类型 IFNULL NUMERIC PRECISION
  • 使用Docker-compose安装NextCloud,并部署Collabora作为office服务

    使用Docker compose安装NextCloud xff0c 并部署Collabora作为office服务 安装Docker和docker compose 使用docker compose可以更快速的构建nextcloud需要的各个服
  • docker 部署 joplin server进行文档同步

    Joplin 是一个开源的笔记工具 xff0c 拥有 Windows macOS Linux iOS Android Terminal 版本的客户端 xff0c 可惜暂时还没有web版本的 多端同步功能是笔记工具最重要的功能 只有实现了多端
  • frappe_docker 开发模式初始化问题

    frappe 网络问题导致初始化失败 frappe 以docker的方式部署开发环境教程如下 xff1a frappe docker development at main frappe frappe docker GitHub 1 clo
  • 我的第一篇博客--感谢google的StudyJams活动

    感谢google的StudyJams活动推动我完成第一篇博客 技术上不是很精通 xff0c 说以从不敢在外面瞎说 在StudyJams小捏捏的催促下终于来丢人了 现在在研究Android xff0c ZigBee xff0c
  • 蓝牙CC2541的串口通讯

    协议栈版本是CC254x 1 3 2 TI把串口线管的东西封装在协议栈的一个NPI的文件夹中npi c 下面是npi c中的初始化函数 void NPI InitTransport npiCBack t npiCBack 初始化串口通讯 h