开发

  1. 请先完成《Hi3861快速入门》

    LED控制参考示例存放于applications/sample/wifi-iot/app/iothardware/led_example.c文件中。

  2. 实现IOT外设控制,首先需要通过查阅原理图明确接线关系。经过查阅,可以发现LED与功能复用管脚WIFI_IOT_IO_NAME_GPIO_9相连。

    开发 - 图1 说明: 开发板原理图,请开发者联系Hi3861购买渠道客服获取。

  3. 使用GPIO前,需要完成GPIO管脚初始化,明确管脚用途,并创建任务,使LED周期性亮灭,达到闪烁的效果。

    1. static void LedExampleEntry(void)
    2. {
    3. osThreadAttr_t attr;
    4. /* 管脚初始化 */
    5. GpioInit();
    6. /* 配置9号管脚作为GPIO */
    7. IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_GPIO);
    8. /* 配置9号管脚为输出方向 */
    9. GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_OUT);
    10. attr.name = "LedTask";
    11. attr.attr_bits = 0U;
    12. attr.cb_mem = NULL;
    13. attr.cb_size = 0U;
    14. attr.stack_mem = NULL;
    15. attr.stack_size = LED_TASK_STACK_SIZE;
    16. attr.priority = LED_TASK_PRIO;
    17. /* 启动任务 */
    18. if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL) {
    19. printf("[LedExample] Falied to create LedTask!\n");
    20. }
    21. }
  4. 在循环任务中通过周期性亮灭形式实现LED闪烁。

    1. static void *LedTask(const char *arg)
    2. {
    3. (void)arg;
    4. while (1) {
    5. switch (g_ledState) {
    6. case LED_ON:
    7. GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 1);
    8. usleep(LED_INTERVAL_TIME_US);
    9. break;
    10. case LED_OFF:
    11. GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0);
    12. usleep(LED_INTERVAL_TIME_US);
    13. break;
    14. case LED_SPARK:
    15. GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0);
    16. usleep(LED_INTERVAL_TIME_US);
    17. GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 1);
    18. usleep(LED_INTERVAL_TIME_US);
    19. break;
    20. default:
    21. usleep(LED_INTERVAL_TIME_US);
    22. break;
    23. }
    24. }
    25. return NULL;
    26. }
  5. 在代码最下方,使用OpenHarmony启动恢复模块接口SYS_RUN()启动业务。(SYS_RUN定义在ohos_init.h文件中)

    1. SYS_RUN(LedExampleEntry);
  6. 修改applications/sample/wifi-iot/app/BUILD.gn文件,使led_example.c参与编译。

    1. import("//build/lite/config/component/lite_component.gni")
    2. lite_component("app") {
    3. features = [
    4. "iothardware:led_example"
    5. ]
    6. }