1. 程式人生 > >DA14683開發:GPIO操作

DA14683開發:GPIO操作

png pin 按鍵 == gpio pan main 輸入 調用

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\r\n");

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操作