OpenHarmony鸿蒙硬件-Kaihong_Hi3861_温湿度感应板-让风扇转动

一、硬件分工

  1. GPIO12:控制板载继电器,负责风扇总电源通断
  2. GPIO8:控制风扇二级使能开关,负责风扇运行放行
  3. 必要条件:两个引脚同时置高电平,风扇才能正常转动

二、代码执行流程

  1. 系统自动入口
    上电后 SYS_RUN() 自动加载运行风扇主函数,程序启动。

  2. 全局GPIO初始化
    调用 GpioInit(),初始化芯片GPIO外设时钟与底层驱动,为引脚配置做基础准备。

  3. 引脚功能重映射
    通过 IoSetFunc(),将GPIO8、GPIO12从复用功能(通信引脚)切换为普通GPIO控制功能,解除外设占用。

  4. 设置引脚输出方向
    通过 GpioSetDir(),把两个引脚配置为输出模式,让引脚具备向外输出高低电平的能力。

  5. 电平输出触发硬件
    两个引脚同时输出高电平:

  • GPIO12高电平 → 继电器吸合,接通风扇外部总电源
  • GPIO8高电平 → 打开风扇内部控制使能
    双条件同时满足,风扇正式启动运转。

代码

#include <stdio.h>
#include <unistd.h>
#include "wifiiot_gpio.h"
#include "wifiiot_gpio_ex.h"
#include "ohos_init.h"

void Fan_Run(void)
{
    GpioInit();
    // GPIO8 控制散热风扇开关
    // 把 GPIO8 引脚设置成 “普通 GPIO 功能”
    IoSetFunc(WIFI_IOT_IO_NAME_GPIO_8, WIFI_IOT_IO_FUNC_GPIO_8_GPIO);
    // 把 GPIO8 设置成 “输出模式”
    GpioSetDir(WIFI_IOT_IO_NAME_GPIO_8, WIFI_IOT_GPIO_DIR_OUT);

    // GPIO12控制继电器开关(是散热风扇电源)
    // 把 GPIO12 引脚设置成 “普通 GPIO 功能”
    IoSetFunc(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_IO_FUNC_GPIO_12_GPIO);
    // 把 GPIO12 设置成 “输出模式”
    GpioSetDir(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_GPIO_DIR_OUT);

    // ====================
    // 同时打开两个引脚
    // ====================
    GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_8,  1);
    GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_12, 1);

    printf("Fan is running!\n");
    // 死循环延时挂起任务,防止程序退出,让风扇持续保持运行状态。
    while (1) {
        usleep(1000000);
    }
}

SYS_RUN(Fan_Run);

原文出处:/show_1GW32COzyCFb.html