zigbee學習之路 十五 基於協議棧的按鍵實驗

2022-05-03 17:27:07 字數 1454 閱讀 5163

一.前言

經過上次的學習,相信大家已經初步學會使用zigbee協議進行傳送和接受資料了。今天,我們要進行的實驗是按鍵的實驗,學會如何在協議棧裡實現按鍵中斷。

二.實驗功能

在協議棧上實現按鍵中斷,but1 按下,led1 閃爍兩次。

三.**講解

大家還記得,前面做過的按鍵實驗是怎麼配置的嗎,其實基於zigbee的協議棧原理是差不多的,我們要對按鍵的介面和狀態是差不多,ti已經為我們建立了專用的按鍵配置的**檔案,我們只要在此基礎上修改就行了。先開啟hel_key.c進行修改,下面是**

#define hal_key_sw_6_port   p0   //1、配置io口(s1在p0_4)

#define hal_key_sw_6_bit    bv(4)

#define hal_key_sw_6_sel    p0sel

#define hal_key_sw_6_dir    p0dir/* edge interrupt */

#define hal_key_sw_6_edgebit  bv(0)

#define hal_key_sw_6_edge     hal_key_rising_edge //2、p0上公升沿觸發中斷/* sw_6 interrupts */

#define hal_key_sw_6_ien      ien1  /* cpu interrupt mask register */

#define hal_key_sw_6_ienbit   bv(5) /* mask bit for all of port_0 */

#define hal_key_sw_6_ictl     p0ien /* port interrupt control register */

#define hal_key_sw_6_ictlbit  bv(4) /* p0ien - p0.1 enable/disable bit */

#define hal_key_sw_6_pxifg    p0ifg /* interrupt flag at source */

以上就是對按鍵埠進行配置,和我們普通的i/o口初始化差不多。

然後我們繼續修改,在hal_board_cfg.h 中修改

#define push1_bv bv(4)//s1 在p0_4

#define push1_sbit p0_4

最後,我們在onboard.c中進行修改

預設為查詢方式,現在我們將其改為中斷方式

我們既然使用了中斷,就要配置並用它,在hal_key.c函式中開啟中斷

這樣的話,按鍵相關的配置就出不多完成了,只要等著zigbee中的事件函式呼叫就行了。下面是具體的按鍵的處理函式。

當檢測到按鍵按下的時候,我們就可以看到燈閃爍的效果了

四.總結

通過本次,主要想向大家介紹的是zigbee裡的按鍵函式以及運用,根據按鍵對應的不同i/o口,來進行修改,達到自己的目的,需要具體**的同學可以聯絡我。

zigbee學習之路 一 zigbee介紹

一.前言 二.zigbee定義 三.zigbee特點 下面是zigbee特點的詳細介紹 1 低功耗 兩節五號電池支援長達6 個月到2 年左右的使用時間。2 低成本 由於簡化了協議棧,降低核心的效能要求,以cc2530 為例,核心就是乙個增強型的8051 核心,從而降低了晶元成本。每塊cc2530 大...

我的ZigBee學習之路

每個人總要有自己的一技之長,來體現自己的價值。每個都應該培養自己的以及之長,來實現自己的價值。這個世界是殘酷的,同時也是公平的,天道酬勤 相信付出總會有所回報。時間,是個神奇的東西,它帶走了一切,同時也帶來了一切。它是我們生命中唯一可以把握的事物。假如我們能夠活到90歲,每年365天,每天24小時,...

Zigbee學習之路3(單播實驗)

嘿,又和大家見面了 言歸正傳,在zigbee網路裡,模組之間要進行通訊,發射模組非常明確知道接收模組的網路位址,以這個位址傳送資料給接收模組,叫單播。模組在入網的時候,父節點隨機分配網路位址給子節點,但是協調器模組在網路裡的位址永遠是0x0000.一 單個任務掛鉤乙個端點!1 傳送資料的流程 cha...