<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                * 導師視頻講解:[**去聽課**](https://www.bilibili.com/video/BV1k34y1D7Vz/) >[success] **技術支持說明:** >**1**.一般以自主學習為主 > **2**.可到官方問答社區中提問:[**去提問**](https://bbs.csdn.net/forums/zigbee) > **3**.工程師**會盡快**解答社區問題,但他們是一線開發,【**難以保證**】解答時效,解答辛苦,感謝理解! <br/> 本節課將直接以實驗的方式講解如何使用HAL按鍵驅動API,本節課的實驗內容是按下按鍵后閃爍LED。 ### HAL提供了完善按鍵驅動API,其定義在在hal\_key.h和hal\_key.c中,如下圖所示。 ![](https://img.kancloud.cn/da/6c/da6c5bf04b54026103aad3b5a4d1e8d0_288x608.png =200x) ### #### **按鍵的定義與映射** 打開頭文件hal\_led.h,可以找到如下代碼: ![](https://img.kancloud.cn/79/ec/79ece9777d5afc6f09846747e0cb8491_832x304.png =500x) 其中的SW\_1到SW\_5是方向按鍵,用得很少,故不展開講解。SW\_6和SW\_7是常規按鍵。 ### 與LED類似,可以在頭文件hal\_board\_cfg.h中配置按鍵與CC2530引腳的對接關系。以下是SW\_6的默認是配置,代碼如下: ### ``` /* S1 按鍵 */ #define PUSH1_BV BV(1) #define PUSH1_SBIT P0_1 //按鍵按下時的電平 #if defined (HAL_BOARD_CC2530EB_REV17) #define PUSH1_POLARITY ACTIVE_HIGH #elif defined (HAL_BOARD_CC2530EB_REV13) #define PUSH1_POLARITY ACTIVE_LOW #else #error Unknown Board Indentifier #endif ``` ### 通常,這個按鍵已經能滿足大多數設備需求了。配套的ZigBee開發板中的按鍵連接的引腳正是P0\_1。然而,我們按鍵的電路是按下時為低電平,未按下時為高電平,所以還需要修改一下配置,修改后的配置代碼如下: ### ``` /* S1 按鍵 */ #define PUSH1_BV BV(1) #define PUSH1_SBIT P0_1 //表示低電平時驅動按鍵 #define PUSH1_POLARITY ACTIVE_LOW ``` >[info] 在前面的章節中已經講解過按鍵的電路,有需要的讀者可以翻閱一下。 <br/> ## **處理按鍵事件** 由于按鍵是受OSAL的調度的,所以在Z-Stack中使用按鍵之前,必須要現在OSAL中注冊。可以在應用層中注冊,應用層的初始化函數zclSampleSw_Init默認已經完成了此注冊工作,如圖所示: ![](https://img.kancloud.cn/7d/99/7d9901f2f11fd384e1c7504619e6bac0_786x174.png =600x) ### 注冊后,如果按鍵被按下,那么就會產生一個應用層的系統事件KEY\_CHANGE。打開zcl\_samplesw.c文件中的zclSampleSw\_event\_loop函數,可以找到KEY\_CHANGE事件的處理函數zclSampleSw\_HandleKeys,如圖所示。 ![](https://img.kancloud.cn/5b/a9/5ba94790a392afbaa4a8ab713eed97cc_758x508.png =450x) ### 事件處理函數zclSampleSw\_HandleKeys的代碼定義如下: ![](https://img.kancloud.cn/4e/70/4e7071c83479487956c6d45c7db7bcdd_832x488.png =500x) ### zclSampleSw\_HandleKeys函數默認的工作內容是在LCD顯示屏中顯示按鍵按下的信息。開發者可在此處添加按鍵事件處理代碼,例如前面章節講解過的閃爍LED,代碼如下: ![](https://img.kancloud.cn/94/6b/946b74a36d6d635587975a377850112c_832x302.png =600x) <br/> ## **啟用按鍵的宏定義** 與LED類似,在使用按鍵前,需要啟用按鍵對應的宏定義HAL\_KEY。在下圖中的Defined sybols中輸入以下代碼。 ### ``` HAL_KEY=TRUE ISR_KEYINTERRUPT ``` ### ![](https://img.kancloud.cn/bc/0d/bc0ddc079578aebf122d019825753829_832x810.png =600x) ### 定義宏ISR\_KEYINTERRUPT是因為系統是使用中斷的方式檢測按鍵行為的,讀者暫時大概了解一下即可。 <br/> ## **調試仿真** 編譯工程后把程序燒錄到開發板中,并且全速運行后,當按鍵被按下時可以看到LED閃爍。 <br/> <br/> ## **項目定制** * 如需項目定制開發,可掃碼添加項目經理好友(注明“**項目定制**”) * 定制范圍:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等IoT技術方案 * 善學坊官網:[www.sxf-iot.com](https://www.sxf-iot.com/) ![](https://img.kancloud.cn/ca/73/ca739f92cab220a3059378642e3bd502_430x430.png =200x) * 非項目定制**勿擾**,此處**非**技術支持
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看