跳轉到主要內容

10. 按鈕

動機

按鈕可作為外部事件,在應用程式開發期間用作TouchGFX Designer的觸發信號,也可以簡單地用作應用程式的後端事件。

Note
如果您的開發板無按鈕,請跳過此步。

目標

本節的目標是開發可用於後續TouchGFX HAL和/或相關應用開發中的程式碼。

驗證

以下是本節的驗證點:

驗證點基本原理
設定MCU必須配置MCU的 GPIO,以讀取按鈕狀態。
可讀取已連線的GPIO一旦開發了用於從GPIO讀取按鈕狀態的程式碼,就可以在隨後的TouchGFX HAL開發中使用該程式碼。
讀取操作按預期進行輪詢是應用程式渲染算圖時間的一部分。 如果輪詢時間太長,則應將其移至其他線程,或產生中斷。

先決條件

  • 按鍵必須連接到MCU的GPIO

執行

下圖顯示了按鈕的電路圖及與MCU的連線

在STM32CubeMX的System Core類別中的GPIO部分,可將 GPIO port C的腳位13(PC13)配置為輸入。

在下面的對話方塊中,我們還為GPIO配置了一個內部下拉清單。 如果您有一個外部下拉電阻器(如上圖所示),則不需要。 這種情況下,您可以選擇“無上拉和無下拉(No pull-up and no pull-down)”。

STM32CubeMX生成的程式碼將設置相應的GPIO port。 現在可以讀取輸入腳位:

main.c
uint8_t key;
if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) != GPIO_PIN_RESET)
{
key = 1;
}

性能符合預期

如果按鍵輪詢程式碼與TouchGFX應用程式在相同的執行緒中執行,可以在1 ms內輪詢按鈕的狀態。 否則,渲染將延遲過多。 如果您使用直接連接到GPIO的按鈕,不會有問題,但如果您使用I2C或類似的移位暫存器,可能會出現問題。 如果抽樣速度不夠快,可用考慮在後期將輪詢程式碼調整為獨立任務,或基於中斷讀取按鍵狀態。