完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
程序的执行都是从main函数开始,也就是说我们的程序的入口都是main函数(注:对于嵌入式开发人员来说main函数也是普通的函数,也是被调用的,那么也可以被改为其他的函数名称,这需要你自己编写启动代码),对于Z-Stack协议栈来说main函数在ZMain.c(Z-StackProjectszstackZMainti2530DB)里面定义,下面我们首先分析一下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语句的,因为进入此函数以后会一直在里面循环执行任务,并不会跳出次循环。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
物联网工程师必备:怎么选择不同的无线连接技术,本指南帮你忙!
3067 浏览 1 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】WIFI功能测试
3716 浏览 0 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】Arduino的替代SublimeText3+STino
3227 浏览 0 评论
使用端口扩展器轻松高效地向IIoT端点添加具有成本效益的子节点
3761 浏览 1 评论
20282 浏览 11 评论
模组有时候复位重启后输出日志为“REBOOT_CAUSE_SECURITY_PMU_POWER_ON_RESET”的原因?
394浏览 2评论
378浏览 2评论
2794浏览 1评论
452浏览 1评论
511浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-19 00:22 , Processed in 0.598676 second(s), Total 40, Slave 32 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191