找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4913|回復: 0
打印 上一主題 下一主題
收起左側(cè)

CC2530的按鍵流程

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:76127 發(fā)表于 2015-4-18 00:27 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
按鍵有兩種實現(xiàn)方式查詢和中斷,其初始位置在OnBoard.c中InitBoard()中
      OnboardKeyIntEnable = HAL_KEY_INTERRUPT_ENABLE;  //中斷方式
    //OnboardKeyIntEnable = HAL_KEY_INTERRUPT_DISABLE;  查詢方式
    HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);
   OnBoard_KeyCallback--按鍵回調(diào)函數(shù)
1,查詢法函數(shù)調(diào)用流程如下:      
    HalKeyConfig()配置一定時器為輪詢按鍵作準備——>
    時間一到觸發(fā)系統(tǒng)任務事件調(diào)用hal_driver.c中Hal_ProcessEvent()—— >
    調(diào)用HalKeyPoll()得到按鍵值——>
    調(diào)用OnBoard.c中OnBoard_KeyCallback()進一步處理——>
    調(diào)用OnBoard_SendKeys()構(gòu)造消息包,準備觸發(fā)應用按鍵事件【注意這個應用之前必須通過RegisterForKeys()注冊接收按鍵事件的任務ID】——>
    調(diào)用osal_msg_send()向系統(tǒng)發(fā)送消息——>
    調(diào)用osal_set_event()設置事件發(fā)生標志——>
    調(diào)用SampleApp_ProcessEvent()處理事件——>
    最終調(diào)用SampleApp_HandleKeys()處理具體按鍵事件

2,中斷法函數(shù)調(diào)用流程如下:      
    HalKeyConfig()進行按鍵中斷配置——>
    按鍵引起中斷進入中斷函數(shù)HAL_ISR_FUNCTION()(該函數(shù)在hal_key.c中)——>
    調(diào)用halProcessKeyInterrupt()對按鍵中斷進行下一步處理:清除中斷標志,啟動一定時器——>
    相應事件為HAL_KEY_EVENT,時間為HAL_KEY_DEBOUNCE_VALUE。(且#define HAL_KEY_DEBOUNCE_VALUE 25,即25ms,這與開頭的英文說明一致,在中斷發(fā)生后,需等待25ms再讀鍵值,以消除按鍵的回跳。)
    25ms到了以后,觸發(fā)HAL層任務HAL_KEY_EVENT事件,調(diào)用HAL層任務事件處理函數(shù)Hal_ProcessEvent()
    時間一到觸發(fā)系統(tǒng)任務事件調(diào)用HAL\Common\hal_driver.c中Hal_ProcessEvent()——>
    調(diào)用HalKeyPoll()得到按鍵值——>
    調(diào)用OnBoard.c中OnBoard_KeyCallback()進一步處理——>
    調(diào)用OnBoard_SendKeys()構(gòu)造消息包,準備觸發(fā)應用按鍵事件【注意這個應用之前必須通過RegisterForKeys()注冊接收按鍵事件的任務ID】——>

    調(diào)用osal_msg_send()向系統(tǒng)發(fā)送消息——>
    調(diào)用osal_set_event()設置事件發(fā)生標志——>
    調(diào)用SampleApp_ProcessEvent()處理事件——>
    最終調(diào)用SampleApp_HandleKeys()處理具體按鍵事件


注:
1,根據(jù)實際需要在在hal_key.c中HalKeyConfig()中,修改代碼,其中原有程序查詢方式下只對上,下,左,右四個按鍵進行配置處理;中斷方式只是sw6,sw7進行配置處理。
2,在應用層SampleApp_HandleKeys()添加具體按鍵事件


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關帖子

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表