当前位置:   article > 正文

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

【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_cflags

   include_dirs = board_include_dirs
   include_dirs += [
      "//kernel/liteos_m/kernel/arch/include",
      "include",
      "//base/iot_hardware/peripheral/interfaces/kits",
   ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

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",
    ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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;   // 波特率为9600
    param.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线程入口

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

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。
在这里插入图片描述

教程到这里就结束啦。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/567222
推荐阅读
相关标签
  

闽ICP备14008679号