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
  • 相关阅读:
    树状数组
    POJ 1178 -- 国王和骑士
    read
    优先队列
    统计八连块
    1579、Function Run Fun(记忆化搜索)
    5488: 石子归并II (区间DP+环形DP+四边形不等式优化)
    4797: 能量项链(区间DP,环形DP)
    5936 桃子的矩阵快速幂
    Happy Necklace(找规律+矩阵快速幂)
  • 原文地址:https://www.cnblogs.com/txwtech/p/15170700.html
Copyright © 2011-2022 走看看