[文章]鸿蒙硬件HI3861开发环境搭建-串口2测试

阅读量0
0
0
鸿蒙硬件HI3861开发环境搭建-串口2测试https://www.bilibili.com/read/cv8208920
鸿蒙其他教程请看https://blog.csdn.net/qq_33259323/category_10520249.html
1.接线注意引脚复用,如果用串口2,2号板子是不能接上去的
使用USB转串口连接串口2


2.开启串口2打开Y:harmonycodecode-1.0vendorhisihi3861hi3861buildconfigusr_config.mk文件,在文件中加入
CONFIG_UART2_SUPPORT=y3.编写测试代码下面的代码都是官方测试代码
可以在Y:harmonycodecode-1.0vendorhisihi3861hi3861appdemosrcapp_demo_uart.c里面找到
因为我这代码是用来搞M5311的,有需要请修改文件名和.h文件
m5311.c
  1. #include "m5311.h"
  2. #include "cmsis_os2.h"

  3. hi_u32 g_uart_demo_task_id = 0;

  4. static void *m5311Yask(const char *arg){

  5.     hi_u8 uart_buff[UART_BUFF_SIZE] = {0};
  6.     hi_u8 *uart_buff_ptr = uart_buff;
  7.     hi_unref_param(arg);
  8.     printf("Initialize uart demo successfully, please enter some datas via DEMO_UART_NUM port...n");
  9.    
  10.     while(1){
  11.         printf("Input Nown");
  12.         hi_s32 len = hi_uart_read(DEMO_UART_NUM, uart_buff_ptr, UART_BUFF_SIZE);
  13.         if (len > 0) {
  14.             printf("len > 0n");
  15. #ifdef WRITE_BY_INT
  16.             hi_uart_write(DEMO_UART_NUM, uart_buff_ptr, len);
  17. #else
  18.             hi_uart_write_immediately(DEMO_UART_NUM, uart_buff_ptr, len);
  19. #endif
  20.         } else {
  21.             printf("Read nothing!n");
  22.             hi_sleep(1000); /* sleep 1000ms */
  23.         }

  24.         //hi_sleep(1000);
  25.     }

  26.     hi_task_delete(g_uart_demo_task_id);
  27.     g_uart_demo_task_id = 0;

  28.     return NULL;
  29. }

  30. void M5311_Init(void){
  31.     osThreadAttr_t attr;

  32.     attr.name = "m5311Task";
  33.     attr.attr_bits = 0U;
  34.     attr.cb_mem = NULL;
  35.     attr.cb_size = 0U;
  36.     attr.stack_mem = NULL;
  37.     attr.stack_size = 10240;
  38.     attr.priority = 27;

  39.     hi_u32 ret;
  40.     hi_uart_attribute uart_attr = {
  41.         .baud_rate = 115200, /* baud_rate: 115200 */
  42.         .data_bits = 8,      /* data_bits: 8bits */
  43.         .stop_bits = 1,
  44.         .parity = 0,
  45.     };

  46.     /* Initialize uart driver */
  47.     ret = hi_uart_init(DEMO_UART_NUM, &uart_attr, HI_NULL);
  48.     if (ret != HI_ERR_SUCCESS) {
  49.         printf("Failed to init uart! Err code = %dn", ret);
  50.         return;
  51.     }

  52.     if (osThreadNew((osThreadFunc_t)m5311Yask, NULL, &attr) == NULL) {
  53.         printf("[M5311] Falied to create M5311Task!n");
  54.     }
  55. }
复制代码
m5311.h
  1. #ifndef M5311_H
  2. #define M5311_H

  3. #include <stdio.h>
  4. #include <hi_types_base.h>
  5. #include <hi_early_debug.h>
  6. #include <hi_task.h>
  7. #include <hi_uart.h>

  8. #define WRITE_BY_INT
  9. #define UART_DEMO_TASK_STAK_SIZE 2048
  10. #define UART_DEMO_TASK_PRIORITY  25
  11. #define DEMO_UART_NUM            HI_UART_IDX_2
  12. #define UART_BUFF_SIZE           32

  13. void M5311_Init(void);

  14. #endif
复制代码
BUILD.gn
  1. static_library("m5311") {
  2.     sources = [
  3.         "m5311.c"
  4.     ]
  5.     include_dirs = [
  6.         "//kernel/liteos_m/components/cmsis/2.0",
  7.     ]
  8. }
复制代码
4.测试代码打开Y:harmonycodecode-1.0applicationssamplewifi-iotappBUILD.gn文件
把刚才写的BUILD.gn文件里面的features加进去,比如"//XX/XX/XX/M5311:m5311"
然后在my_first_app文件夹下面的BUILD.gn文件include_dirs里面加入"//XX/XX/XX/M5311",
然后在hello_word.c文件里面加入头文件#include "m5311.h"
然后在HelloWorld函数里面加入M5311_Init();
5.验证测试打开串口工具设置波特率


如果在过程中遇到什么问题可以来联系我B站





回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友