zigbee协议栈的系统相关函数的使用 仿照协议栈写事件
文章目錄
- 1.osal_set_event函數的使用
- 2.osal_start_timerEx函數,數碼管變成c,兩秒鐘以后,燈點亮。
- 3.我們能不能自己添加一個事件而不用GENERICAPP_SEND_MSG_EVT事件。
主要就是通過這個實驗知道了:
1.osal_set_event函數的使用
修改事物,點亮p0_1
修改代碼GenericApp.c的如下代碼:
if ( events & GENERICAPP_SEND_MSG_EVT ){// Send "the" messageGenericApp_SendTheMessage();// Setup to send message againosal_start_timerEx( GenericApp_TaskID,GENERICAPP_SEND_MSG_EVT,GENERICAPP_SEND_MSG_TIMEOUT );// return unprocessed eventsreturn (events ^ GENERICAPP_SEND_MSG_EVT);}
這里面的兩個變量可以看:
設置斷點,全速運行,然后運行至斷點,顯示:
按F9取消當前斷點,可發現數碼管顯示C
此時再全速運行,可以發現程序跳到了這里
再按F9,然后全速運行,燈變亮了
然后復位,數碼管變成c,燈立即點亮
2.osal_start_timerEx函數,數碼管變成c,兩秒鐘以后,燈點亮。
把osal_set_event(GenericApp_TaskID,GENERICAPP_SEND_MSG_EVT);
改成osal_start_timerEx(GenericApp_TaskID,GENERICAPP_SEND_MSG_EVT,2000);
3.我們能不能自己添加一個事件而不用GENERICAPP_SEND_MSG_EVT事件。
找到定義#define GENERICAPP_SEND_MSG_EVT 0x0001
其中四位中的每一位只能是8421中的一個,然后其余所有位為0,也就是說十六位里面只有一位是1。
1.在GenericApp.h里面,添加我們的事件GENERICAPP_MY_EVT的定義
#define GENERICAPP_MY_EVT 0X0002
2.模仿著在GenericApp.c建一個語句
把
if ( events & GENERICAPP_SEND_MSG_EVT ){return (events ^ GENERICAPP_SEND_MSG_EVT);}變成:
if ( events & GENERICAPP_MY_EVT ){return (events ^ GENERICAPP_MY_EVT);}我們現在要實現一個任務,把p0_4點亮
改
if(GenericApp_NwkState == DEV_ZB_COORD){//如果模塊成了協調器,進到這LS164_BYTE(11);//osal_set_event(GenericApp_TaskID,GENERICAPP_SEND_MSG_EVT);//應用層GenericApp_TaskID任務處理GENERICAPP_SEND_MSG_EVT事物osal_start_timerEx(GenericApp_TaskID,GENERICAPP_MY_EVT,3000);}
改:
但是燈不亮,添加斷點
發現在
P0DIR |=0X10;
P0_4=0;
出問題。
修改:初始化工作作全面
if ( events & GENERICAPP_SEND_MSG_EVT ){P0SEL &=0XEF;P0DIR |=0X10;P0_4=0;return (events ^ GENERICAPP_SEND_MSG_EVT);}在Zmain.c里面的endif里面添加,以達到覆蓋的目的,覆蓋和TI起沖突的那部分
#endifLS164_Cfg();LS164_BYTE(10);此時燈點亮了。
總結
以上是生活随笔為你收集整理的zigbee协议栈的系统相关函数的使用 仿照协议栈写事件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有机晶体数据库_Cambridge St
- 下一篇: 莫烦python博客_《莫烦Python