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_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
}
以上代碼定義了按鍵按下的狀態,低電平表示按下按鍵
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
DA14683開發:GPIO操作