基於CC2430 31的Zigbee實踐(3)

2021-05-23 16:31:52 字數 1076 閱讀 2024

一、osal_start_system()

在系統初始化各項工作做完後,呼叫osal_start_system()一直迴圈,不返回。

#if !defined ( zbit )  //一般是define zbit的

hal_processpoll() ; //將timer1、timer3、timer4進行初始化,如果允許定義了hal_uart,則初始化uart,一般是沒有define hal_uart的。

do

} while (++idx < taskscnt);

//每一型別的task都對應乙個tasksevent陣列中的乙個idx。idx越小,優先順序越高,因此是按高優先順序優先執行

if (idx < taskscnt)

return ( srchtimer );

} 在開始時如果鍊錶為空,則返回空,如果該定時器列表已經存在而且不包括當前需要插入的任務和時間號,同樣返回空; 如果該鍊錶中已經存在當前的任務和事件號則返回當期非空的指標。

所以在外層函式osaladdtimer中可以判斷返回值是否為空 來決定是不是要將當前的任務和事件號插入。如果為空,則需要重新分配一塊區域給timer。

if ( newtimer )

else

else

return ( newtimer );

} else

return ( (osaltimerrec_t *)null );

}2)如果事件型別為sys_event_msg, 函式呼叫osal_msg_receive(byte task_id)在  臨界區 中讀取當前接收的afincomingmsgpacket_t 型別的資料。

所得到的是當前task_id的  訊息鍊錶(不僅僅是乙個訊息)

osal_msg_hdr_t *listhdr;

return ( (byte*) listhdr );

b)處理msgpkt

(1)key_change

(2)af_incoming_msg_cmd

(3)zdo_state_change,終端的state改變了,傳送到協調器,協調器對其進行處理。

基於CC2430 31的Zigbee實踐(1)

零 感想 cc2430是乙個片上系統,整合了ieee 802.15.4的zigbee標準網路,在這個網路中包含終端 協調器 路由器。協調器和路由器有點類似但不相同,協調器不負責網路的路由只負責網路的建立,而路由器主要負責網路的路由。涉及的關鍵是網路的建立與繫結,資料的收發。當資料來時,如果該 沒有休...

基於C C 的學生管理系統

一 需求分析 1 某學校有本科生和研究生兩類學生。a.本科生資訊 學號 姓名 性別 專業 年級 班級 高數 成績 英語成績 c語言 總成績 班級排名 年級排名 其中 學號 姓名 性別 專業 年級 班級 高數 成績 英語成績 c語言成績 為輸入項,總成績是計算項,班級排名是總成績在班內名次,年級排名是...

C C 實現基於UDP的網路程式設計

在網路程式設計中,我們一般用udp或者tcp這兩種協議來進行編寫網路應用程式,那叫udp呢?udp udp的簡稱是user datagram protocol,中文名是使用者資料報協議,是osi 參考模型中一種無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務,ietf rfc 768是udp...