当前位置:文档之家› Z-STACK按键

Z-STACK按键

Z-STACK按键
Z-STACK按键

Z-STACK按键的使用总结

#define HAL_KEY_SW_6_ENABLE

// SW_6的IO端口

#define HAL_KEY_SW_6_PORT P0

//SW6接到IO端口的位数P0.1

#define HAL_KEY_SW_6_BIT HAL_KEY_BIT1

// SW_6的IO端口选择

#define HAL_KEY_SW_6_SEL P0SEL

// SW_6的IO端口方向

#define HAL_KEY_SW_6_DIR P0DIR

// SW_6的IO端口中断使能

#define HAL_KEY_SW_6_IEN IEN1

// SW_6的IO端口中断使能的掩码

#define HAL_KEY_SW_6_IENBIT HAL_KEY_BIT5

// SW_6的IO端口中断的边沿选择

#define HAL_KEY_SW_6_EDGE HAL_KEY_RISING_EDGE // SW_6的IO端口边沿掩码

#define HAL_KEY_SW_6_EDGEBIT HAL_KEY_BIT0

// SW_6的IO端口总中断

#define HAL_KEY_SW_6_ICTL PICTL

// SW_6的IO端口总中断掩码

#define HAL_KEY_SW_6_ICTLBIT HAL_KEY_BIT3

// SW_6的IO端口中断标志位

#define HAL_KEY_SW_6_PXIFG P0IFG

按键主要使用的是IO来设置的,这里需要设置的参数主要有按键设置在哪个端口以及掩码、按键中断使能标志以及掩码、引起中断的上升沿还是下降沿以及掩码

涉及的主要寄存器有

PICTL端口输入中断控制

IEN1端口0总中断使能

IEN2 端口1和2总中断使能

比如需要设置HAL_KEY_SW_6为P0.4为输入下降沿有效中断设置如下:#define HAL_KEY_SW_6_ENABLE

#define HAL_KEY_SW_6_PORT P0

#define HAL_KEY_SW_6_BIT HAL_KEY_BIT4

#define HAL_KEY_SW_6_SEL P0SEL

#define HAL_KEY_SW_6_DIR P0DIR

#define HAL_KEY_SW_6_IEN IEN1

#define HAL_KEY_SW_6_IENBIT HAL_KEY_BIT5

#define HAL_KEY_SW_6_EDGE HAL_KEY_FALLING_EDGE

#define HAL_KEY_SW_6_EDGEBIT HAL_KEY_BIT0

#define HAL_KEY_SW_6_ICTL PICTL

#define HAL_KEY_SW_6_ICTLBIT HAL_KEY_BIT4

#define HAL_KEY_SW_6_PXIFG P0IFG

比如需要设置HAL_KEY_SW_6为P2.1为输入上升沿有效中断设置如下:#define HAL_KEY_SW_6_ENABLE

#define HAL_KEY_SW_6_PORT P2

#define HAL_KEY_SW_6_BIT HAL_KEY_BIT4

#define HAL_KEY_SW_6_SEL P2SEL

#define HAL_KEY_SW_6_DIR P2DIR

#define HAL_KEY_SW_6_IEN IEN2

#define HAL_KEY_SW_6_IENBIT HAL_KEY_BIT1

#define HAL_KEY_SW_6_EDGE HAL_KEY_RISING_EDGE

#define HAL_KEY_SW_6_EDGEBIT HAL_KEY_BIT2

#define HAL_KEY_SW_6_ICTL PICTL

#define HAL_KEY_SW_6_ICTLBIT HAL_KEY_BIT5

#define HAL_KEY_SW_6_PXIFG P2IFG

这样设置后就可以正常使用KEY 中断。

按键有两种工作模式:轮询(Poll)和中断(Interrupt)

轮询

按键处理函数是HalKeyPoll (void),这个函数会在HAL的事件处理Hal_ProcessEvent()中的HAL_KEY_EVENT 事件处理过程中被调用,轮询周期由#define HAL_KEY_POLLING_VALUE 100这边定义,通过在配置函数中设置软件定时器osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT,HAL_KEY_POLLING_VALUE);来启动定时器,

当溢出的时候向HAL发出HAL_KEY_EVENT事件。

在事件处理函数中会检查当前是否使能中断模式,如果使能的话就跳到中断模式操作,否则重新启动定时器,轮询时间按100ms算。

HalKeyPoll()函数中会调用按键回调函数,根据按键状态来处理按键信息。

中断

对应处理函数是halProcessKeyInterrupt (void)会在对应管脚的中断处理函数中被调用。

根据配置函数的参数interruptEnable的情况来设置中断或者轮询。

中断处理函数如下:

按键中断处理函数:

当检查到有按键按下则会启动一个定时事件,定时长度有HAL_KEY_DEBOUNCE_VALUE定义。最终执行函数还是在HAL的事件处理函数中的HAL_KEY_EVENT中被执行。

区别

按键中断和轮询的主要区别是轮询需要CPU定期的检查按键状态,当检测到按键按下则发出HAL_KEY_EVENT 消息到HAL层来执行处理,中断则是当有按键按下立刻向HAL_KEY_EVENT发出消息,不需要CPU的检查。轮询的实时性比中断要差点,推荐用中断方式。

处理流程图

Z-stack中对按键的处理

分类:无线网络传感器ZigBee2011-11-18 22:36 168人阅读评论(0) 收藏举报

在基于Z-stack的应用程序设计中,HAL(硬件抽象层)是这样运行的:

void osalInitTasks( void )

{……

Hal_Init( taskID++ );

……

}

打开Hal_Init( ),似乎什么也没有做,只是完成了一件事情,给这个任务一个ID,实

际上,对硬件的初始化的工作,在任务启动之前都已经开始做了,任务的运行,只是可以接

收发给它的事件和消息。

那么,在HAL任务运行之前,系统对任务做了些什么呢?

当然是初始化。在ZMain.c文件中,有main函数,这是所有程序的入口。由于硬件是

所有程序运行的基础,在这里要完成两个重要的函数:

// Initialize board I/O

InitBoard( OB_COLD );

// Initialze HAL drivers

HalDriverInit();

显然,它们的执行时间是早于任务的运行,在InitBoard()完成对板级I/O的设置。进去看一下:

void InitBoard( byte level )

{

if ( level == OB_COLD )

{

// Interrupts off

osal_int_disable( INTS_ALL );

}

else // !OB_COLD

{

OnboardKeyIntEnable = HAL_KEY_INTERRUPT_DISABLE;

HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);

}

}

代码太多,不再全部列出,主要是完成对Led。Timer和key的配置。这里重点看按键有关的。由于InitBoard函数的参数是OB_COLD,郁闷的HalKeyConfig()没有机会运行。

在经过耐心的等待之后,main()需要再次对开发板初始化,调用函数:

InitBoard( OB_READY );

机会来了,这时可以处理按键了,

HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback)函数可以运行,在该函数中定义了是以中断的方式还是以查询的方式检测按键的状态,如果是查询方式,使用:

osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_POLLING_VALUE);

延迟100ms后向任务Hal_TaskID发送一个事件。在事件处理代码中使用函数HalKeyPoll()查询是否有按键按下。

如果是中断方式,使用

osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_DEBOUNCE_VALUE);

延迟25ms后使用函数HalKeyPoll()获取按键值。

安装IAR 8051 7.30B

运行安装程序EW8051-EV-730B.exe,这里说一下如何快速的查找代码,按下

Ctrl+Shift+f 可以在整个项目中查找你想要的关键字,注意选择和你workspace工作空间对应的文件,通常有CC2430DB和CC2430EB两个。把光标放在函数名上,右键

选择Go to definition fo XX就可以跳到该函数定义处,工具栏的Navigate Backward 和Navigate Forward 可以让你来回穿梭,还有很多功能,这里不多说了。

安装ZigBee2006

下载Zigbee协议栈压缩包swrc073d.zip,安装后一般在C盘可以找到Texas Instruments文件夹,把它复制,考到D盘,我的IAR装在D盘,有必要看下Documents里面的文档,如Create New Application For The CC2430DB_F8W-2005-0033_.pdf如何新建项目;其它的就不多说了,下面是按键的简单说明,可以初步了解一下OSAL;例子目录为:

Texas

Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Samples\SimpleApp\CC2430DB Workspace 选择 simplecollectorEB ;

我们先从主函数说起,如果不知主函数在哪,可以Ctrl+Shift+f输入int main查找,...........为省略

ZSEG int main( void )

{

// Turn off interrupts

osal_int_disable( INTS_ALL );

………………..

// Initialze HAL drivers

HalDriverInit(); //HalKeyInit();初始化按键

………………..

// Determine the extended address

zmain_ext_addr(); //HalKeyRead();读取按键

…………………..

osal_init_system(); //RegisterForKeys( sapi_TaskID ); 注册按键任务

……………………..

// Final board initialization

InitBoard( OB_READY ); /*HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);配置

按键,默认为轮询方式*/

…………………

osal_start_system(); // No Return from here 进入系统大循环

} // main()

从主函数可以看出,里面都是初始化函数init,执行过程HalDriverInit()àHalKeyInit();在HalKeyInit()里基本完成了相应管脚的输入输出配置,然后到zmain_ext_addr();时,判断物理扩展地址是否合法,如果不合法,则LED1一直闪烁,等while ( HAL_KEY_SW_5 != HalKeyRead() )按下把无效的地址初始化为有效地物理地址,然后到

osal_init_system();àosalInitTasks();àSAPI_Init( taskID );à RegisterForKeys( sapi_TaskID );注册按键事件,最后InitBoard( OB_READY );à HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);配置按键为中断方式还是轮询方式,从

/* Initialize Key stuff */

OnboardKeyIntEnable = HAL_KEY_INTERRUPT_DISABLE;

HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);

可以看出默认是配置为轮询方式的,这就是主函数大致对按键的处理过程,接下来从HalKeyConfig()入手,

void HalKeyConfig (bool interruptEnable, halKeyCBack_t cback)

{

#if (HAL_KEY == TRUE)

/* Enable/Disable Interrupt or */

Hal_KeyIntEnable = interruptEnable;

/* Register the callback fucntion */

pHalKeyProcessFunction = cback; //指向回调函数

/* Determine if interrupt is enable or not */

if (Hal_KeyIntEnable) //如果设为中断方式

{

………………..进行一些中断的相关配置

}

else /* Interrupts NOT enabled */ //否则为轮询方式

{

…………………….

osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_POLLING_VALUE); /* Kick off polling */

}

……………………..

}

可以看出,配置为轮询方式是时启动osal_start_timerEx()函数,那么这个函数是干什么的呢?这个是系统软定时器,在HAL_KEY_POLLING_VALUE时间(100ms)内会触发系统任务事件,也就是触发uint16 Hal_ProcessEvent( uint8 task_id, uint16 events );触发时会把Hal_TaskID、HAL_KEY_EVENT两个参数传给Hal_ProcessEvent();然后看看Hal_ProcessEvent()里面又做了些什么事,

uint16 Hal_ProcessEvent( uint8 task_id, uint16 events )

{

uint8 *msgPtr;

……………………….

if (events & HAL_KEY_EVENT) //按键处理

{

#if (defined HAL_KEY) && (HAL_KEY == TRUE)

/* Check for keys */

HalKeyPoll(); //查看是哪个键

/* if interrupt disabled, do next polling */

if (!Hal_KeyIntEnable) //如果还是轮询方式,则再次启动osal_start_timerEx();

{

osal_start_timerEx( Hal_TaskID, HAL_KEY_EVENT, 100);

}

#endif // HAL_KEY

return events ^ HAL_KEY_EVENT;

}

……………………..

}

函数里面执行完HalKeyPoll();后,如果还是轮询方式,则再一次启动osal_start_timerEx ();如此一来,就会每隔100ms循环进入Hal_ProcessEvent()函数读取按键,也就是说系统每隔100ms扫描一次按键,那么HalKeyPoll()又是干什么的呢?我们继续看看,

void HalKeyPoll (void)

{

………………

#if defined (HAL_KEY_SW_6_ENABLE)

if (!(HAL_KEY_SW_6_PORT & HAL_KEY_SW_6_BIT)) /* Key is active low */

{

keys |= HAL_KEY_SW_6;

}

#endif

#if defined (HAL_KEY_SW_5_ENABLE)

if (HAL_KEY_SW_5_PORT & HAL_KEY_SW_5_BIT) /* Key is active high */

{

keys |= HAL_KEY_SW_5;

}

#endif

…………..调用HalAdcRead()得出操纵杆的值,是通过AD进来了模拟电压值得出;/* Invoke Callback if new keys were depressed */

if (keys && (pHalKeyProcessFunction))

{

(pHalKeyProcessFunction) (keys, HAL_KEY_STATE_NORMAL); //回调函数

}

}

该函数读出按键值keys,并执行了回调函数(pHalKeyProcessFunction) (keys,

HAL_KEY_STATE_NORMAL); pHalKeyProcessFunction是在

void HalKeyConfig (bool interruptEnable, halKeyCBack_t cback)里面pHalKeyProcessFunction = cback;进行赋函数指针的,这样我们就进入回调函数了,我们来看一下回调函数:

void OnBoard_KeyCallback ( uint8 keys, uint8 state ) //回调函数

{

uint8 shift;

// shift key (S1) is used to generate key interrupt

// applications should not use S1 when key interrupt is enabled

shift = (OnboardKeyIntEnable == HAL_KEY_INTERRUPT_ENABLE) ? false : ((keys & HAL_KEY_SW_6) ? true : false);

if ( OnBoard_SendKeys( keys, shift ) != ZSuccess )//ZFailure,如果不成功则执行下面

{

// Process SW1 here

if ( keys & HAL_KEY_SW_1 ) // Switch 1

{

}

…………………

}

回调函数里面又调用了OnBoard_SendKeys( keys, shift );接着看

byte OnBoard_SendKeys( byte keys, byte state )

{

keyChange_t *msgPtr;

if ( registeredKeysTaskID != NO_TASK_ID )//之前是否RegisterForKeys( sapi_TaskID );注册过?

{

// Send the address to the task

msgPtr = (keyChange_t *)osal_msg_allocate( sizeof(keyChange_t) );

if ( msgPtr )

{

msgPtr->hdr.event = KEY_CHANGE;

msgPtr->state = state;

msgPtr->keys = keys;

osal_msg_send( registeredKeysTaskID, (uint8 *)msgPtr );

}

return ( ZSuccess );

}

else

return ( ZFailure );

}

如果之前注册过按键事件,那么就会调用osal_msg_send( registeredKeysTaskID, (uint8 *)msgPtr );发送系统消息,它又会调用

osal_set_event(registeredKeysTaskID, SYS_EVENT_MSG );设置事件发生标志,

byte osal_set_event( byte task_id, UINT16 event_flag )

{

if ( task_id < tasksCnt )

{

halIntState_t intState;

HAL_ENTER_CRITICAL_SECTION(intState); // Hold off interrupts

tasksEvents[task_id] |= event_flag; // Stuff the event bit(s) 置任务标志,

HAL_EXIT_CRITICAL_SECTION(intState); // Release interrupts

}

else

return ( INVALID_TASK );

return ( ZSUCCESS );

}

然后触发SAPI_ProcessEvent()应用层处理事件,SAPI_ProcessEvent()再调用zb_HandleKeys()函数进行最终的按键处理事件:

void zb_HandleKeys( uint8 shift, uint8 keys )

{

uint8 startOptions;

uint8 logicalType;

if ( keys & HAL_KEY_SW_5 )//我自己加的sw5按键处理

P1_0=~P1_0;

}

…………..

}

经过了层层函数,最终到达了zb_HandleKeys()按键处理函数,其中的各种函数关系我们应该理清,这样对整个系统的OSAL编程有一定的了解,其中按键有两种处理方式,轮询和中断方式,系统默认为轮询方式,下面再看一下中断方式的过程:

如果修改InitBoard( OB_READY )里的

OnboardKeyIntEnable = HAL_KEY_INTERRUPT_ ENABLE;//原

HAL_KEY_INTERRUPT_DISABLE

HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);

那么会把按键配置为中断方式,具体可看上面提到的HalKeyConfig()函数;此时如有按键按下,则会进入中断服务函数:

HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR )

{

/* P0IF is cleared by HW for CHVER < REV_E */

halProcessKeyInterrupt(); //按键的中断处理

if( CHVER >= REV_E )

{

……………………

}

在中断函数中会执行halProcessKeyInterrupt()函数,我们看看

void halProcessKeyInterrupt (void)

{

#if (HAL_KEY == TRUE)

bool valid=FALSE;

#if defined (HAL_KEY_SW_6_ENABLE)

if (HAL_KEY_SW_6_PXIFG & HAL_KEY_SW_6_BIT) /* Interrupt Flag has been set */ {

HAL_KEY_SW_6_PXIFG = ~(HAL_KEY_SW_6_BIT); /* Clear Interrupt Flag */

valid = TRUE;

}

#endif

#if defined (HAL_KEY_SW_5_ENABLE)

if (HAL_KEY_SW_5_PXIFG & HAL_KEY_SW_5_BIT) /* Interrupt Flag has been set */ {

HAL_KEY_SW_5_PXIFG = ~(HAL_KEY_SW_5_BIT); /* Clear Interrupt Flag */

valid = TRUE;

}

#endif

if (valid)

{

osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT,

HAL_KEY_DEBOUNCE_VALUE);//25ms

}

#endif /* HAL_KEY */

}

我们终于发现了osal_start_timerEx()函数,在HAL_KEY_DEBOUNCE_VALUE时间(25ms)后再次触发,用于按键去抖,然后osal_start_timerEx()会触发Hal_ProcessEvent ()函数,这样就和轮询方式的后半部分是一样的,也就是说中断法和轮询法在前面的不同,一旦遇到Hal_ProcessEvent(),那么后面的也就一样了,这就是整个按键的处理过程.

Z-STACK按键的使用总结

#define HAL_KEY_SW_6_ENABLE

// SW_6的IO端口

#define HAL_KEY_SW_6_PORT P0

//SW6接到IO端口的位数P0.1

#define HAL_KEY_SW_6_BIT HAL_KEY_BIT1

// SW_6的IO端口选择

#define HAL_KEY_SW_6_SEL P0SEL

// SW_6的IO端口方向

#define HAL_KEY_SW_6_DIR P0DIR

// SW_6的IO端口中断使能

#define HAL_KEY_SW_6_IEN IEN1

// SW_6的IO端口中断使能的掩码

web开发知识练习(HTML标签和JavaScript脚本)

网上客服培训考核 ---阶段二HTML标签和JavaScript脚本 试题类型:HTML标签和JavaScript脚本 考核类型:开卷

1. HTML(Hypertext Markup Language超文本标记语言)是一种用来制作超文本文 档的简单标记语言。利用各种标记(tags)来标识文档的结构以及标识超链(Hyperlink)的信息 2.HTML的标记总是封装在由 < 和 > 构成的一对尖括号之中。 除少数几个转义序列之外,HTML标记忽略大小写,即等价于<TITLE> 3. <html> 标记用于Html文档的最前边,用来标识Html文档的开始。而</html>标记 恰恰相反,它放在Html文档的最后边,用来标识Html文档的结束。所有其它HTML标记和文档内容都包含在这对标记之间。 4.<head> 与 </head> 之间的头部信息通常含有 <title> 标记,用来确定HTML文件 的标题,即显示在浏览器左上角标题栏处的文字。 5. <head></head> 构成Html文档的开头部分,此标记对之间包含的是HTML文档 的头信息,如标题、说明内容等等,其中可包括<title>等标记对 6. 之间的内容是HTML文档的主体部分,在此标记对之间可包含、 、



等众多的标记它们所定义的文本、图像等将会在浏览器的框内显示出来,标记中还可以有很多属性,以下是主要的几种设置背景颜色bgcolor =”颜色码”,设置文本颜色 text = “颜色码”,设置链接颜色 link = “颜色码”,设置已使用的链接的颜色 vlink = “颜色码”,设置正在被击中的链接的颜色 alink = “颜色码”。 7. 之间的内容是HTML文档的标题,标题的显示位置不是浏览器的 文本区,而是在Web浏览器窗口最左上方的蓝色标题栏里。 8.标记对是用来创建一个段落(Paragraph),在此标记对之间加入的文 本将按照段落的格式显示在浏览器上。另外,标记还可以使用align属性,它用来说明对齐方式 9. 是典型的单标记,使用也很简单,它的功能是用来创建一个回车换行 10.
标志对用来排版大块Html段落,也用于格式化表,此标志对的用法与 标志对非常相似,同样有align对齐方式属性。 11.
 标记用于显示预格式化文本(Preformatted Text),在这对标记之 间的文本,与其他HTML文本的格式编辑方式不同 12.Html语言提供了一系列对文本中的标题进行操作的标记对: 

……
,一共有六对标题的标记对 13.用来使文本以粗体效果的形式输出; 14.用来使文本以斜体效果的形式输出; 15.用来使文本以带下划线的形式输出。 16.则用来输出加重语气文本(通常也是斜体加黑体)。 17. 是一对很有用的标记对,它可以对输出文本的字体大小、颜色进 行随意地改变,这些改变主要是通过对它的两个属性 size 和 color 的控制来实现的。 size属性用来改变字体的大小,取值范围从1到7;而color属性则用来改变文本的颜色 18. 是单标记,它通过src属性指定当前位置要插入的图像文件,标记还有alt、

Zigbee协议栈原理基础

1Zigbee协议栈相关概念 1.1近距离通信技术比较: 近距离无线通信技术有wifi、蓝牙、红外、zigbee,在无线传感网络中需求的网络通信恰是近距离需求的,故,四者均可用做无线传感网络的通信技术。而,其中(1)红外(infrared):能够包含的信息过少;频率低波衍射性不好只能视距通信;要求位置固定;点对点传输无法组网。(2)蓝牙(bluetooth):可移动,手机支持;通信距离10m;芯片价格贵;高功耗(3)wifi:高带宽;覆盖半径100m;高功耗;不能自组网;(4)zigbee:价格便宜;低功耗;自组网规模大。?????WSN中zigbee通信技术是最佳方案,但它连接公网需要有专门的网关转换→进一步学习stm32。 1.2协议栈 协议栈是网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。 1.2.1Zigbee协议规范与zigbee协议栈 Zigbee各层协议中物理层(phy)、介质控制层(mac)规范由IEEE802.15.4规定,网络层(NWK)、应用层(apl)规范由zigbee联盟推出。Zigbee联盟推出的整套zigbee规范:2005年第一版ZigBeeSpecificationV1.0,zigbee2006,zigbee2007、zigbeepro zigbee协议栈:很多公司都有自主研发的协议栈,如TI公司的:RemoTI,Z-Stack,SimpliciTI、freakz、msstatePAN 等。 1.2.2z-stack协议栈与zigbee协议栈 z-stack协议栈与zigbee协议栈的关系:z-stack是zigbee协议栈的一种具体实现,或者说是TI公司读懂了zigbee 协议栈,自己用C语言编写了一个软件—---z-stack,是由全球几千名工程师共同开发的。ZStack-CC2530-2.3.1-1.4.0软件可与TI的SmartRF05平台协同工作,该平台包括MSP430超低功耗微控制器(MCU)、CC2520RF收发器以及CC2591距离扩展器,通信连接距离可达数公里。 Z-Stack中的很多关键的代码是以库文件的形式给出来,也就是我们只能用它们,而看不到它们的具体的实现。其中核心部分的代码都是编译好的,以库文件的形式给出的,比如安全模块,路由模块,和Mesh自组网模块。与z-stack 相比msstatePAN、freakz协议栈都是全部真正的开源的,它们的所有源代码我们都可以看到。但是由于它们没有大的商业公司的支持,开发升级方面,性能方面和z-stack相比差距很大,并没有实现商业应用,只是作为学术研究而已。 还可以配备TI的一个标准兼容或专有的网络协议栈(RemoTI,Z-Stack,或SimpliciTI)来简化开发,当网络节点要求不多在30个以内,通信距离500m-1000m时用simpliciti。 1.2.3IEEE802.15.4标准概述 IEEE802.15.4是一个低速率无线个人局域网(LowRateWirelessPersonalAreaNetworks,LR-WPAN)标准。定义了物理层(PHY)和介质访问控制层(MAC)。 LR-WPAN网络具有如下特点: ◆实现250kb/s,40kb/s,20kb/s三种传输速率。 ◆支持星型或者点对点两种网络拓扑结构。 ◆具有16位短地址或者64位扩展地址。 ◆支持冲突避免载波多路侦听技术(carriersensemultipleaccesswithcollisionavoidance,CSMA/CA)。(mac层) ◆用于可靠传输的全应答协议。(RTS-CTS) ◆低功耗。 ◆能量检测(EnergyDetection,ED)。 ◆链路质量指示(LinkQualityIndication,LQI)。 ◆在2.45GHz频带内定义了16个通道;在915MHz频带内定义了10个通道;在868MHz频带内定义了1个通道。 为了使供应商能够提供最低可能功耗的设备,IEEE(InstituteofElectricalandElectronicsEngineers,电气及电子工程师学会)定义了两种不同类型的设备:一种是完整功能设备(full.functionaldevice,FFD),另一种是简化功能设备

2020年Zigbee协议栈中文说明免费

1.概述 1.1解析ZigBee堆栈架构 ZigBee堆栈是在IEEE 802.15.4标准基础上建立的,定义了协议的MAC和PHY层。ZigBee设备应该包括IEEE802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的PHY和MAC层,以及ZigBee堆栈层:网络层(NWK)、应用层和安全服务提供层。图1-1给出了这些组件的概况。 1.1.1ZigBee堆栈层 每个ZigBee设备都与一个特定模板有关,可能是公共模板或私有模板。这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。公共模板可以确保不同供应商的设备在相同应用领域中的互操作性。 设备是由模板定义的,并以应用对象(Application Objects)的形式实现(见图1-1)。每个应用对象通过一个端点连接到ZigBee堆栈的余下部分,它们都是器件中可寻址的组件。 图1-1 zigbe堆栈框架 从应用角度看,通信的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个或多个灯组件的远端设备进行通信,目的是将这些灯点亮)。 端点之间的通信是通过称之为簇的数据结构实现的。这些簇是应用对象之间共享信息所需的全部属性的容器,在特殊应用中使用的簇在模板中有定义。图1-1-2就是设备及其接口的一个例子:

图1-1-2 每个接口都能接收(用于输入)或发送(用于输出)簇格式的数据。一共有二个特殊的端点,即端点0和端点255。端点0用于整个ZigBee设备的配置和管理。应用程序可以通过端点0与ZigBee 堆栈的其它层通信,从而实现对这些层的初始化和配置。附属在端点0的对象被称为ZigBee设备对象 (ZD0)。端点255用于向所有端点的广播。端点241到254是保留端点。 所有端点都使用应用支持子层(APS)提供的服务。APS通过网络层和安全服务提供层与端点相接,并为数据传送、安全和绑定提供服务,因此能够适配不同但兼容的设备,比如带灯的开关。APS使用网络层(NWK)提供的服务。NWK负责设备到设备的通信,并负责网络中设备初始化所包含的活动、消息路由和网络发现。应用层可以通过ZigBee设备对象(ZD0)对网络层参数进行配置和访问。 1.1.2 80 2.15.4 MAC层 IEEE 802.15.4标准为低速率无线个人域网(LR-WPAN)定义了OSI模型开始的两层。PHY层定义了无线射频应该具备的特征,它支持二种不同的射频信号,分别位于2450MHz波段和868/915MHz 波段。2450MHz波段射频可以提供250kbps的数据速率和16个不同的信道。868 /915MHz波段中,868MHz支持1个数据速率为20kbps的信道,915MHz支持10个数据速率为40kbps的信道。MAC层负责相邻设备间的单跳数据通信。它负责建立与网络的同步,支持关联和去关联以及MAC 层安全:它能提供二个设备之间的可靠链接。 1.1.3 关于服务接入点 ZigBee堆栈的不同层与802.15.4 MAC通过服务接入点(SAP)进行通信。SAP是某一特定层提供的服务与上层之间的接口。 ZigBee堆栈的大多数层有两个接口:数据实体接口和管理实体接口。数据实体接口的目标是向上层提供所需的常规数据服务。管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的机制。 1.1.4 ZigBee的安全性 安全机制由安全服务提供层提供。然而值得注意的是,系统的整体安全性是在模板级定义的,这意味着模板应该定义某一特定网络中应该实现何种类型的安全。 每一层(MAC、网络或应用层)都能被保护,为了降低存储要求,它们可以分享安全钥匙。SSP是通过ZD0进行初始化和配置的,要求实现高级加密标准(AES)。ZigBee规范定义了信任中心的用

TI_Z-stack协议栈开发环境和工作流程

TI Z-stack协议栈开发环境和工作流程 系统软件设计是在硬件设计的基础上进行的,良好的软件设计是实现系统功能的重要环节,也是提高系统性能的关键所在。节点设计基于通用性及便于开发的考虑,移植了TI公司的Z-Stack协议栈,其主要特点就是其兼容性,完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。Z-Stack还支持丰富的新特性,如无线下载,可通过ZigBee网状网络(Mesh Network)下载节点更新。 图 ZigBee节点开发环境 TI的Z-Stack装载在一个基于IAR开发环境的工程里。强大的IAR Embed ded Workbench除了提供编译下载功能外,还可以结合编程器进行单步跟踪调试和监测片上寄存器、Flash数据等。Z-Stack根据IEEE 802. 15.4和ZigBee标准分为以下几层:API(Application Programming Interface),HAL (Hardw are Abstract Layer),MAC(Media Access Control), NWK(Zigbee Networ k Layer),OSAL(Operating System Abstract System),Security,Servic e,ZDO(Zigbee Device Objects)。使用IAR打开工程文件SampleApp.eww后,即可查看到整个协议栈从HAL层到APP层的文件夹分布。该协议栈可以实现复杂的网络链接,在协调器节点中实现对路由表和绑定表的非易失性存储,因此网络具有一定的记忆功能。 Z-Stack采用操作系统的思想来构建,采用事件轮循机制,当各层初始化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,

javaweb基础知识整理

一、TOMCAT服务器的安装与配置 1.常见服务器: WebLogic(BEA)、webSphere(IBM)、Tomcat(Apache) 2.Tomcat 的下载与安装 下载地址:https://www.doczj.com/doc/7a690885.html,/ 安装目录不能包含中文和空格 JAVA_HOME环境变量指定Tomcat运行时所要用的jdk所在的位置,注意,配到目录就行了,不用指定到bin。 端口占用问题:netstat -ano命令查看端口占用信息 Catalina_Home环境变量:startup.bat启动哪个tomcat由此环境变量指定,如果不配置则启动当前tomcat,推荐不要配置此环境变量。 3.Tomcat的目录结构 bin--存放tomcat启动关闭所用的批处理文件 conf--tomcat的配置文件,最终要的是server.xml *实验:修改servlet.xml,更改tomcat运行所在的端口号,从8080改为80 lib--tomcat运行所需jar包 logs--tomcat运行时产生的日志文件 temp--tomcat运行时使用的临时目录,不需要我们关注 webapps--web应用所应存放的目录 work--tomcat工作目录,后面学jsp用到 4.虚拟主机 一个真实主机可以运行多个网站,对于浏览器来说访问这些网站感觉起来就像这些网站都运行在自己的独立主机中一样,所以,我们可以说这里的每一个网站都运行在一个虚拟主机上,一个网站就是一个虚拟主机。 4.1配置虚拟主机 在server.xml中标签下配置,其中name属性指定虚拟主机名,appBase指定虚拟主机所在的目录只在servlet.xml中配置Hosts,还不能使其他人通过虚拟主机名访问网站,还需要在DNS服务器上注册一把,我们可以使用hosts文件模拟这个过程。 默认虚拟主机:在配置多个虚拟主机的情况下,如果浏览器使用ip地址直接访问网站时,该使用哪个虚拟主机响应呢?可以在标签上设置defaultHost来指定。 5.web应用 web资源不能直接交给虚拟主机,需要按照功能组织用目录成一个web应用再交给虚拟主机管理。 5.1web应用的目录结构 web应用目录 | - html、css、js、jsp静态资源和JSP文件都可以直接放置在web应用的目录下,直接放在web应用下的内容,浏览器可以直接访问到 | - WEB-INF 可以没有,但是最好有,如果有则一定要保证他的目录结构是完整的。放置在WEB-INF目录下的所有资源浏览器没有办法直接进行访问。 | - classes动态web资源运行时的class文件要放在这个目录下。 | - lib 动态web资源运行时所依赖的jar包要放在这个目录下。 | - web.xml整个web应用的配置文件,配置主页/Servlet的映射/过滤器监听器的配置都需要依赖这个文件进行。 5.2web.xml文件的作用 某个web资源配置为web应用首页 将servlet程序映射到某个url地址上 为web应用配置监听器

TI_zigbee协议栈结构分析应用

无线盛世《快速进入ZB世界》
Ver:1

进入Zigbee世界的准备工作
§ 首先,我们需具备一些硬件设备及平台。以下 我就罗列一下Zigbee开发基本工具: § 计算机:不管是设计电路还是编程开发都是离 不开它的。 § Zigbee开发板:对于初学者来说,Zigbee开发 板无疑是最佳选择。有了开发板,你可以在我 们成熟设计的基础上学习或者做自己的设计。 § Zigbee模块:集MCU,RF,天线设计于一体 的Zigbee模块。使用它,我们可省去设计天线 及IC周边电路设计的复杂工作。

进入Zigbee世界的准备工作
§ Zigbee仿真器:是集烧写程序、在线编程和在线仿真 功能于一身的开发过程工作中必不可少的开发工具。 编程器既能对CC243x芯片(其实包括TI产品中的CC 系列的大部分芯片)进行烧写程序(hex标准文件程序 ),也能对CC243x芯片进行在线编程和仿真,让我们 能方便地在线调试开发,从而大大地提高了开发效率 。 § Zigbee协议分析仪:ZigBee的设计开发者必不可少的 工具!ZigBee协议分析仪具有广泛的功能,包括:分 析以及解码在PHY、MAC、NETWORK/SECURITY、 APPLICATION FRAMEWORK、和APPLICATION PROFICES等各层协议上的信息包;显示出错的包以 及接入错误;指示触发包;在接收和登记过程中可连 续显示包。

进入Zigbee世界的准备工作
§ 再次,我们需要在将用于开发Zigbee的计 算机平台上安装这些软件: § Zigbee协议分析软件(sniffer) § 程序烧写软件(Flash Programmer) § IAR公司的EW8051 version 7.20I/W32 。

zigbee协议栈源码

竭诚为您提供优质文档/双击可除 zigbee协议栈源码 篇一:zigbeez-stack协议栈构架 zstack基础 1、zstack协议栈构架 zigbee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些应用层api,供用户调用。协议栈体系分层架构与协议栈代码文件夹对应表如下:整个协议栈的构架,如图所示 app:应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的任务实现的。 hal:硬件层目录,包含有与硬件相关的配置和驱动及操作函数。 mac:mac层目录,包含了mac层的参数配置文件及其mac的lib库的函数接口文件。 mt:监控调试层,主要用于调试目的,即实现通过串口调试各层,与各层进行直接交互。nwk:网络层目录,含网络层配置参数文件及网络层库的函数接口文件,aps层库的

函数接口。 osal:协议栈的操作系统。 profile:aF层目录,包含aF层处理函数文件。 security:安全层目录,安全层处理函数接口文件,比如加密函数等。 services:地址处理函数目录,包括着地址模式的定义及地址处理函数。 tools:工程配置目录,包括空间划分及zstack相关配置信息。 zdo:zdo目录。 zmac:mac层目录,包括mac层参数配置及mac层lib 库函数回调处理函数。zmain:主函数目录,包括入口函数main()及硬件配置文件。 output:输出文件目录,这个ew8051ide自动生成的。 2、zigbee20xx协议栈源码库结构分析 了解了zigbee20xx协议栈整个构架后,再来看看协议栈源码库结构是什么样的,各层的具体文件是什么,建立不同的项目、添加自己的应用层任务及处理函数需要修改什么文件。zigbee20xx协议栈zstack-1.4.2文件目录及说明如下: 打开smapleapp项目工程 先看app层:

TIZstack协议栈开发环境和工作流程

TIZstack协议栈开发环境和工作流程

TI Z-stack协议栈开发环境和工作流程 By KuangJunBin KuangJunBin: 如您对本项目感兴趣或者有任何疑问, 欢迎与我一起探讨: 。谢谢您的阅读! 系统软件设计是在硬件设计的基础上进行的, 良好的软件设计是实现系统功能的重要环节, 也是提高系统性能的关键所在。节点设计基于通用性及便于开发的考虑, 移植了TI公司的Z-Stack协议栈, 其主要特点就是其兼容性, 完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。Z-Stack还支持丰富的新特性, 如无线下载, 可经过ZigBee网状网络( Mesh Network) 下载节点更新。 图 ZigBee节点开发环境

TI的Z-Stack装载在一个基于IAR开发环境的工程里。强大的IAR Embedded Workbench除了提供编译下载功能外, 还能够结合编程器进行单步跟踪调试和监测片上寄存器、 Flash数据等。Z-Stack根据IEEE 802. 15.4和ZigBee标准分为以下几层: API( Appli cation Programming Interface) , HAL ( Hardware Abstract Layer) , M AC( Media Access Control), NWK( Zigbee Network Layer) , OSAL( Operating System Abstract System) , Security, Service, ZDO( Zigbee Device Objects) 。使用IAR打开工程文件SampleApp.eww后, 即可查看到整个协议栈从HAL层到APP层的文件夹分布。该协议栈能够实现复杂的网络链接, 在协调器节点中实现对路由表和绑定表的非易失性存储, 因此网络具有一定的记忆功能。 Z-Stack采用操作系统的思想来构建, 采用事件轮循机制, 当各层初始化之后, 系统进入低功耗模式, 当事件发生时, 唤醒系统, 开始进入中断处理事件, 结束后继续进入低功耗模式。如果同时有几个事件发生, 判断优先级, 逐次处理事件。这种软件构架能够极大地降级系统的功耗。 整个Z-stack的主要工作流程, 大致分为系统启动, 驱动初始化, OSAL初始化和启动, 进入任务轮循几个阶段, 下面将逐一详细分析。

ZStack协议栈结构的初步解析

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(初始化I/O接口) InitBoard( OB_COLD ); // Initialze HAL drivers(初始化HAL设备,在hal_drivers.c中实现) HalDriverInit(); // Initialize NV System(初始化NV系统,即非易失设备,如Flash) osal_nv_init( NULL ); // Initialize the MAC(初始化MAC) ZMacInit(); // Determine the extended address(确定设备的长地址) zmain_ext_addr(); // Initialize basic NV items(初始化ZStack的全局变量,如果在NV内存中不存在,则写入缺省值) 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(最后初始化板)

基于TI_BLE协议栈_ZStack协议栈解析

基于TI_BLE协议栈_ZStack协议栈解析 基于STM32的虚拟多线程,可以很好的用于裸机程序中,用于模拟小型操作系统的多线程概念。本实例参考TI_BLE协议栈_ZStack协议栈。 #include “Hal_Led/Hal_Led.h” #include “Hal_delay/delay.h” #include “Hal_Key/Hal_Key.h” #include “ringbuffer.h” #define APP_LED2_BLINK_EVENT 0x0001 #define HAL_LED1_BLINK_EVENT 0x0001 #define TASK_NO_TASK_RUNNING 0xFF unsigned short Hal_ProcessEvent(unsigned char task_id,unsigned short events ); unsigned short App_ProcessEvent(unsigned char task_id,unsigned short events ); typedef unsigned short uint16; typedef unsigned char uint8; #define TASK_CNT 2 //定义线程的个数 //定义函数指针 typedef unsigned short (*pTaskEventHandlerFn)(unsigned char task_id,unsigned short events ); //线程函数表 const pTaskEventHandlerFn tasksArr[]= { Hal_ProcessEvent, App_ProcessEvent }; const unsigned char tasksCnt = sizeof(tasksArr )/ sizeof(tasksArr[0]);

《Web开发基础》课程标准

《Web开发基础》课程标准 表1 课程基本信息 (一)课程性质与任务 课程性质:《Web开发基础》是软件工程专业培养课程体系中的一门专业必修课程,其包含了软件行业Web开发领域的关键技术基础知识(HTML,CSS及JavaScript等)。该课程的设置充分考虑了其在Web开发领域的关键性作用、目前市场广泛的应用需求和良好的就业前景,注重学生对理论基础知识、专业技能的理解、掌握。 课程任务:通过本课程的学习,使学生理解HTML、CSS及JavaScript等基本的理论知识;掌握应用上述理论知识,制作基本网页、设计网页布局、实现多样化及良好客户体验的页面效果等应用技能;培养学生的创新意识,设计特色网页。 (二)课程教学目标 通过本课程的学习,使学生掌握Web开发技术的基本理论知识,具备一定的应用开发技能,培养学生工程意识、创新能力和素质。 1. 知识目标 (1)了解本课程内容在Web开发领域的定位与作用; (2)了解HTML、CSS及JavaScript技术的发展脉络、趋势及应用前景; (3)掌握HTML中的基本元素、文字与段落元素、图像元素、列表元素、表格元素、超链接元素、多媒体元素、框架元素及表单元素的语法、属性和参数等基础知识; (4)掌握CSS中元素的语法、属性和参数等基础知识; (5)了解网页布局的几种方法,掌握使用CSS进行网页布局、样式设计的基础知识; (6)掌握JavaScript中的基本语法知识; (7)掌握JavaScript进行提交内容校验、生成网页特效等方法。 2. 能力目标

(1)具备使用HTML制作包含基本内容的网页的能力; (2)具备使用HTML及CSS等技术来设计网页布局的能力; (3)具备使用JavaScript技术来提高网页交互性、体验性的能力; (4)具备综合使用HTML、CSS与JavaScript的相关知识,来丰富、渲染网页的能力; (5)具备根据具体应用需求,创新性地设计网页的能力。 3. 素质目标 (1)培养学生具备克服困难解决问题的意志; (2)培养学生养成严谨认真的科学态度,耐心细致的工作作风; (3)培养学生具备良好的交流沟通素养和创新精神。 (三)参考学时 64 (理论:32\ 实验:32) (四)课程学分 4学分 (五)课程内容和要求(理论48学时,实验16学时) 本课程的主要内容有:HTML,主要包括网页基本组成元素,网页框架、超文本链接、表单、表格、层等。CSS,产要包括修改网页元素,主要包括修改文字颜色及背景、调整字符间距、单词间距、添加文字修饰、设置文本排列方式、设置段落缩进、调整行高、转换英文大小写、设置颜色、设置背景颜色、插入背景图片、设置背景图片位置、设计边框样式、调整边框宽度、设置边框颜色、设置边框属性等。JavaScript,包括JavaScript基本语法、基本数据类型、运算符、函数、JavaScript事件分析、图片和多媒体文件的使用、JavaScript 对象的应用、浏览器内部对象、内置对象和方法等。 本课程要求学生了解web编程技术的产生和发展过程,会使用HTML编写网页,会用CSS 对网页样式进行设计,会使用JavaScript实现一些客户端的数据验证及网页特效,达到一般企业用人标准。 表2 课程内容与学时安排表

Zigbee协议栈原理基础

Zigbee协议栈原理基础

1Zigbee协议栈相关概念 1.1近距离通信技术比较: 近距离无线通信技术有wifi、蓝牙、红外、zigbee,在无线传感网络中需求的网络通信恰是近距离需求的,故,四者均可用做无线传感网络的通信技术。而,其中(1)红外(infrared):能够包含的信息过少;频率低波衍射性不好只能视距通信;要求位置固定;点对点传输无法组网。(2)蓝牙(bluetooth):可移动,手机支持;通信距离10m;芯片价格贵;高功耗(3)wifi:高带宽;覆盖半径100m;高功耗;不能自组网;(4)zigbee:价格便宜;低功耗;自组网规模大。?????WSN中zigbee通信技术是最佳方案,但它连接公网需要有专门的网关转换→进一步学习stm32。 1.2协议栈 协议栈是网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。 1.2.1Zigbee协议规范与zigbee协议栈 Zigbee各层协议中物理层(phy)、介质控制层(mac)规范由IEEE802.15.4规定,网络层(NWK)、应用层(apl)规范由zigbee联盟推出。Zigbee联盟推出的整套zigbee规范:2005年第一版ZigBeeSpecificationV1.0,zigbee2006,zigbee2007、zigbeepro zigbee协议栈:很多公司都有自主研发的协议栈,如TI公司的:RemoTI,Z-Stack,SimpliciTI、freakz、msstatePAN 等。 1.2.2z-stack协议栈与zigbee协议栈 z-stack协议栈与zigbee协议栈的关系:z-stack是zigbee协议栈的一种具体实现,或者说是TI公司读懂了zigbee 协议栈,自己用C语言编写了一个软件—---z-stack,是由全球几千名工程师共同开发的。ZStack-CC2530-2.3.1-1.4.0软件可与TI的SmartRF05平台协同工作,该平台包括MSP430超低功耗微控制器(MCU)、CC2520RF收发器以及CC2591距离扩展器,通信连接距离可达数公里。 Z-Stack中的很多关键的代码是以库文件的形式给出来,也就是我们只能用它们,而看不到它们的具体的实现。其中核心部分的代码都是编译好的,以库文件的形式给出的,比如安全模块,路由模块,和Mesh自组网模块。与z-stack 相比msstatePAN、freakz协议栈都是全部真正的开源的,它们的所有源代码我们都可以看到。但是由于它们没有大的商业公司的支持,开发升级方面,性能方面和z-stack相比差距很大,并没有实现商业应用,只是作为学术研究而已。 还可以配备TI的一个标准兼容或专有的网络协议栈(RemoTI,Z-Stack,或SimpliciTI)来简化开发,当网络节点要求不多在30个以内,通信距离500m-1000m时用simpliciti。 1.2.3IEEE802.15.4标准概述 IEEE802.15.4是一个低速率无线个人局域网(LowRateWirelessPersonalAreaNetworks,LR-WPAN)标准。定义了物理层(PHY)和介质访问控制层(MAC)。 LR-WPAN网络具有如下特点: ◆实现250kb/s,40kb/s,20kb/s三种传输速率。 ◆支持星型或者点对点两种网络拓扑结构。 ◆具有16位短地址或者64位扩展地址。 ◆支持冲突避免载波多路侦听技术(carriersensemultipleaccesswithcollisionavoidance,CSMA/CA)。(mac层) ◆用于可靠传输的全应答协议。(RTS-CTS) ◆低功耗。 ◆能量检测(EnergyDetection,ED)。 ◆链路质量指示(LinkQualityIndication,LQI)。

Zstack协议栈ZNP例程使用说明

Zstack协议栈ZNP例程使用说明 一、硬件准备 1)将ZBeePlus S1或者ZBeeplus M1安装到ZBDC51GB上,配套天线拧到ZBeeplus 模块上,安装完成模块如下图所示。 2)使用交叉RS232电缆连接模块串口到PC机; 电池盒装上两节5号1.5V电池,电池盒电缆连接到模块电池盒接口。 如果需要下载代码,将ccdebugger调试电缆连接到模块仿真器接口。 3)检查电池合是否拨到on位置,SW1开关拨到ON位置,模块上电开始工作。 二、编译和下载ZNP例程 1)运行IAR 7.6.0以上版本,打开 ZStack-CC2530-2.4.0-1.4.0\Projects\zstack\ZNP\CC253x\znp.eww工程文件。

2)编译和下载ZNP代码,如下图所示. 1.选择工程配置项CC2530 - Debug。 2.选中ZNP->CC2530-Debug->HAL->TARGET->CC2530ZNP->hal_board_cfg.h文件,双击打开文件。 在文件第62行,将#define xHAL_PA_LNA修改为#define HAL_PA_LNA. (注:这个操作步骤只针对ZBeepls M1模块,ZBeeplus S1模块不要作上述修改操作) 3.选择CC2530-Debug,右键弹出菜单,选择Rebuild All。 4.编译完成之后,如果没有错误,点击下载按钮,将程序烧写入模块。 5.采用上述方法下载ZNP程序到其他模块。 三、用Smartrf Flash Programmer下载ZNP代码 如果不是从源代码编译下载到模块中,使用光盘上附带的hex文件,可以采用SmartRf Flash Programmer进行程序下载。

TIZstack协议栈开发环境和工作流程精编

T I Z s t a c k协议栈开发 环境和工作流程精编 Document number:WTT-LKK-GBB-08921-EIGG-22986

TI Z-stack协议栈开发环境和工作流程 By KuangJunBin KuangJunBin:如您对本项目感兴趣或者有任何疑问,欢迎与我一起探讨:。谢谢您的阅读! ? 系统软件设计是在硬件设计的基础上进行的,良好的软件设计是实现系统功能的重要环节,也是提高系统性能的关键所在。节点设计基于通用性及便于开发的考虑,移植了TI公司的Z-Stack协议栈,其主要特点就是其兼容性,完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。Z-Stack还支持丰富的新特性,如无线下载,可通过ZigBee网状网络(Mesh Network)下载节点更新。 图 ZigBee节点开发环境 TI的Z-Stack装载在一个基于IAR开发环境的工程里。强大的IAR Embedded Workbench除了提供编译下载功能外,还可以结合编程器进行单步跟踪调试和监测片上寄存器、Flash数据等。Z-Stack根据IEEE 802. 和ZigBee标准分为以下几层:API(Application Programming Interf

ace),HAL (Hardware Abstract Layer),MAC(Media Access Control), NWK(Zigbee Network Layer),OSAL (Operating System Abstract System),Security,Ser vice,ZDO(Zigbee Device Objects)。使用IAR打开工程文件后,即可查看到整个协议栈从HAL层到APP层的文件夹分布。该协议栈可以实现复杂的网络链接,在协调器节点中实现对路由表和绑定表的非易失性存储,因此网络具有一定的记忆功能。 Z-Stack采用操作系统的思想来构建,采用事件轮循机制,当各层初始化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。如果同时有几个事件发生,判断优先级,逐次处理事件。这种软件构架可以极大地降级系统的功耗。 整个Z-stack的主要工作流程,大致分为系统启动,驱动初始化,OSAL初始化和启动,进入任务轮循几个阶段,下面将逐一详细分析。 图 Z-Stack系统运行流程图 Figure . The Flow Chart of Z-Stack ?

TIZstack协议栈开发环境和工作流程

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 TIZstack协议栈开发环境和工作流程 甲方:___________________ 乙方:___________________ 日期:___________________

TI Z-stack 协议栈开发环境和工作流程 系统软件设计是在硬件设计的基础上进行的,良好的软件设计是 实现 系统功能的重要环节,也是提高系统性能的关键所在。节点设计基丁通用 性及便丁开发的考虑,移植了 TI 公司的Z-Stack 协议栈,其主要特点就是其兼 容性,完全支持IEEE 802. 15. 4/ZigBee 的CC2430片上系统解决方案。Z-Sta ck 还支持丰富的新特性,如无线下载,可通过 ZigBee 网状网络(Mesh Networ k)下载节点更新。 Z furn gr irrc vrivci t Bfei AS JJiflll-ltC -liNri l - lie *4--? U ■Bl.K II 图ZigBee 节点开发环境 TI 的Z-Stack 装载在一个基丁 IAR 开发环境的工程里。强大的IAR E mbedded Workbench 除了提供编译下载功能外,还可以结合编程器进行单步跟踪 调试和监测片上寄存器、Flash 数据等。Z-Stack 根据IEEE 802. 15.4 和ZigB ee 标准分为以下几层: API (Application Programming Interface ) , HAL (H ardware Abstract Layer ) , MAC( Media Access Control) , NWK( Zigbee Ne twork Layer ) , OSAL( Operating System Abstract System ) , Security , Se rvice , ZDO(Zigbee Device Objects )。使用 IAR 打开工程文件 SampleApp.e ww 后,即可查看到整个协议栈从 HAL 层到APP 层的文件夹分布。该协议栈可以 实现复杂的网络链接,在协调器节点中实现对路由表和绑定表的非易失性存储, 因此网络具有一定的记忆功能。 Z-Stack 采用操作系统的思想来构建,采用事件轮循机制,当各层 初始 化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断 Ri-TPr — iw"" t ■ W T ■ E M ± -

ZigBee协议栈(免费下载)

2005 Microchip Technology Inc.DS00965A_CN 第1页 AN965 引言 ZigBee?是专为低速率传感器和控制网络设计的无线网络协议。有许多应用可从ZigBee 协议受益,其中可能的一些应用有:建筑自动化网络、住宅安防系统、工业控制网络、远程抄表以及PC 外设。 与其他无线协议相比,ZigBee 无线协议提供了低复杂性、缩减的资源要求,最重要的是它提供了一组标准的规范。它还提供了三个工作频带,以及一些网络配置和可选的安全功能。 如果您正在寻求现有的控制网络技术(例如RS-422、RS-485)或专有无线协议的替代方案,ZigBee 协议可能是您所需的解决方案。 此应用笔记旨在帮助您在应用中采用ZigBee 协议。 可以使用在应用笔记中提供的Microchip ZigBee 协议栈快速地构建应用。为了说明该协议栈的用法,本文包含了两个有效的演示应用程序。可将这两个演示程序作为参考或者根据您的需求经过简单修改来采用它们。此应用笔记中提供的协议栈函数库实现了一个与物理层无关的应用程序接口。 因此,无需做重大修改就可以轻松地在射频(Radio Frequency ,RF )收发器之间移植应用程序。 在此文档末尾的“常见问题解答”中提供了有关Microchip 协议栈和用法的一些常见问题及其答案。 假设 此文档假设您熟悉C 编程语言。文档中大量使用了有关ZigBee 和IEEE 802.15.4规范的术语。 此文档没有详细讨论ZigBee 规范,只提供了对ZigBee 规范的简要概述。建议您仔细阅读ZigBee 和IEEE 802.15.4规范。 特性 Microchip ZigBee 协议栈设计为随着ZigBee 无线协议规范的发展而发展。在发布此文档时,该协议栈的 1.0版本具有以下特点(欲知最新特性,请参阅源代码版本日志文件version.log ):? 基于ZigBee 规范的0.8版本 ? 使用Chipcon CC2420 RF 收发器支持2.4GHz 频带 ? 支持简化功能设备(Reduced Function Device ,RFD )和协调器 ? 在协调器节点中实现对邻接表和绑定表的非易失性存储 ? 支持非时隙的星型网络 ? 可以在大多数PIC18系列单片机之间进行移植? 协同多任务处理架构? 不依赖于RTOS 和应用 ? 支持Microchip MPLAB ? C18和Hi-Tech PICC-18? C 编译器 ? 易于添加或删除特定模块的模块化设计 限制 Microchip 协议栈的1.0版本包含以下限制。请注意随着时间的推移,Microchip 会添加新特性。如需了解目前的限制,请参阅源代码版本日志文件(version.log )。? 不完全符合ZigBee 协议? 不支持群集和点对点网络? 无安全和访问控制功能? 无路由器功能 ? 不提供标准的配置文件;但是包含创建配置文件必需的所有原始函数? 不支持一对多绑定 作者: Nilesh Rajbharti Microchip Technology Inc. Microchip ZigBee ?协议栈 https://www.doczj.com/doc/7a690885.html, 电子发烧友 https://www.doczj.com/doc/7a690885.html, 电子技术论坛

相关主题
文本预览
相关文档 最新文档