首先自己去新建一个工程,并把相应的代码拷贝至工程文件夹,同时将文件添加到工程中,这样有一个比较直观的关于代码架构的认识。然后开始读代码。
int main( void ) { // Turn off interrupts //关闭中断 osal_int_disable( INTS_ALL ); // Initialization for board related stuff such as LEDs //初始化与板子相关的设备如LED等,设置端口方向 HAL_BOARD_INIT(); // Make sure supply voltage is high enough to run //确保电压足够支撑系统运行,如果未上电,指示灯会闪烁 zmain_vdd_check(); // Initialize board I/O //关闭中断,关闭所有LED灯 InitBoard( OB_COLD ); // Initialze HAL drivers //初始化定时器,LCD,按键,AD等外围设备 HalDriverInit(); // Initialize NV System //初始化非易失性存储器 osal_nv_init( NULL ); // Initialize the MAC //初始化MAC层,都是库函数,看不到实现 ZMacInit(); // Determine the extended address zmain_ext_addr(); // Initialize basic NV items zgInit(); #ifndef NONWK // Since the AF isn't a task, call it's 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 //在LCD上显示本节点信息,没有LCD可以用串口代替 zmain_dev_info(); /* Display the device info on the LCD */ #ifdef LCD_SUPPORTED zmain_lcd_init(); #endif #ifdef WDT_IN_PM1 /* If WDT is used, this is a good place to enable it. */ WatchDogEnable( WDTIMX ); #endif //LED1_SBIT = 1; //开始系统的轮询 osal_start_system(); // No Return from here #if 0 #endif//PCT return 0; // Shouldn't get here. } // main()