有趣的網(wǎng)站網(wǎng)址之家百度搜索關(guān)鍵詞優(yōu)化方法
本文章是基于BES2700 芯片,其他BESxxx 芯片可做參考,如有不當之處,歡迎評論區(qū)留言指出。僅供參考學習用!
BES 平臺 SDK之LED的配置_謝文浩的博客-CSDN博客
關(guān)于系統(tǒng)LED簡介可參考上一篇文章。鏈接如上所示!
一:PWR KEY?
1. 按鍵配置
? ? ? ? 1.工程配置文件common.mk 需要打開宏定義:
????????export APP_KEY_ENABLE ?= 1
? ? ? ? 2. 打開按鍵,源文件路徑:/apps/main/apps.cpp
從代碼可以看出,app_key_open 首先會注冊一個app_key_config 鏈表,添加主函數(shù)郵箱信息處理回調(diào)函數(shù)app_key_handle_process。之后調(diào)用函數(shù)?hal_key_open來注冊按鍵處理事件(key_event_process)。事件處理函數(shù)只是將按鍵信息發(fā)送給主函數(shù)郵箱,主函數(shù)郵箱輪詢事件,并調(diào)用對應回調(diào)函數(shù)進行事件處理。此處會調(diào)用app_key_handle_process 。(真正對按鍵邏輯處理的地方是在app_key_init綁定按鍵代碼的結(jié)構(gòu)體對應的回調(diào)函數(shù)里面。繞了一大圈,按鍵代碼對應按鍵回調(diào)函數(shù)。)
接下來我們看下hal_key_open主要做了那些事情。
?
?
1).調(diào)用hal_gpiokey_open 對普通按鍵進行按鍵代碼與回調(diào)函數(shù)綁定,此處我們不關(guān)注。
2).檢測是否在充電盒里,CFG_HW_BOX_DET_PIN 引腳電平進行判斷,如果在充電盒內(nèi),需要長按pwr key 才能正常開機。此處我們不關(guān)注。
3).調(diào)用了hal_pwrkey_open? 函數(shù),宏表示是有PWRKEY就開啟該按鍵。我們繼續(xù)跟進看下該函數(shù)主要做了那些工作。
主要對PWRKEY 按鍵進行了中斷配置,并且注冊了中斷處理函數(shù)hal_pwrkey_irqhandler
跟蹤一下中斷處理函數(shù):
?
獲取了pmus state ,之后調(diào)用hal_pwrkey_handle_irq_state 處理。
此函數(shù)主要對PWRKEY 按鍵做了如下幾個工作:
1)是否為下降沿觸發(fā)。
2)是否是按下動作,更新按鍵對應的信息。重啟debounce定時器。?
?關(guān)于debounce Timer 定時器,需要回退到hal_key_open?函數(shù)。如下圖所示:
此處創(chuàng)建了debounce_timer,按鍵去抖定時器(10ms)。并且開啟按鍵中斷。后面所有的按鍵相關(guān)邏輯都在hal_key_debounce_handler 函數(shù)處理。
此函數(shù)處理的業(yè)務邏輯比較多,代碼也是比較亂。后面更新完善。。。?
3. 初始化按鍵,源文件路徑:/apps/main/apps.cpp
????????函數(shù)app_key_init()會調(diào)用?app_tws_ibrt_raw_ui_test_key_init()進行按鍵注冊到鏈表(分配內(nèi)存池,添加到app_key_conifg),并且綁定對應的按鍵代碼(APP_KEY_CODE_PWR)。之后跟進上報的按鍵事件(APP_KEY_EVENT_T),回調(diào)對應的注冊函數(shù) APP_KEY_HANDLE_CB_T,如下截圖所示:
二:CUSTORM?KEY
? ? ? 1. 根據(jù)原理圖確認PWR 按鍵控制引腳GPIO,找到SDK 關(guān)于按鍵配置的.c 源文件。/config/best1306_ibrt/target.h 和 /config/best1306_ibrt/target.c),如下截圖所示: