nRF52832学习记录(二、外设之 串口)
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学习记录(二、外设之 串口)相关推荐
- MySQL学习记录 (二) ----- SQL数据查询语句(DQL)
相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...
- Android动画学习记录二(属性动画、估值器和插值器)
Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) 一.补间动画缺陷 二.属性 ...
- HTML学习记录二:html标签(五):超链接标签
HTML学习记录二:html标签(五):超链接标签 一.超链接标签写法 二.超链接标签的属性 三.超链接的锚点用法 四.链接分类 一.超链接标签写法 在 HTML 标签中, 标签用于定义超链接,作用是 ...
- 大数据之spark学习记录二: Spark的安装与上手
大数据之spark学习记录二: Spark的安装与上手 文章目录 大数据之spark学习记录二: Spark的安装与上手 Spark安装 本地模式 Standalone 模式 基本配置 步骤1: 复制 ...
- ESP32学习记录<三>串口通信
ESP32学习记录<三>串口通信 文章目录 ESP32学习记录<三>串口通信 前言 一.通过串口打印出数据 1.初始化串口 2.打印数据 二.串口控制LED亮灭 1.接收串口发 ...
- [大数据技术与应用省赛学习记录二]——模块一(HADOOP完全分布式集群搭建)
**在操作前,先梳理一下HADOOP完全分布式需要做些什么,不然像无头的苍蝇一样,永远不知道做什么.因为我本人比赛是一台服务器Centos 7,与三台客户端Ubuntu 18.04,所以以物理机的角度 ...
- Openzeppelin学习记录二:utils模块(SafeMath.sol+SafeCast.sol)
Openzeppelin学习记录一:access模块(AccessControl.sol+Ownable.sol) Openzeppelin学习记录 2.Utils 2.1 Math 2.2 Safe ...
- UE4 学习记录二 给角色添加骨架,皮肤,及运动动画
这只是用来记录我学习UE4过程的,可能帮不到你,先说声抱歉.为了防止误导他人,请勿转载,请勿转载,请勿转载. 本文的主题是给角色添加骨架.皮肤.运动动动画.总章目录(https://blog.csdn ...
- nRF52832学习记录(十二、SPI接口的应用 Micro SD卡读写测试)
目录 1.nRF52xx SPI介绍 SPI接口基础介绍 SPI 寄存器 SPI 库函数介绍 SPI初始化函数 SPI数据传输函数 2.nRF52xx SPI 使用示例 w25qxx SPI Flas ...
最新文章
- ebnf描述c语言语句结构,EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则...
- 硅谷产品实战-总结:23、增长的核心在于减少用户阻力
- Debian/Ubuntu--blade安装与使用
- SAP MM ML81N为采购订单创建服务接收单,报错- No matching PO items selected -
- mac mysql编码修改_mac 下修改mysql数据库的编码格式
- Linux 内核抓包功能实现基础(五) 常见问题解析
- php静态方法场景,深入介绍PHP中的static的修饰方法和yield的使用场景
- matlab 求n 的和,MATLAB求1的阶乘加到n的阶乘和 不要现有的函数,要自己编写出来的...
- easyui php 拖动排序,Easyui 自定义排序_EasyUI 教程
- pip清华源安装Tensorflow-gpu
- C#基础知识回顾-- 反射(1)
- centos 7 修改ip
- PCB加工文件—Gerber文件的导出(转载)
- 钓鱼网站+邮件诈骗 实例分析
- matlab仿真动画,用matlab制作简单仿真动画
- 直播互动软件神器有哪些
- Spark Transformation转换算子和Action行动算子
- 手机上能搭建mysql服务器_安卓手机搭建网站服务器【Php+Mysql+Lighttpd】 – 楚盟博客...
- EChat(简易聊天项目)一、登录注册实现
- OSA品牌服饰旗舰店,淘宝商城一颗…