QST青軟實訓學員學習總結-2020/4/22-ZigBee

時光飛逝,日月如梭,時間滴答滴答的就過去了。
轉眼間就迎來了四月的尾聲,我國國內的疫情情況呈逐漸向好的方向,外防輸入,內防反彈。成爲我國當前防疫工作的主要目標。但縱觀世界的疫情局面任然嚴峻,我們還是不能掉以輕心。我國加快復工復產的節奏更快了,各個省市直轄市的初中、高中已經開學,有的省市也在爲學校開學籌備相應的計劃,武漢也得以解封,整個城市整個被新冠病毒打壓患者,都在慢慢好起來。至此,我依然還想對那些義無反顧的白衣天使們,致以最崇高的敬意。

今天內蒙古自治區教育廳發出通知:5月13日起,經評估達到開學復課疫情防控標準的高等院校,可以安排開學復課。這條通知的發出,評論區瞬間炸開了鍋,衆多大學生感嘆到:幸好我沒有放棄,終於等到你!可我依然高興不起來,因爲我在苦等山東青島的開學復課通知,希望早日能得到你消息!親!

在四月份的網課學習中,主要是以《ZigBee技術開發》這門課程開展學習的。我認爲學習ZigBee技術與之前所學的其他技術有一個很明顯區別,之前我們在學習《單片機》課程,我們就是要學會熟練掌握相關MCU的一些基礎功能。就比如我們在學習STC89S52時,我們主要的一些實驗就是一些對GPIO、串口通信、定時器/計數器,還有相關的LED、LCD、DS18B20溫度傳感器的驅動和使用方法。其實本質就是看着數據手冊對各個寄存器去賦值罷了。而對於學習ZigBee技術來說是CC2530 MCU + Z_Stack。

CC2530結合了RF 收發器的優良性能,業界標準的增強型8051 CPU,系統內可編程閃存,8-KB RAM 和許多其它強大的功能。CC2530 具有不同的運行模式,使得它尤其適應超低功耗要求的系統。和我們之前所學的STC89S52都是8051的內核,這一點對我們來說對CC2530的學習就更加熟悉了。有一些區別就是功能更多了更強大了,比如:有RF收發器、DMA讀寫、ADC採集、睡眠定時器等功能。一下是我對一些突出學習問題的總結:
1.關於中斷服務子程序的編輯寫。
1)不要在中斷裏使用for/while …類似的循環語句。
2)不要在中斷裏運算float…。
3)不要在中斷裏解釋UART的數據。
4)儘量不要在中斷中設置EA=0/1。
5)中斷服務子程序的代碼越短越好,要簡潔高效。

:因爲中斷的產生會打斷原本CPU的正常運行流程,在進入中斷後應該儘可能的快速跳出中斷,更少的佔用CPU資源,才能減少對CPU的影響,所以類似的循環、大量的運算,數據轉換,我們可以利用協議棧中消息、事件的方法來實現,中斷裏也可以執行osla_start_timerEx()…這樣的軟定時,通過這個函數再去觸發事件。

Z_Stack協議棧是我們第一次所接觸的知識點,ZigBee協議棧就是將各個層定義的協議都集合在一起,以函數的形式實現,並給用戶提供一些API,給用戶調用。Z-Stack協議棧一個核心就是OSAL操作系統。

OSAL操作系統是一個基於任務輪詢方式的操作系統,其任務調度和資源分配由操作系統抽象層OSAL管理着。在任務輪詢過程中,系統將會不斷查詢每個任務是否有事件發生,如果有事件發生,就執行相應的事件處理函數,如果沒有事件發生,則查詢下一個任務。深入理解OSAL的調度機制和工作機理,是靈活應用Z-Satck協議棧進行Zigbee無線應用開發的重要基礎。關鍵是要理解任務初始化函數osalInitTasks()、任務標識符taskID、任務事件數組taskEvents[]和任務事件處理函數指針數組tasksArr[]之間的對應關係以及它們在OSAL運行過程中的執行情況。

總之對於Zigbee技術的學習,Z_Stack協議棧毫無疑問是一塊比較難啃的骨頭,學習就是從一切的未知開始,進行不斷的摸索,尋找解決問題的突破口,從而對這個問題加深印象,積累經驗,學習不再是從入門到“入土”,而是讓我們一起攜手打開ZigBee的大門,從入門到“巔峯”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章