Loading... > 这是一个简单的控制HiSpark WiFi IoT套件的红绿灯或炫彩灯板的小Demo,本例子仅在基于OpenHarmony 3.0 LTS 版本的HiSpark WiFi IoT套件的Hi3861芯片上跑通 首先分析HiSpark WiFi IoT底板电路信息,可以得知10,11,12为三个灯的控制引脚,本来按照网上教程应该通过引用分装好的SDK头文件进行控制即可,但在OpenHarmony 3.0 LTS 中,它弃用了这些1.0中的SDK,故我们需要调用OpenHarmony 3.0 LTS底层头文件来控制,这是大家需要注意的,总的来看如果遇到不会的地方,直接到官方头文件中去看怎么定义的就可以解决很大一部分问题。 先开始写引用,就像当年学习C语言一样: ``` #include <stdio.h> #include <unistd.h> #include "ohos_init.h" #include "cmsis_os2.h" #include "iot_gpio.h" #include "hi_io.h" // OH3.0中由于没有厂商封装,故只能调用源码底层 ``` 开始定义控制灯的函数,这里我是到底层源码中通过看官方函数作用来写的: ``` static void *GPIOTask(const char *arg){ (void)arg; int i=1; while (1) { IoTGpioSetOutputVal(12, IOT_GPIO_VALUE0);//IOT_GPIO_VALUE0代表关闭,12是引脚号 IoTGpioSetOutputVal(11, IOT_GPIO_VALUE0); IoTGpioSetOutputVal(10,IOT_GPIO_VALUE0); IoTGpioSetOutputVal(12, IOT_GPIO_VALUE1); sleep(6);/*yellow*/ IoTGpioSetOutputVal(12, IOT_GPIO_VALUE0); IoTGpioSetOutputVal(11, IOT_GPIO_VALUE1); sleep(30);/*green*/ IoTGpioSetOutputVal(11, IOT_GPIO_VALUE0); IoTGpioSetOutputVal(10,IOT_GPIO_VALUE1);//IOT_GPIO_VALUE1代表开启,10是引脚号 sleep(25);/*red*/ IoTGpioSetOutputVal(10,IOT_GPIO_VALUE0); printf("[NOTICE] This is the: %d\n",i); if(i%10==0){ //每10次同时亮一次 IoTGpioSetOutputVal(12, IOT_GPIO_VALUE0); IoTGpioSetOutputVal(11, IOT_GPIO_VALUE0); IoTGpioSetOutputVal(10,IOT_GPIO_VALUE0); IoTGpioSetOutputVal(12, IOT_GPIO_VALUE1); IoTGpioSetOutputVal(11, IOT_GPIO_VALUE1); IoTGpioSetOutputVal(10,IOT_GPIO_VALUE1); //如果是炫彩灯板为白光,交通灯板为3个灯全亮 printf("[NOTICE]This is the:10th,throw!\n"); sleep(10); } i++; } } ``` 接下来是进程函数,这里仿照官方说法来写就好: ``` static void GPIOEntry(void){ printf("Led Test!\n"); osThreadAttr_t attr; //引脚初始化及定义 IoTGpioInit(12); IoTGpioSetDir(12, IOT_GPIO_DIR_OUT); IoTGpioInit(11); IoTGpioSetDir(11, IOT_GPIO_DIR_OUT); IoTGpioInit(10); IoTGpioSetDir(10, IOT_GPIO_DIR_OUT); //进程相关 attr.name = "GPIOTask"; attr.attr_bits = 0U; attr.cb_mem = NULL; attr.cb_size = 0U; attr.stack_mem = NULL; attr.stack_size = 1024; attr.priority = 25; if (osThreadNew((osThreadFunc_t)GPIOTask, NULL, &attr) == NULL) { printf("[LedExample] Falied to create LedTask!\n"); } } SYS_RUN(GPIOEntry); ``` [编译成功的镜像](https://github.com/xuegao-tzx/HarmonyOS_Study/raw/NUC/OHOS/app/kled/Hi3861_wifiiot_app_allinone.bin) 总的来看,OpenHarmony的硬件开发入手也不是很难,只要你有足够的耐心,以及C,Java语言的基础,入门很简单,有很多调用就和Java中类似,多尝试就一定会成功! 最后修改:2021 年 11 月 28 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏,谢谢