nRF52832的串口分为: UART 和 UARTE

UART

UART就是通常所指的串口,通用异步收发器,全双工通讯,其内部结构如下:

UARTE

UARTE是带有 EasyDMA 的UART,其内部结构如下:我们在上一节讲到过,nRF52832的 IO 口没有固定死哪个IO必须对应哪个外设,所以一般的 IO口都可以作为串口使用

UART的使用Demo

   //设置配置参数结构体const app_uart_comm_params_t comm_params ={RX_PIN_NUMBER,   //RX引脚设置,根据自己的硬件来,任意IO口都可以,注意避开特殊用途的就行TX_PIN_NUMBER,   //同 RXRTS_PIN_NUMBER,  //RTS 引脚和CTS 引脚,一般不使用流控,所以不会用,但是不确定是否能随意设置CTS_PIN_NUMBER,  //APP_UART_FLOW_CONTROL_DISABLED,/*库函数中的注释*< UART Hw Flow Control is disabled.禁止流控 */false,///**< Even parity if TRUE, no parity if FALSE. 奇偶校验,True有,..*/
#if defined (UART_PRESENT)NRF_UART_BAUDRATE_57600 //波特率
#elseNRF_UARTE_BAUDRATE_115200
#endif};//串口初始化(FIFO)
/**@brief Macro for safe initialization of the UART module in a single user instance when using*        a FIFO together with UART.** @param[in]   P_COMM_PARAMS   Pointer to a UART communication structure: app_uart_comm_params_t* @param[in]   RX_BUF_SIZE     Size of desired RX buffer, must be a power of 2 or ZERO (No FIFO).* @param[in]   TX_BUF_SIZE     Size of desired TX buffer, must be a power of 2 or ZERO (No FIFO).* @param[in]   EVT_HANDLER   Event handler function to be called when an event occurs in the*                              UART module.* @param[in]   IRQ_PRIO        IRQ priority, app_irq_priority_t, for the UART module irq handler.* @param[out]  ERR_CODE        The return value of the UART initialization function will be*                              written to this parameter.** @note Since this macro allocates a buffer and registers the module as a GPIOTE user when flow*       control is enabled, it must only be called once.*///串口初始化(FIFO)APP_UART_FIFO_INIT(&comm_params,UART_RX_BUF_SIZE,//RX缓冲区大小UART_TX_BUF_SIZE,uart_error_handle,//中断回调,错误处理APP_IRQ_PRIORITY_LOWEST,//中断优先级err_code);APP_ERROR_CHECK(err_code);

一般来说,使用 UARTE中断接收,初始化和 UART一样,在回调函数中处理接收发送操作,参考下面的例子,例子是参考清风教程中的代码修改的:

#define UART_TX_BUF_SIZE 256
#define UART_RX_BUF_SIZE 256
uint8_t commad[] = {0x55,0x44,0xA7,0x88};void UART_WriteData(uint8_t *pData, uint8_t dataLen)
{uint8_t i;for(i = 0; i < dataLen; i++){app_uart_put(pData[i]);}
}void uart_error_handle(app_uart_evt_t * p_event)
{uint8_t RX;if (p_event->evt_type == APP_UART_COMMUNICATION_ERROR){APP_ERROR_HANDLER(p_event->data.error_communication);}else if (p_event->evt_type == APP_UART_FIFO_ERROR){APP_ERROR_HANDLER(p_event->data.error_code);}else if (p_event->evt_type == APP_UART_DATA_READY){//从FIFO中读取数据  app_uart_get(&RX);  //串口输出数据  printf("%c",RX); UART_WriteData(commad,sizeof(commad)); }//串口发送完成事件,主函数找中的循环发送测试也会触发这个事件else if (p_event->evt_type == APP_UART_TX_EMPTY){nrf_gpio_pin_toggle(LED_1);       }
}int main(void)
{LEDS_CONFIGURE(LEDS_MASK);LEDS_OFF(LEDS_MASK);uint32_t err_code;const app_uart_comm_params_t comm_params ={RX_PIN_NUMBER,TX_PIN_NUMBER,RTS_PIN_NUMBER,CTS_PIN_NUMBER,APP_UART_FLOW_CONTROL_DISABLED,false,UART_BAUDRATE_BAUDRATE_Baud115200};APP_UART_FIFO_INIT(&comm_params,UART_RX_BUF_SIZE,UART_TX_BUF_SIZE,uart_error_handle,APP_IRQ_PRIORITY_LOW,err_code);APP_ERROR_CHECK(err_code);while (1){UART_WriteData(commad,sizeof(commad));//发送完成也会进入中断回调函数 nrf_delay_ms(1000); nrf_delay_ms(1000);}
}

nRF52832学习记录(二、外设之 串口)相关推荐

  1. MySQL学习记录 (二) ----- SQL数据查询语句(DQL)

    相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...

  2. Android动画学习记录二(属性动画、估值器和插值器)

    Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) 一.补间动画缺陷 二.属性 ...

  3. HTML学习记录二:html标签(五):超链接标签

    HTML学习记录二:html标签(五):超链接标签 一.超链接标签写法 二.超链接标签的属性 三.超链接的锚点用法 四.链接分类 一.超链接标签写法 在 HTML 标签中, 标签用于定义超链接,作用是 ...

  4. 大数据之spark学习记录二: Spark的安装与上手

    大数据之spark学习记录二: Spark的安装与上手 文章目录 大数据之spark学习记录二: Spark的安装与上手 Spark安装 本地模式 Standalone 模式 基本配置 步骤1: 复制 ...

  5. ESP32学习记录<三>串口通信

    ESP32学习记录<三>串口通信 文章目录 ESP32学习记录<三>串口通信 前言 一.通过串口打印出数据 1.初始化串口 2.打印数据 二.串口控制LED亮灭 1.接收串口发 ...

  6. [大数据技术与应用省赛学习记录二]——模块一(HADOOP完全分布式集群搭建)

    **在操作前,先梳理一下HADOOP完全分布式需要做些什么,不然像无头的苍蝇一样,永远不知道做什么.因为我本人比赛是一台服务器Centos 7,与三台客户端Ubuntu 18.04,所以以物理机的角度 ...

  7. Openzeppelin学习记录二:utils模块(SafeMath.sol+SafeCast.sol)

    Openzeppelin学习记录一:access模块(AccessControl.sol+Ownable.sol) Openzeppelin学习记录 2.Utils 2.1 Math 2.2 Safe ...

  8. UE4 学习记录二 给角色添加骨架,皮肤,及运动动画

    这只是用来记录我学习UE4过程的,可能帮不到你,先说声抱歉.为了防止误导他人,请勿转载,请勿转载,请勿转载. 本文的主题是给角色添加骨架.皮肤.运动动动画.总章目录(https://blog.csdn ...

  9. nRF52832学习记录(十二、SPI接口的应用 Micro SD卡读写测试)

    目录 1.nRF52xx SPI介绍 SPI接口基础介绍 SPI 寄存器 SPI 库函数介绍 SPI初始化函数 SPI数据传输函数 2.nRF52xx SPI 使用示例 w25qxx SPI Flas ...

最新文章

  1. ebnf描述c语言语句结构,EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则...
  2. 硅谷产品实战-总结:23、增长的核心在于减少用户阻力
  3. Debian/Ubuntu--blade安装与使用
  4. SAP MM ML81N为采购订单创建服务接收单,报错- No matching PO items selected -
  5. mac mysql编码修改_mac 下修改mysql数据库的编码格式
  6. Linux 内核抓包功能实现基础(五) 常见问题解析
  7. php静态方法场景,深入介绍PHP中的static的修饰方法和yield的使用场景
  8. matlab 求n 的和,MATLAB求1的阶乘加到n的阶乘和 不要现有的函数,要自己编写出来的...
  9. easyui php 拖动排序,Easyui 自定义排序_EasyUI 教程
  10. pip清华源安装Tensorflow-gpu
  11. C#基础知识回顾-- 反射(1)
  12. centos 7 修改ip
  13. PCB加工文件—Gerber文件的导出(转载)
  14. 钓鱼网站+邮件诈骗 实例分析
  15. matlab仿真动画,用matlab制作简单仿真动画
  16. 直播互动软件神器有哪些
  17. Spark Transformation转换算子和Action行动算子
  18. 手机上能搭建mysql服务器_安卓手机搭建网站服务器【Php+Mysql+Lighttpd】 – 楚盟博客...
  19. EChat(简易聊天项目)一、登录注册实现
  20. OSA品牌服饰旗舰店,淘宝商城一颗…

热门文章

  1. 养生程序员之生活小窍门
  2. 计算机教室翻转电脑桌,学校翻转电脑桌钢架结构 智慧教室电脑桌 多功能台式电脑桌...
  3. RASP攻防 —— RASP安全应用与局限性浅析
  4. C语言课后题目和答案
  5. 无线互动会议室视频显示系统数字发言系统
  6. React+DVA开发实践
  7. MediaPlayer(百度音乐盒案例)
  8. 网络***实用战术手册(UNIX)
  9. 蓝桥杯 算法提高 5-3日历
  10. mysql src.rpm_从.src.rpm包中提取出完整的源码的方法