实现方案

通过F1按键 控制灯泡亮
通过F2按键 控制灯泡灭

关键代码

btn_ctl_led.c

  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include "ohos_init.h"
  4. #include "cmsis_os2.h"
  5. #include "wifiiot_gpio.h"
  6. #include "wifiiot_gpio_ex.h"
  7. static void F1_Pressed(char *arg)
  8. {
  9. (void)arg;
  10. GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 1);
  11. }
  12. static void F2_Pressed(char *arg)
  13. {
  14. (void)arg;
  15. GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0);
  16. }
  17. static void ButtonCtrlLedInit(void) {
  18. // GPIO 初始化
  19. GpioInit();
  20. // 初始化 LED 灯泡(设置引脚功能为GPIO:有些引脚是复合功能)
  21. IoGetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_GPIO);
  22. // 设置 GPIO 12 为输出模式
  23. GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_OUT);
  24. // 默认关灯(0 可以理解 关灯)
  25. GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0);
  26. // 设置F1按键 GPIO (11) (按键是一个复杂的GPIO)
  27. IoSetFunc(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_IO_FUNC_GPIO_11_GPIO);
  28. // 设置GPIO 为输入模式
  29. GpioSetDir(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_GPIO_DIR_IN);
  30. // GPIO 上拉 (上拉电阻的目的是为了保证在无信号输入时输入端的电平为高电平)
  31. IoSetPull(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_IO_PULL_UP);
  32. // 注册函数
  33. GpioRegisterIsrFunc(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_INT_TYPE_EDGE, WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW, F1_Pressed, NULL);
  34. // 设置F2按键 GPIO(12)(按键是一个复杂的GPIO)
  35. IoSetFunc(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_IO_FUNC_GPIO_12_GPIO);
  36. // 设置GPIO 为输入模式
  37. GpioSetDir(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_GPIO_DIR_IN);
  38. // GPIO 上拉 (上拉电阻的目的是为了保证在无信号输入时输入端的电平为高电平)
  39. IoSetPull(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_IO_PULL_UP);
  40. // 注册函数
  41. GpioRegisterIsrFunc(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_INT_TYPE_EDGE, WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW, F2_Pressed, NULL);
  42. }
  43. APP_FEATURE_INIT(ButtonCtrlLedInit);

BUILD.gn

  1. static_library("btn_ctrl_led") {
  2. sources = [
  3. "btn_ctrl_led.c"
  4. ]
  5. include_dirs = [
  6. "//utils/native/lite/include",
  7. "//kernel/liteos_m/components/cmsis/2.0",
  8. "//base/iot_hardware/interfaces/kits/wifiiot_lite",
  9. ]
  10. }

使用HiBurn工具写入

效果演示

开灯

开灯.jpeg

关灯

关灯.jpg