Z-Stack分析--main函数

程序的执行都是从main函数开始,也就是说我们的程序的入口都是main函数(注:对于嵌入式开发人员来说main函数也是普通的函数,也是被调用的,那么也可以被改为其他的函数名称,这需要你自己编写启动代码),对于Z-Stack协议栈来说main函数在ZMain.c(Z-Stack\Projects\zstack\ZMain\TI2530DB)里面定义,下面我们首先分析一下main函数实现的功能,然后我会连载和详细分析里面包含的每一个函数的作用。

下面我们拷贝一下Z-Stack里面main函数的代码来分析一下,代码如下:

int main( void )
{
osal_int_disable( INTS_ALL );
HAL_BOARD_INIT();
zmain_vdd_check();
InitBoard( OB_COLD );
HalDriverInit();
osal_nv_init( NULL );
ZMacInit();
zmain_ext_addr();
zgInit();
#ifndef NONWK
afInit();
#endif
osal_init_system();
osal_int_enable( INTS_ALL );
InitBoard( OB_READY );
zmain_dev_info();
#ifdef LCD_SUPPORTED
  zmain_lcd_init();
#endif
#ifdef WDT_IN_PM1
  WatchDogEnable( WDTIMX );
#endif
  osal_start_system();
  return 0;  
}

osal_int_disable( INTS_ALL )-->关闭所有中断

HAL_BOARD_INIT()-->硬件板子的初始化,比如led的初始化

zmain_vdd_check()-->检测电压,确保电压能使CC2530运行

InitBoard( OB_COLD )-->板子I/O的初始化

HalDriverInit();-->硬件驱动的初始化

osal_nv_init( NULL )-->对NV系统的初始化

ZMacInit()-->MAC的初始化

zmain_ext_addr()-->扩展地址的确定

zgInit()-->初始化NV条目

afInit()-->AF层的初始化,在禁止NONWK的时候需要初始化AF层

osal_init_system()-->初始化操作系统

osal_int_enable( INTS_ALL )-->开中断

InitBoard( OB_READY )-->板级最终初始化

zmain_dev_info()-->设备信息的显示

zmain_lcd_init()-->如果定义了LCD,那么执行LCD初始化

WatchDogEnable( WDTIMX )-->如果定义了看门狗,那么执行使能看门狗函数

osal_start_system()-->系统执行的入口,注意正常情况是不会运行到此函数的下一句,也就是return语句的,因为进入此函数以后会一直在里面循环执行任务,并不会跳出次循环。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值