- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SimpleAPP详解
SimpleAPP分析
SimpleApp分析
程序总是从helloword开始的,如果能找到一个例子开始,那么是最好不多的了,还好Ti为我们提供了很多的机会,让我们开始看一下simpleapp吧【Texas Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Samples\SimpleApp】
这里之所以把和灯相连的设备作为协调器或者是路由器我认为是为了和家庭或者是场景中的其他设备进行交互所需要的。因为灯的状态还必须被其他的设备知道,就必须通知其他设备当前的状态!找到ZMain.c,看看函数的描述Description: Startup and shutdown code for ZStack(启动和关闭Z-Stack)看来来对地方了哈。第一个宏:MINIMIZE_ROOT(line 126)
如果定义这个宏那么ZMAIN中的API函数将被在ROOT段外实现以为用户提供更多的空间来定义自己的常量,默认这个编译选项是不定义的。所谓的ZMAIN API函数定义在line138-line144。在line152终于看到了期待的main()
ZSEG int main( void ){? // Turn off interrupts? osal_int_disable( INTS_ALL );
? // Initialize HAL? //处理器运行时钟,LED IO口设置? HAL_BOARD_INIT();
? // Make sure supply voltage is high enough to run? zmain_vdd_check();
? // Initialize stack memory? zmain_ram_init();
? // Initialize board I/O? InitBoard( OB_COLD );
? // Initialze HAL drivers? HalDriverInit();
? // Initialize NV System? osal_nv_init( NULL );
? // Determine the extended address? zmain_ext_addr();
? // Initialize basic NV items? zgInit();
? // Initialize the MAC? ZMacInit();
#ifndef NONWK? // Since the AF isnt a task, call its initialization routine? afInit();#endif
? // Initialize the operating system? osal_init_system();
? // Allow interrupts? osal_int_enable( INTS_ALL );
? // Final board initialization? InitBoard( OB_READY );
? // Display information about this device? zmain_dev_info();
? /* Display the device info on the LCD */#ifdef LCD_SUPPORTED? zmain_lcd_init();#endif
? osal_start_system(); // No Return from here} // main()
2、
osal_int_disable( INTS_ALL );//关中断
//【OSAL.C】参数为INTS_ALL则关闭所有中断,否则关闭相应中断
{
if ( interrupt_id == INTS_ALL )
{
HAL_DISABLE_INTERRUPTS();
//关闭所有中断响应【】的定义在【】,其实就是为了保证宏能够准确的被执行用的返回禁止相应的中断【】执行成功就返回成功标志,其实按程序流程来看这个函数总是会返回成功标志的HAL_BOARD_INIT();//初始化板子硬件部分
//板子初始化函数其实是一个宏,定义在【hal_board_cfg.h】“\”符号其实是编译环境下面的行中断符,表示这一样没有结束,其实是一个“\”。
#define HAL_BOARD_INIT() { \
uint16 i; \
文档评论(0)