DA14683开发:GPIO

版权声明:深圳勤基科技 版权所有 https://blog.csdn.net/qq7777777777/article/details/83269999

DA14683的GPIO操作

勤基科技 陈杰明

添加GPIO初始化函数

在main.c中,添加以下子函数,初始化GPIO口,按键的引脚设置为输入,LED灯的引脚设置为输出。
/按键GPIO设置/

void key_led_init()
{        
    hw_gpio_set_pin_function(HW_GPIO_PORT_1,HW_GPIO_PIN_6, HW_GPIO_MODE_INPUT,                                 HW_GPIO_FUNC_GPIO);//按键       
    hw_gpio_set_pin_function(HW_GPIO_PORT_1,HW_GPIO_PIN_5, HW_GPIO_MODE_OUTPUT,                        HW_GPIO_FUNC_GPIO);//LED
 }

然后在以下位置调用该函数:
在这里插入图片描述
这样我们的GPIO口初始化就完成了。

添加按键和LED开关定义

同样在main.c中添加以下宏定义和子函数
/按键宏定义/

 #define IS_KEY1_DONE()\       
   !hw_gpio_get_pin_status(HW_GPIO_PORT_1,HW_GPIO_PIN_6)    
  /*LED状态翻转*/
  void led_toggle()
  {        
   hw_gpio_toggle(HW_GPIO_PORT_1, HW_GPIO_PIN_5 );
  }

以上代码定义了按键按下的状态,低电平表示按下按键,led_toggle函数为GPIO输出状态取反。

添加任务实体函数

在main.c中加入以下任务处理函数:
/简单的按键处理线程/

void key_led_task(void *keydeal)
 {        
 static unsigned char key_press_sta=0;//按键标志位       
  for( ;; )//等同
  while(1)        
  {               
   if(IS_KEY1_DONE()&&key_press_sta==0)                
    {                        
        printf("IS_KEY1_DONE\r\n");                       
         led_toggle();                        
         key_press_sta=1;// 按下一次,标志位置1,防止抖动和长按多次执行              
     }
                         
                 if(!IS_KEY1_DONE())//按键抬起则标志位置0                        
                 key_press_sta=0;        
    }
  }
  这个是任务线程处理函数。

创建按键LED任务

在mian.c的system_init函数中创建按键LED任务,代码如下:

OS_TASK handle1;// 创建新的任务句柄
OS_TASK_CREATE(“KEY_LED_TASK”,
key_led_task,
NULL,
512,
mainPXP_REPORTER_TASK_PRIORITY,
handle1);
OS_ASSERT(handle1);

编译、下载、运行

完成以上代码添加以后,编译程序,下载运行,把按键的GPIO接地,LED灯的引脚就会输出反状态。

通过以上的简单GPIO操作,用户即可了解GPIO口的大致操作方法。
更多GPIO操作方法请查阅hw_gpio.h,了解具体实现方法请查阅hw_gpio.c。

Dialog技术讨论,QQ群871600668

猜你喜欢

转载自blog.csdn.net/qq7777777777/article/details/83269999