CC2530组网实验-1

1,ZigBee协议栈

协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议的,进而实现无线数据收发。

ZigBee栈就是将各个层的协议集结在一起,以函数的形式实现API调用

2,ZigBee协议栈安装、编译与下载

首先安装CC2530的协议栈,和安装软件一样的操作;

71c0a20a4e8e452b939a58f982cfba5d.png

3,源代码学习与解析

此处源代码来自亿研电子提供的资料:特此感谢!

首先是main函数

int main( void )
{
  // Turn off interrupts
  osal_int_disable( INTS_ALL ); //关闭所有中断

  // Initialization for board related stuff such as LEDs
  HAL_BOARD_INIT();             //初始化系统时钟

  // Make sure supply voltage is high enough to run
  zmain_vdd_check();            //检查芯片电压是否正常

  // Initialize board I/O
  InitBoard( OB_COLD );         //初始化I/O ,LED 、Timer 等

  // Initialze HAL drivers
  HalDriverInit();              //初始化芯片各硬件模块

  // Initialize NV System
  osal_nv_init( NULL );         //初始化Flash 存储器

  // Initialize the MAC
  ZMacInit();                   //初始化MAC 层

  // Determine the extended address
  zmain_ext_addr();             //确定IEEE 64位地址

#if defined ZCL_KEY_ESTABLISH
  // Initialize the Certicom certificate information.
  zmain_cert_init();
#endif

  // 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
  zmain_dev_info();             //显示设备信息

  /* Display the device info on the LCD */
#ifdef LCD_SUPPORTED
  zmain_lcd_init();             //初始化LCD
#endif

#ifdef WDT_IN_PM1
  /* If WDT is used, this is a good place to enable it. */
  WatchDogEnable( WDTIMX );
#endif

  osal_start_system(); // No Return from here 执行操作系统,进去后不会返回

  return 0;  // Shouldn't get here.
} // main()

重点关注初始化系统进入系统函数

下面是初始化系统函数

uint8 osal_init_system( void )
{
  // Initialize the Memory Allocation System
  osal_mem_init();

  // Initialize the message queue
  osal_qHead = NULL;

  // Initialize the timers
  osalTimerInit();

  // Initialize the Power Management System
  osal_pwrmgr_init();

  // Initialize the system tasks.
  osalInitTasks();//任务初始化

  // Setup efficient search for the first free block of heap.
  osal_mem_kick();

  return ( SUCCESS );
}

 

 

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值