|
【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】第三篇 跑馬燈, 弄了半天,VSCode中還是識(shí)別不了串口,只好放棄,采用Ubuntu中編譯,Windows中使用HiBurn來燒寫。
拿到開發(fā)板通常第一件事兒都是寫個(gè)helloWorld的程序,點(diǎn)個(gè)燈
我也不例外,搞了個(gè)跑馬燈。
代碼如下:
LED_demo.c
- #include <stdio.h>
- #include <unistd.h>
- #include “ohos_init.h“
- #include “cmsis_os2.h“
- #include “wifiiot_gpio.h“
- #include “wifiiot_gpio_ex.h“
- #define LED_TASK_STACK_SIZE 512
- #define LED_TASK_PRIO 25
- enum LedState {
- LED_ON = 0,
- LED_OFF,
- LED_SPARK,
- };
- static void *LedTask(const char *arg)
- {
- (void)arg;
- while (1) {
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 1);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 0);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_12, 0);
- usleep(300000);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 0);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 0);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_12, 1);
- usleep(300000);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 0);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 1);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_12, 0);
- usleep(300000);
- }
- return NULL;
- }
- static void led_demo(void)
- {
- osThreadAttr_t attr;
- GpioInit();
- IoSetFunc(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_IO_FUNC_GPIO_10_GPIO);
- IoSetFunc(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_IO_FUNC_GPIO_11_GPIO);
- IoSetFunc(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_IO_FUNC_GPIO_12_GPIO);
- GpioSetDir(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_GPIO_DIR_OUT);
- GpioSetDir(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_GPIO_DIR_OUT);
- GpioSetDir(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_GPIO_DIR_OUT);
- attr.name = “LedTask“;
- attr.attr_bits = 0U;
- attr.cb_mem = NULL;
- attr.cb_size = 0U;
- attr.stack_mem = NULL;
- attr.stack_size = LED_TASK_STACK_SIZE;
- attr.priority = LED_TASK_PRIO;
- if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL) {
- printf(“[LedExample] Falied to create LedTask!\n“);
- }
- }
- SYS_RUN(led_demo);
復(fù)制代碼 led_demo文件夾中
BIULD.gn
- # Copyright (c) 2020 Huawei Device Co., Ltd.
- # Licensed under the Apache License, Version 2.0 (the “License“);
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an “AS IS“ BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- static_library(“l(fā)ed_demo“) {
- sources = [
- “l(fā)ed_demo.c“
- ]
- include_dirs = [
- “//utils/native/lite/include“,
- “//kernel/liteos_m/components/cmsis/2.0“,
- “//base/iot_hardware/inteRFaces/kits/wifiiot_lite“,
- ]
- }
復(fù)制代碼 同時(shí),也要將app文件夾中的編譯腳本文件BUILD.gn修改一下,在features中添加以下內(nèi)容:
“l(fā)ed_demo:led_demo“,
- # Copyright (c) 2020 Huawei Device Co., Ltd.
- # Licensed under the Apache License, Version 2.0 (the “License“);
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an “AS IS“ BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- import(“//build/lite/config/component/lite_component.gni“)
- lite_component(“app“) {
- features = [
- “startup“,
- “l(fā)ed_demo:led_demo“,
- ]
- }
復(fù)制代碼 添加完之后,返回CODE-1.0目錄,在終端中輸入以下命令:python build.py wifiiot
編譯即可;
然后,返回Windows,用hiburn燒錄即可。
第三篇完結(jié),下一步,OLED,未完待續(xù)…… |
|