zoukankan      html  css  js  c++  java
  • 鸿蒙开发板Hi3861_通过GPIO2中断控制LED D10——基于code-2.0-CANARY

    鸿蒙开发板Hi3861_通过GPIO2中断控制LED D10——基于code-2.0-CANARY

    //通过GPIO2中断控制LED D10, D10 接一个LED的长脚,LEd的短脚接GND
    //D2接一个常开开关的一端,开关的另外一端接到板子的GND,by txwtech

    //通过GPIO2中断控制LED D10, D10 接一个LED的长脚,LEd的短脚接GND
    //D2接一个常开开关的一端,开关的另外一端接到板子的GND,by txwtech
    #include <stdio.h> 
    #include "ohos_init.h"
    #include "cmsis_os2.h"
    #include "iot_gpio.h"
    #include "hi_io.h"
    static volatile IotGpioValue g_ledPinValue=IOT_GPIO_VALUE0;
    IotGpioValue temp_value=IOT_GPIO_VALUE0;
    static void onButtonPressed(char *arg)
    {
        (void) arg;
        g_ledPinValue = !g_ledPinValue;
        printf("button is pressed.
    ");
    }
    
    static void GpioTask(void *arg)
    {
        (void) arg;
        IoTGpioInit(HI_IO_NAME_GPIO_9);
         IoTGpioInit(HI_IO_NAME_GPIO_5);
        IoTGpioInit(HI_IO_NAME_GPIO_2);
        
        IoTGpioSetDir(HI_IO_NAME_GPIO_9,IOT_GPIO_DIR_OUT);
         IoTGpioSetDir(HI_IO_NAME_GPIO_10,IOT_GPIO_DIR_OUT);
        IoTGpioSetDir(HI_IO_NAME_GPIO_2,IOT_GPIO_DIR_IN);  //D2上拉电阻
        hi_io_set_pull(HI_IO_NAME_GPIO_2,HI_IO_PULL_UP);
        
       // while (1)
        {
            /* code */
            IotGpioValue value=IOT_GPIO_VALUE1;
            IoTGpioGetInputVal(HI_IO_NAME_GPIO_2,&value);
            printf("exec gpio2 value ...%d
    ",value);
            // osDelay(200);
           // IoTGpioSetOutputVal(9,1);
            IoTGpioSetOutputVal(HI_IO_NAME_GPIO_9,IOT_GPIO_VALUE1);
           // IoTGpioSetOutputVal(HI_IO_NAME_GPIO_10,IOT_GPIO_VALUE1);
            IoTGpioGetInputVal(HI_IO_NAME_GPIO_10,&value);
            printf("exec gpio10 value ...%d
    ",value);
            printf("exec ON ...
    ");
           // osDelay(200);
            IoTGpioSetOutputVal(HI_IO_NAME_GPIO_9,IOT_GPIO_VALUE0);
    
            printf("exec OFF
    ");
           // osDelay(200);
    
            // IoTGpioSetOutputVal(HI_IO_NAME_GPIO_10,IOT_GPIO_VALUE0);
             IoTGpioGetInputVal(HI_IO_NAME_GPIO_10,&value);
             printf("exec gpio10 value ...%d
    ",value);
            // osDelay(200);
            IoTGpioRegisterIsrFunc(HI_IO_NAME_GPIO_2,IOT_INT_TYPE_EDGE,
            IOT_GPIO_EDGE_FALL_LEVEL_LOW,onButtonPressed,NULL);//通过GPIO2中断控制LED D10,by txwtech
            
        }
        while (1)
        {
            /* code */
            if(temp_value!=g_ledPinValue)
            {
             IoTGpioSetOutputVal(HI_IO_NAME_GPIO_10,g_ledPinValue);
            }
             temp_value=g_ledPinValue;
             
           // IoTGpioGetInputVal(HI_IO_NAME_GPIO_10,&value);
    
            printf("exec gpio10 value ...%d
    ",g_ledPinValue);
            osDelay(50);
        }
        
        
    
    }
    static void GpioEntry(void)
    {
        osThreadAttr_t attr={0};
        attr.name="GpioTask";
        attr.stack_size=4096;
        attr.priority=osPriorityNormal;
        if(osThreadNew(GpioTask,NULL,&attr)==NULL)
        {
            printf("[GpioEntry] create GpioTask failed!
    ");
        }
    }
    SYS_RUN(GpioTask);
    //SYS_RUN(GpioEntry);

    欢迎讨论,相互学习。 txwtech@163.com
  • 相关阅读:
    How to become a hacker
    逻辑地址、线性地址、物理地址和虚拟地址
    java configuration
    Java 理论与实践: 变还是不变?
    Teach Yourself Programming in Ten Years
    border padding margin , the difference among them
    hashCode方法,equals方法,HashSet,HasMap之间的关系
    工程名 显示红色叹号
    记The_C_Programming_Language的错误
    VIM简单介绍学习1
  • 原文地址:https://www.cnblogs.com/txwtech/p/15170700.html
Copyright © 2011-2022 走看看