欢迎来到天天文库
浏览记录
ID:42160510
大小:92.00 KB
页数:7页
时间:2019-09-09
《Z-Stack中OSAL按键事件的触发流程分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、z-Stack中OSAL按键事件的触发流程分析(2010-11-3010:53)分类:ZigBee技术学习首先在Main函数中,因为这是整个系统的入口点。(1)Main函数所有程序运行首先是在主函数下开始的,这里也不例外。找到Zmain.c文件下的主函数:ZSEGintmain(void){//初始化时要关屮断osal_int_disable(INTS_ALL);//也压務测程序zmain_vdd_check();//初始化堆栈zmain_rani_init();//第一次初始化平台*****注释
2、1*******InitBoard(OBCOLD);//硬件驱动初始化******注释2******HalDriverTnit();//系统初始化*******注释3*******osal_init_system();//第二次初始化平台*******注释4*******TnitBoard(0B_READY);■osal_start_system();//操作系统开始运行}说明:(1)注释1:该函数在onboard,c中,原型如下voidInitBoard(bytelevel){if(level=
3、=OB_COLD){这里执行第一次初始化的内容}else}(2)注释2:这个函数在haldrivers.c中voidHalDriverTnit(void)#if(definedHAL_KEY)&&(HAL_KEY==TRUE)HalKeylnit();#endif}HalKeyTnitO这个函数在hal_key.c中voidIlalKeylnit(void){#if(HAL_KEY==TRUE)/*Initializepreviouskeyto0*/halKeySavedKeys二0;#ifdef
4、ined(HAL_KEY_SW_5_ENABLE)HAL_KEY_SW_5_SEL&二~(HAL_KEY_SW_5_BIT);/*pOSEL的第5位置0,把P0.5作为普通10M*/HAL_KEY_SW_5_DIR&二~(HAL_KEY_SW_5_BIT);/*pODTR的第5位置0,把P0.5作为输入口*/HAL_KEY_SW_5_1NP
5、=HAL_KEY_SW_5_B1T;ASetpininputmodeto三态*/Sendif/*回调函数的初始化,赋值为NULL*/pHalKeyProces
6、sFunction二NULL;/*按键还未经配置,赋值为FALSE*/HalKeyConfigured=FALSE;#endif/*HAL_KEY*/}总结:这个函数基本完成了相应管脚的基本配置管脚的输入输出等等,给一些变量赋初值。其中回调函数的定义是这样的statichalKeyCBacktpHalKeyProcessFunction;那halKeyCBackt是这样定义的typedefvoid(^halKeyCBackt)(uint8keys,uint8state);也就是说它是一个函数的指针
7、。(1)注释4:该函数在onboard,c中,原型如下voidInitBoard(bytelevel){if(level二二0B_C0LD){〃这里执行第一次初始化的内容}else//以下执行第二次初始化的内容OnboardKeylntEnable=HAL_KEY_1NTERRUPT_D1SABLE;HalKeyConfig(OnboardKeylntEnable,OnBoardKeyCallback);}"}这里执行else后面的内容,这里调用了HalKeyConfig()函数,这个函数是按键的
8、一些配置,voidHalKeyConfig(boolinterruptEnable,halKeyCBacktcback)#if(I1AL_KEY二二TRUE)/*Enable/DisableInterruptor*/HalKeylntEnable=interruptEnable;/*Registerthecallbackfucntion*/pHalKeyProcessFunction二cback;//这里给冋调函数赋值/*Determineifintcrruptiscnableornot*/if(
9、Hal_KeyIntEnable)#ifdefined(HAL_KEY_SW_5_ENABLE)PICTL&二~(HAL_KEY_SW_5_EDGEBIT);/*Setrisingorfallingedge*/#if(HAL_KEY_SW_5_EDGE==HAL_KEY_FALLING_EDGE)PICTL
10、=HAL_KEY_SW_5_EDGEBIT;WendifHAL_KEY_SW_5_TCTL
11、=HAL_KEY_SW_5_TCTLBTT;/*Setinterruptenable
此文档下载收益归作者所有