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

devtools/2024/9/19 8:32:37/ 标签: 星辰, 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。
在这里插入图片描述

教程到这里就结束啦。


http://www.ppmy.cn/devtools/37979.html

相关文章

使用socket+Python实现ping

import os import socket import struct import select import time# 计算校验和&#xff0c;用于确保数据的完整性 def checksum(source_string):sum 0count 0max_count len(source_string)# 处理成对的字节while count < max_count - 1:val source_string[count 1] *…

使用wxPython和pandas模块生成Excel文件

介绍&#xff1a; 在Python编程中&#xff0c;有时我们需要根据特定的数据生成Excel文件。本文将介绍如何使用wxPython和pandas模块来实现这个目标。我们将创建一个简单的GUI应用程序&#xff0c;允许用户选择输出文件夹和输入的Excel文件&#xff0c;并根据Excel文件中每个单…

【管理咨询宝藏93】大型制造集团数字化转型设计方案

【管理咨询宝藏93】大型制造集团数字化转型设计方案 【格式】PDF版本 【关键词】国际咨询公司、制造型企业转型、数字化转型 【核心观点】 - 235页大型制造型集团数字化转型方案设计&#xff01;细节非常详尽&#xff0c;图表丰富&#xff01; - 系统架构必须采用成熟、具有国…

静态分析-RIPS-源码解析记录-02

这部分主要分析scanner.php的逻辑&#xff0c;在token流重构完成后&#xff0c;此时ini_get是否包含auto_prepend_file或者auto_append_file 取出的文件路径将和tokens数组结合&#xff0c;每一个文件都为一个包含require文件名的token数组 接着回到main.php中&#xff0c;此时…

SpringBoot框架如何接入RocketMQ?

目录 一、SpringBoot框架介绍 二、RocketMQ介绍 三、RocketMQ的应用场景 四、SpringBoot框架如何接入RocketMQ 一、SpringBoot框架介绍 Spring Boot是一个开源的Java框架,它基于Spring框架,旨在简化Java应用程序的开发。Spring Boot通过自动化配置和约定优于配置的原则,大…

掌握TypeScript的非空断言(!)和可选链(?):开发效率翻倍!

引言 标题&#xff1a;掌握TypeScript的非空断言和可选链&#xff1a;开发效率翻倍&#xff01;简短介绍&#xff1a;在TypeScript中&#xff0c;?和!操作符是提高代码安全性和开发效率的强大工具。本文将为你揭示它们的使用方式和最佳实践。 背景知识 易于理解的解释&…

数据库权限管理

1.查看系统级权限&#xff08;global level) Select * from mysql.user\G; 2.查看数据库中所有表的权限 Select * from mysql.db\G 3.远程连接数据库 第一步在有数据库服务上的主机上&#xff1a;授权 grant all on *.* to root192.168.40.83 identified by Zxy20234; 第…

Atlassian Jira 信息泄露漏洞(CVE-2019-3403) 排查思路

Atlassian Jira&#xff1a; 企业广泛使用的项目与事务跟踪工具&#xff0c;被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。 简述&#xff1a; 近日发现多个内网IP触发的Atlassian Jira 信息泄露漏洞的告警。 告警的检测规…

Octave行列式矩阵运算

Octave 行列式矩阵运算 Octave 计算行列式指令一步步计算行列式 Octave 矩阵加法Octave 矩阵乘法Octave 矩阵转置Octave 矩阵求秩Octave 矩阵求逆Octave 矩阵化为最简形式 仅供本人查阅 Octave 是一个开源的数值计算软件&#xff0c;主要用于数学计算、算法开发和数据可视化。它…

实用的Chrome命令

常用命令&#xff1a; 如下为常用的chrome命令&#xff0c;欢迎尝试体验。 1. chrome://downloads 查看下载内容 2. chrome://extensions 查看扩展 3. chrome://plugins 显示已安装插件 4. chrome://bookmarks 书签管理器 5. chrome://history 历史直接访问 6. chrome://res…

软件系统安全设计规范(word原件)

1.1安全建设原则 1.2 安全管理体系 1.3 安全管理规范 1.4 数据安全保障措施 1.4.1 数据库安全保障 1.4.2 操作系统安全保障 1.4.3 病毒防治 1.5安全保障措施 1.5.1实名认证保障 1.5.2 接口安全保障 1.5.3 加密传输保障 1.5.4终端安全保障 软件资料清单列表部分文档…

Window安装OpenSSH客户端及服务

文章目录 引言I 给windows安装一个ssh服务1.1 下载对应的OpenSSH1.2 安装sshd服务1.3 开放22端口1.4 配置sshd服务自动启动1.5 验证ssh是否可用II 服务部署III 公钥登录 Windows OpenSSH Server3.1 生成公钥-私钥对,把公钥复制到目标机器的3.2 授予对AuthorizedKeysFile权限3.…

详细讲解lua中string.gsub的使用

string.gsub 是 Lua 标准库中的一个函数&#xff0c;用于全局替换字符串中的某些部分。string.gsub 是 Lua 中非常实用的一个函数&#xff0c;它可以用来进行字符串的处理和替换操作。 它的基本语法如下&#xff1a; string.gsub(s, pattern, replacement [, n])s 是要处理的…

Spring Cloud 整合Sentinel

1、引入依赖 版本说明 alibaba/spring-cloud-alibaba Wiki GitHub 父pom <spring.cloud.version>Hoxton.SR12</spring.cloud.version> <spring.cloud.alibaba.version>2.2.10-RC1</spring.cloud.alibaba.version>Sentinel应用直接引用starter <…

世界上最好用的在线看板工具 Trello 已支持 AI 啦!

对 Trello 免费版用户的提醒 从5月20日开始&#xff0c;免费版 Trello 工作区仅支持 10 个协作者&#xff0c;超过此限制将仅支持查看&#xff0c;无法编辑。解决这一问题的方法是减少协作者数量或升级到标准版或高级版。 Atlassian 去年在其云平台中引入了人工智能工具 Atlas…

15.计算机网络

1.物理层的互联设备 中继器 和 集线器 2.集线器可以看做特殊的多路中继器 集线器 不可以做到自动寻址的功能 3.数据链路层 网桥 和 交换机 4.交换机是多端口网桥 5.网络层 路由器 6.应用层 网关 7.广播域 网络层 可以形成多个广播域 冲突域 网络层数据链路层 可以形成多个冲突域…

0060__设计模式

1. 简单工厂模式( Simple Factory Pattern ) — Graphic Design Patterns 工厂模式 | 菜鸟教程 【设计模式——学习笔记】23种设计模式——建造者模式Builder&#xff08;原理讲解应用场景介绍案例介绍Java代码实现&#xff09;-CSDN博客

js之永久定时器

在JavaScript编程中&#xff0c;定时器是一种常见的工具&#xff0c;用于在指定的时间间隔内重复执行特定的代码。永久性定时器是其中一种类型&#xff0c;它会在设定的时间间隔内重复执行&#xff0c;直到被明确停止。本文将介绍如何在JavaScript中创建和使用永久性定时器。 …

Foxmail邮箱API发送邮件失败的原因有哪些?

Foxmail邮箱API发送邮件的注意事项&#xff1f;如何用API发信&#xff1f; 在使用Foxmail邮箱API发送邮件时&#xff0c;有时会遇到发送失败的情况。这种情况可能由多种原因造成&#xff0c;下面AokSend就来详细探讨一下Foxmail邮箱API发送邮件失败的可能原因。 Foxmail邮箱A…

2024.1.1 IntelliJ IDEA 使用记录

2024.1.1 IntelliJ IDEA 使用记录 下载设置文件编码maven 配置 插件可以中文语言包安装lombok 插件Smart Tomcat ( 根据需要安装)Smart Tomcat 配置 项目导入java 设置maven 配置 项目运行SpringBoot 项目运行tomcat 运行 (根据需要)相关依赖添加运行配置 下载 IntelliJ IDEA …