【XR806开发板试用】阻塞式串口发送与接收教程

2024-05-07 13:28

本文主要是介绍【XR806开发板试用】阻塞式串口发送与接收教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文基于wsl2搭建的ubuntu18.04 + vscode编辑器

很奇怪啊,找了半天居然没人发串口的教程,于是只能自己试一试了,在此发一个阻塞式的串口发送与接收的教程。并且,感谢.ACE彭洪权大佬在我配置环境遇到几十个报错的时候帮我远程搭建环境三四小时,非常感谢!
TIP:请确保您已经走到了官方教程中hb build -f这一步。

1.复制iot_peripheral文件夹

在这里插入图片描述

2.粘贴至ohosdemo文件夹

在这里插入图片描述

3.粘贴后的文件为iot_peripheral copy文件夹,右键重命名为uart文件夹。

在这里插入图片描述

4.打开uart里的BUILD.gn文件,修改红框内为app_uart

在这里插入图片描述

import("//device/xradio/xr806/liteos_m/config.gni")static_library("app_uart") {configs = []sources = ["src/main.c","src/test_flash.c","src/test_gpio.c","src/test_i2c.c","src/test_lowpower.c","src/test_pwm.c","src/test_reset.c","src/test_uart.c","src/test_watchdog.c",]cflags = board_cflagsinclude_dirs = board_include_dirsinclude_dirs += ["//kernel/liteos_m/kernel/arch/include","include","//base/iot_hardware/peripheral/interfaces/kits",]
}

5.修改ohosdemo文件夹下的BUILD.gn文件,[]内添加"uart:app_uart",

在这里插入图片描述

group("ohosdemo") {deps = ["uart:app_uart",#"ledpwm:app_ledpwm",#"led:app_led",#"hello_demo:app_hello",#"iot_peripheral:app_peripheral",#"wlan_demo:app_WlanTest",]
}

6.打开uart/src/main.c,代码如下:

#include <stdio.h>
#include "ohos_init.h"
#include "kernel/os/os.h"
#include <string.h>
#include "iot_uart.h"
#include "driver/chip/hal_uart.h"#define UARTID UART1_ID
#define UART_BUFFER_MAXSIZE 50
#define UART_RECEIVE_DATALEN 30
const uint8_t  play_Buffer[4] = {0xAA,0x02,0x00,0xAC};
static OS_Thread_t g_main_thread;static int uart_init(void)
{HAL_Status status = HAL_ERROR;UART_InitParam param;param.baudRate = 9600;   // 波特率为9600param.dataBits = UART_DATA_BITS_8;param.stopBits = UART_STOP_BITS_1;param.parity = UART_PARITY_NONE;param.isAutoHwFlowCtrl = 0;status = HAL_UART_Init(UARTID, &param);if (status != HAL_OK)printf("uart init error %d\n", status);return status;
}static void MainThread(void *arg)
{unsigned char uart_buffer[UART_BUFFER_MAXSIZE];uart_init();while (1) {HAL_UART_Transmit_Poll(UARTID, (uint8_t *)play_Buffer, 4);LOS_Msleep(1000);HAL_UART_Receive_Poll(UARTID,uart_buffer,6,0x000f);LOS_Msleep(1000);HAL_UART_Transmit_Poll(UARTID, (uint8_t *)uart_buffer, 6);LOS_Msleep(1000);}}void UARTMain(void)                                                             
{printf("UART Test Start\n");if (OS_ThreadCreate(&g_main_thread, "MainThread", MainThread, NULL,OS_THREAD_PRIO_APP, 4 * 1024) != OS_OK) {printf("[ERR] Create MainThread Failed\n");}
}SYS_RUN(UARTMain);                                                               // Harmony线程入口

7.硬件接线

由于#define UARTID UART1_ID则使用UART1的收发组
在这里插入图片描述

本文作者使用USB转TTL接XR806,通过USB转TTL插入电脑,让电脑接收串口收发的信息。
接线如下:
USB转TTL XR806
3.3V-------------3.3V
TXD--------------B15
RXD--------------B14
GND--------------GND
在这里插入图片描述

8.代码修改完毕后,按下Ctrl+K再按S将代码全部保存,并再终端输入hb build -f编译

在这里插入图片描述

9.将USB tpye C数据线接上XR806,进行烧录

在这里插入图片描述

10.测试串口接收

将USB转TTL接入电脑,打开串口助手,选择新增的COM,波特率选择9600,打开串口,可以接收到AA 02 00 AC即说明XR806能正常发送
在这里插入图片描述

11.测试串口发送

在发送框输入01 02 03 04 05 07,并勾选16进制发送,点击发送,可以看到本来的80 25 00 00 00 00改变成了所发送的数据,即说明XR806接收到了所发送的信息并且又将收到的信息发送到了串口助手上显示。若不希望出现80 25 00 00 00 00,则需要在代码中自行修改buffer数组全部改为0,或者设置条件,在接收到之后再发送,发送之后再清空buffer。
在这里插入图片描述

教程到这里就结束啦。

这篇关于【XR806开发板试用】阻塞式串口发送与接收教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/967476

相关文章

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因