GPIO的使用是掌握一個開發板的切入點,對它的掌握是進行開發的一個基礎。
在開發板上,已配備了一個RGB_LED、2個LED、 2個按鍵及一個無源蜂鳴器。
對于RGB_LED的使用,我們從例程就可以掌握。
在對2個LED和按鍵來講,在測試卻發現,即使不對其進行配置和編程,卻也能實現按鍵與LED的一對一控制,且在編程的情況下也不受控制,不知原因何在?
1
蜂鳴器的使用
板載蜂鳴器的原理圖見圖1所示,由于采用的是無源蜂鳴器,故需要為其提供脈沖信號才能發聲。
圖1蜂鳴器原理圖
為使蜂鳴器工作,需將其連接的引腳PE5配置為輸出模式,使用語句為:
gpio_enable_pin_output(HPM_GPIO0,GPIO_DI_GPIOE, 5);
為使蜂鳴器發出滴答的聲音,需向其不斷地輸出高低變化的電平信號,其程序為:
while(1){ gpio_write_pin(HPM_GPIO0, GPIO_DI_GPIOE, 5, 1); rt_thread_mdelay(200); gpio_write_pin(HPM_GPIO0, GPIO_DI_GPIOE, 5, 0); rt_thread_mdelay(200);}
2
按鍵識別與控制
鑒于板載的LED和KEY無法進行編程控制,故采用了一個外部的觸摸模塊來替代按鍵的輸入模式測試。
與通常的輸入模式設置語句不同,它沒有使用gpio_enable_pin_input這樣的句式,而是通過gpio_disable_pin_output來進行配置。
在觸摸模塊與PE25相連接的情況下,其配置的語句為:
gpio_disable_pin_output(HPM_GPIO0,GPIO_DI_GPIOE, 25);
以觸摸模塊控制紅色RGB_LED燈的主程序為:
int main(void){ app_init_led_pins(); app_led_write(0, APP_LED_ON); app_led_write(1, APP_LED_ON); app_led_write(2, APP_LED_ON); gpio_disable_pin_output(HPM_GPIO0, GPIO_DI_GPIOE, 25); while(1){ if(gpio_read_pin(HPM_GPIO0, GPIO_DI_GPIOE, 25)==1) app_led_write(0, APP_LED_OFF); else app_led_write(0, APP_LED_ON); rt_thread_mdelay(200); } return 0;}
經編譯和下載,其執行效果如圖2和圖3所示。
圖2空閑狀態
圖3觸摸狀態
掌握了GPIO口的使用,就為程序的開發設計打開了一扇方便之門。添加關注!文章轉載請注明出處。
-
GPIO
+關注
關注
16文章
1216瀏覽量
52266
發布評論請先 登錄
相關推薦
評論