標題: CC2530的按鍵流程 [打印本頁]
作者: das 時間: 2015-4-18 00:27
標題: CC2530的按鍵流程
按鍵有兩種實現方式查詢和中斷,其初始位置在OnBoard.c中InitBoard()中
OnboardKeyIntEnable = HAL_KEY_INTERRUPT_ENABLE; //中斷方式
//OnboardKeyIntEnable = HAL_KEY_INTERRUPT_DISABLE; 查詢方式
HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);
OnBoard_KeyCallback--按鍵回調函數
1,查詢法函數調用流程如下:
HalKeyConfig()配置一定時器為輪詢按鍵作準備——>
時間一到觸發系統任務事件調用hal_driver.c中Hal_ProcessEvent()—— >
調用HalKeyPoll()得到按鍵值——>
調用OnBoard.c中OnBoard_KeyCallback()進一步處理——>
調用OnBoard_SendKeys()構造消息包,準備觸發應用按鍵事件【注意這個應用之前必須通過RegisterForKeys()注冊接收按鍵事件的任務ID】——>
調用osal_msg_send()向系統發送消息——>
調用osal_set_event()設置事件發生標志——>
調用SampleApp_ProcessEvent()處理事件——>
最終調用SampleApp_HandleKeys()處理具體按鍵事件
2,中斷法函數調用流程如下:
HalKeyConfig()進行按鍵中斷配置——>
按鍵引起中斷進入中斷函數HAL_ISR_FUNCTION()(該函數在hal_key.c中)——>
調用halProcessKeyInterrupt()對按鍵中斷進行下一步處理:清除中斷標志,啟動一定時器——>
相應事件為HAL_KEY_EVENT,時間為HAL_KEY_DEBOUNCE_VALUE。(且#define HAL_KEY_DEBOUNCE_VALUE 25,即25ms,這與開頭的英文說明一致,在中斷發生后,需等待25ms再讀鍵值,以消除按鍵的回跳。)
25ms到了以后,觸發HAL層任務HAL_KEY_EVENT事件,調用HAL層任務事件處理函數Hal_ProcessEvent()
時間一到觸發系統任務事件調用HAL\Common\hal_driver.c中Hal_ProcessEvent()——>
調用HalKeyPoll()得到按鍵值——>
調用OnBoard.c中OnBoard_KeyCallback()進一步處理——>
調用OnBoard_SendKeys()構造消息包,準備觸發應用按鍵事件【注意這個應用之前必須通過RegisterForKeys()注冊接收按鍵事件的任務ID】——>
調用osal_msg_send()向系統發送消息——>
調用osal_set_event()設置事件發生標志——>
調用SampleApp_ProcessEvent()處理事件——>
最終調用SampleApp_HandleKeys()處理具體按鍵事件
注:
1,根據實際需要在在hal_key.c中HalKeyConfig()中,修改代碼,其中原有程序查詢方式下只對上,下,左,右四個按鍵進行配置處理;中斷方式只是sw6,sw7進行配置處理。
2,在應用層SampleApp_HandleKeys()添加具體按鍵事件
歡迎光臨 (http://m.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
久久精品国产一区二区电影
|
中文字幕1区2区3区
日韩在线视频免费观看
|
亚洲视频三区
|
亚洲电影免费
|
天天看天天操
|
视频二区在线观看
|
激情毛片
|
午夜精品一区二区三区在线观看
|
999久久久
|
国产福利久久
|
a级片网站|
久久精品色欧美aⅴ一区二区
|
91免费在线看|
最新中文字幕久久
|
久草在线高清
|
精品国产欧美一区二区
|
日韩在线视频一区
|
狠狠干av|
日韩中文一区二区三区
|
亚洲欧美在线一区
|
九七午夜剧场福利写真
|
日韩一级免费观看
|
一区二区av在线
|
蜜月aⅴ国产精品
|
国产精品一卡二卡三卡
|
久久午夜剧场
|
午夜精品一区二区三区在线观看
|
午夜影院在线观看版
|
国产一区二区在线免费
|
在线观看亚洲
|
久久久久无码国产精品一区
|
不卡视频一区二区三区
|
亚洲成人综合社区
|
欧美乱做爰xxxⅹ久久久
|
欧美在线综合
|
欧美日日|
国产精品一区二
|
欧美一级片在线观看
|
国产在线精品区
|
国产在线一区二区三区
|
日韩av免费在线电影
|