10a7ce71fSopenharmony_ci# HiSpark WiFi-IoT 鸿蒙套件样例开发--UART 20a7ce71fSopenharmony_ci 30a7ce71fSopenharmony_ci 40a7ce71fSopenharmony_ci 50a7ce71fSopenharmony_ci[HiSpark WiFi-IoT鸿蒙开发套件](https://item.taobao.com/item.htm?id=622343426064&scene=taobao_shop) 首发于HDC 2020,是首批支持HarmonyOS 2.0的开发套件,亦是鸿蒙官方推荐套件,由润和软件HiHope量身打造,已在鸿蒙社区和广大鸿蒙开发者中得到广泛应用。 60a7ce71fSopenharmony_ci 70a7ce71fSopenharmony_ci 80a7ce71fSopenharmony_ci 90a7ce71fSopenharmony_ci## 一、UART API 100a7ce71fSopenharmony_ci 110a7ce71fSopenharmony_ci使用下面的API实现UART读写 120a7ce71fSopenharmony_ci 130a7ce71fSopenharmony_ci#### 鸿蒙UART相关的API接口文件路径 140a7ce71fSopenharmony_ci 150a7ce71fSopenharmony_ci**base/iot_hardware/interfaces/kits/wifiiot_lite/wifiiot_uart.h** 160a7ce71fSopenharmony_ci 170a7ce71fSopenharmony_ci所使用的API接口有: 180a7ce71fSopenharmony_ci 190a7ce71fSopenharmony_ci| API | 接口说明 | 200a7ce71fSopenharmony_ci| ------------------------------------------------------------ | ------------------------ | 210a7ce71fSopenharmony_ci| unsigned int UartInit(WifiIotUartIdx id, const WifiIotUartAttribute *param, const WifiIotUartExtraAttr *extraAttr); | 初始化,配置一个UART设备 | 220a7ce71fSopenharmony_ci| int UartRead(WifiIotUartIdx id, unsigned char *data, unsigned int dataLen) | 从UART设备中读取数据 | 230a7ce71fSopenharmony_ci| int UartWrite(WifiIotUartIdx id, const unsigned char *data, unsigned int dataLen) | 将数据写入UART设备 | 240a7ce71fSopenharmony_ci 250a7ce71fSopenharmony_ci#### 260a7ce71fSopenharmony_ci 270a7ce71fSopenharmony_ci## 二、代码分析 280a7ce71fSopenharmony_ci 290a7ce71fSopenharmony_ci首先需要使能UART2 300a7ce71fSopenharmony_ci 310a7ce71fSopenharmony_civendor\hisi\hi3861\hi3861\build\config\usr_config.mk 320a7ce71fSopenharmony_ci 330a7ce71fSopenharmony_ci配置CONFIG_UART2_SUPPORT=y 340a7ce71fSopenharmony_ci 350a7ce71fSopenharmony_ci或者调用GPIO相关的API将串口所在的GPIO口设置为UART功能 360a7ce71fSopenharmony_ci 370a7ce71fSopenharmony_ci```c 380a7ce71fSopenharmony_cistatic void* UartDemo_Task(const char* arg) 390a7ce71fSopenharmony_ci 400a7ce71fSopenharmony_ci{ 410a7ce71fSopenharmony_ci unsigned int len = 0; 420a7ce71fSopenharmony_ci 430a7ce71fSopenharmony_ci (void)arg; 440a7ce71fSopenharmony_ci printf("[UartDemo] UartDemo_Task()\n"); 450a7ce71fSopenharmony_ci 460a7ce71fSopenharmony_ci GpioInit();//使用GPIO,都需要调用该接口 470a7ce71fSopenharmony_ci 480a7ce71fSopenharmony_ci printf("UART init...\r\n"); 490a7ce71fSopenharmony_ci //UART参数配置 500a7ce71fSopenharmony_ci usr_uart_config(); 510a7ce71fSopenharmony_ci 520a7ce71fSopenharmony_ci UartWrite(WIFI_IOT_UART_IDX_2, (unsigned char *)uartWriteBuff, sizeof(uartWriteBuff)); 530a7ce71fSopenharmony_ci while(1) 540a7ce71fSopenharmony_ci { 550a7ce71fSopenharmony_ci //读取UART2的数据 560a7ce71fSopenharmony_ci len = UartRead(WIFI_IOT_UART_IDX_2, uartReadBuff, sizeof(uartReadBuff)); 570a7ce71fSopenharmony_ci if (len > 0) { 580a7ce71fSopenharmony_ci printf("Uart read data:%s", uartReadBuff); 590a7ce71fSopenharmony_ci } 600a7ce71fSopenharmony_ci usleep(100000); 610a7ce71fSopenharmony_ci } 620a7ce71fSopenharmony_ci 630a7ce71fSopenharmony_ci return NULL; 640a7ce71fSopenharmony_ci} 650a7ce71fSopenharmony_ci 660a7ce71fSopenharmony_ci``` 670a7ce71fSopenharmony_ci 680a7ce71fSopenharmony_ci 690a7ce71fSopenharmony_ci 700a7ce71fSopenharmony_ci## 三、如何编译 710a7ce71fSopenharmony_ci 720a7ce71fSopenharmony_ci1. 将此目录下的 `uart_demo.c` 和 `BUILD.gn` 复制到openharmony源码的`applications\sample\wifi-iot\app\iothardware`目录下, 730a7ce71fSopenharmony_ci2. 修改openharmony源码的`applications\sample\wifi-iot\app\BUILD.gn`文件,将其中的 `features` 改为: 740a7ce71fSopenharmony_ci 750a7ce71fSopenharmony_ci``` 760a7ce71fSopenharmony_ci features = [ 770a7ce71fSopenharmony_ci "iothardware:uart_demo", 780a7ce71fSopenharmony_ci ] 790a7ce71fSopenharmony_ci``` 800a7ce71fSopenharmony_ci 810a7ce71fSopenharmony_ci3. 在openharmony源码顶层目录执行:`python build.py wifiiot` 820a7ce71fSopenharmony_ci 830a7ce71fSopenharmony_ci## 四、运行结果 840a7ce71fSopenharmony_ci 850a7ce71fSopenharmony_ci``` 860a7ce71fSopenharmony_ci##### 串口0 870a7ce71fSopenharmony_ciRX:ready to OS start 880a7ce71fSopenharmony_ci 890a7ce71fSopenharmony_cisdk ver:Hi3861V100R001C00SPC025 2020-09-03 18:10:00 900a7ce71fSopenharmony_ci 910a7ce71fSopenharmony_ciFileSystem mount ok. 920a7ce71fSopenharmony_ciwifi init success! 930a7ce71fSopenharmony_ci[UartDemo] UartDemo_Entry() 940a7ce71fSopenharmony_ci 950a7ce71fSopenharmony_ci[UartDemo] UartDemo_Task() 960a7ce71fSopenharmony_ciUART init... 970a7ce71fSopenharmony_ci 980a7ce71fSopenharmony_ci00 00:00:00 0 132 D 0/HIVIEW: hilog init success. 990a7ce71fSopenharmony_ci00 00:00:00 0 132 D 0/HIVIEW: log limit init success. 1000a7ce71fSopenharmony_ci00 00:00:00 0 132 I 1/SAMGR: Bootstrap core services(count:3). 1010a7ce71fSopenharmony_ci00 00:00:00 0 132 I 1/SAMGR: Init service:0x4ae958 TaskPool:0xe5238 1020a7ce71fSopenharmony_ci00 00:00:00 0 132 I 1/SAMGR: Init service:0x4ae964 TaskPool:0xe5258 1030a7ce71fSopenharmony_ci00 00:00:00 0 132 I 1/SAMGR: Init service:0x4aea8c TaskPool:0xe5278 1040a7ce71fSopenharmony_ci00 00:00:00 0 8 I 1/SAMGR: Init service 0x4ae964 <time: 0ms> success! 1050a7ce71fSopenharmony_ci00 00:00:00 0 164 I 1/SAMGR: Init service 0x4ae958 <time: 0ms> success! 1060a7ce71fSopenharmony_ci00 00:00:00 0 108 D 0/HIVIEW: hiview init success. 1070a7ce71fSopenharmony_ci00 00:00:00 0 108 I 1/SAMGR: Init service 0x4aea8c <time: 10ms> success! 1080a7ce71fSopenharmony_ci00 00:00:00 0 108 I 1/SAMGR: Initialized all core system services! 1090a7ce71fSopenharmony_ci00 00:00:00 0 164 I 1/SAMGR: Bootstrap system and application services(count:0). 1100a7ce71fSopenharmony_ci00 00:00:00 0 164 I 1/SAMGR: Initialized all system and application services! 1110a7ce71fSopenharmony_ci00 00:00:00 0 164 I 1/SAMGR: Bootstrap dynamic registered services(count:0). 1120a7ce71fSopenharmony_ci 1130a7ce71fSopenharmony_ciRX:Uart read data:hello 1140a7ce71fSopenharmony_ci 1150a7ce71fSopenharmony_ciRX:Uart read data:12345678 1160a7ce71fSopenharmony_ci 1170a7ce71fSopenharmony_ci 1180a7ce71fSopenharmony_ci 1190a7ce71fSopenharmony_ci##### 串口2 1200a7ce71fSopenharmony_ci 1210a7ce71fSopenharmony_ciRX:hello uart! 1220a7ce71fSopenharmony_ci 1230a7ce71fSopenharmony_ciTX:hello 1240a7ce71fSopenharmony_ci 1250a7ce71fSopenharmony_ciTX:12345678 1260a7ce71fSopenharmony_ci``` 1270a7ce71fSopenharmony_ci 1280a7ce71fSopenharmony_ci 1290a7ce71fSopenharmony_ci 1300a7ce71fSopenharmony_ci 1310a7ce71fSopenharmony_ci 1320a7ce71fSopenharmony_ci### 【套件支持】 1330a7ce71fSopenharmony_ci 1340a7ce71fSopenharmony_ci##### 1. 套件介绍 http://www.hihope.org/pro/pro1.aspx?mtt=8 1350a7ce71fSopenharmony_ci 1360a7ce71fSopenharmony_ci##### 2. 套件购买 https://item.taobao.com/item.htm?id=622343426064&scene=taobao_shop 1370a7ce71fSopenharmony_ci 1380a7ce71fSopenharmony_ci##### 3. 技术资料 1390a7ce71fSopenharmony_ci 1400a7ce71fSopenharmony_ci- Gitee码云网站(OpenHarmony Sample Code等) **https://gitee.com/hihopeorg** 1410a7ce71fSopenharmony_ci 1420a7ce71fSopenharmony_ci- HiHope官网-资源中心(SDK包、技术文档下载)**http://www.hihope.org/** 1430a7ce71fSopenharmony_ci 1440a7ce71fSopenharmony_ci##### 4. 互动交流 1450a7ce71fSopenharmony_ci 1460a7ce71fSopenharmony_ci- 润和HiHope鸿蒙技术交流-微信群(加群管理员微信13605188699,发送文字#申请加入润和官方鸿蒙群#,予以邀请入群) 1470a7ce71fSopenharmony_ci- HiHope开发者社区-论坛 **https://bbs.elecfans.com/group_1429** 1480a7ce71fSopenharmony_ci- 润和HiHope鸿蒙售后服务群(QQ:980599547) 1490a7ce71fSopenharmony_ci- 售后服务电话(025-52668590) 150