DA14683开发:GPIO操作

Posted kinji

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DA14683开发:GPIO操作相关的知识,希望对你有一定的参考价值。

DA14683GPIO操作

勤基科技  陈杰明

添加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 ");

                        led_toggle();

                        key_press_sta=1;// 按下一次,标志位置1,防止抖动和长按多次执行

                }

                if(!IS_KEY1_DONE())//按键抬起则标志位置0

                        key_press_sta=0;

        }

}

这个是任务线程处理函数。

 

创建按键LED任务

mian.csystem_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

 

以上是关于DA14683开发:GPIO操作的主要内容,如果未能解决你的问题,请参考以下文章

DA14683开发:环境搭建

DA14580之GPIO口的使用

GPIO编程1:用文件IO的方式操作GPIO

Linux下用文件IO的方式操作GPIO(/sys/class/gpio)

Linux下用文件IO的方式操作GPIO(/sys/class/gpio)(转)

imx6用文件io操作gpio