1 i/o
2 外部中断。
3 定时器。
4 通讯( uart / i2c / spi )
5 存储器( flash / simulate eeprom)
1 i/o1)通过写gpio_cfg,最多可配置17个gpio: gpio0~gpio16。具体设置见em250datasheet 第29页**:
2)gpio的配置用到的寄存器还有:
gpio_clrh gpio_clrl
gpio_seth gpio_setl
gpio_dirh gpio_dirl
gpio_dbg
gpio_pdh gpio_pdl
gpio_puh gpio_pul
3)pti的功能:
pti_en和pti_data共用gpio4和gpio5
在物理层,将模块收发的数据包发出来,通过insight adapter传送给pc,以适时跟踪网络行为,这个功能将用于insight adapter capture。如果禁能pti,用insight adapter capture时,将收到不明数据。为保证capturer 的质量,当使能pti时,gpio4和gpio5将不可用,也不要接其它外围器件。
4)adc功能:
当使能adc功能时,除了配置gpio_cfg外,相关引脚(26,27,29,30) 还应配置成输入态。定时器的输入捕捉,脉冲输出一样,也应适当配置。
5)在hal/micro/xap2b/em250/board/中设置reset后的i/o初始状态:
#define powerup_gpio_cfgxx
#define powerup_gpio_dirhxx
#define powerup_gpio_dirlxx
#define powerup_gpio_clrhxx
#define powerup_gpio_clrlxx
#define powerup_gpio_sethxx
#define powerup_gpio_setlxx
#define powerup_gpio_puhxx
#define powerup_gpio_pulxx
及进入睡眠后各i/o状态。
2 外部中断。
1)共有四个普通外部中断口(irqa、irqb、irqc、irqd)
2)要配置的寄存器有:
int_cfg int_gpioflag int_miss
gpio_intcfga gpio_intcfgb gpio_intcfgc gpio_intcfgd
3)当有中断发生时,系统自动调用hal/micro/xap2b/ 中的函数:
halgpioisr(int16u interrupt, int16u pcbcontext)
在此函数中编写用户的io中断服务程式。
4)znetstack的样本程式中,定义了两个按钮button0,button1,使用irqa,irqc,双沿触发。
中断初始程式,写在hal/micro/xap2b/
halinternalinitbutton()
里面用到的宏在hal/micro/xap2b/em250/board/里定义。
3 定时器。
1) 共有两个普通定时器timer1,timer2
2)相关寄存器:
int_cfgint_tmrcfg,tmr1_cfgtmr1_cnttmr1_top
tmr1_cmpcfga tmr1_cmpcfgb
tmr1_cmpa tmr1_cmpb
tmr1_capcfga tmr1_capcfgb
tmr1_capa tmr1_capb
tmr2_cfgtmr2_cnttmr2_top
tmr2_cmpcfga tmr2_cmpcfgb
tmr2_cmpa tmr2_cmpb
tmr2_capcfga tmr2_capcfgb
tmr2_capa tmr2_capb
以上寄存器相关用法见em250 datasheet 5.4节。
3)当有定时器中断发生时,系统自动调用hal/micro/xap2b/ 里的:
haltimerisr()
在此函数中编写用户的定时中断服务程式。
4)znetstack的样本程式中,用timer1做了一个蜂鸣器,初始程序在hal/micro/xap2b/
halplaytune_p()
如需要用到timer1,应清空halplaytune_p()的**。
4 通讯( uart / i2c / spi )
1)共有两个通讯口:sc1和sc2
其中:sc1可被配置成uart、i2c master、spi master
sc2可被配置成i2c master、spi master、spi sl**e
配置方法参考第一节gpio口的配置。
2) 当sc1中断发生时,系统自动调用:halinternalsc1isr()
当sc2中断发生时,系统自动调用:halinternalsc2isr(),在上面的函数中,编写用户的中断服务程式。
3)如果想将sc1配置成uart,在app/sensor/的主程式中运行:
emberserialinit(0, baud_19200, parity_none, 1);
emberserialinit(1, baud_19200, parity_none, 1);
其中:baud_19200是通讯速度。
在app/sensor/ 中:
#define app_serial 1
改为。#define app_serial 0
port0是虚拟端口。app_serial用于发送一些状态信息。
4)如果要发送数据则运行:
emberserialwritedata(int8u port, int8u *data, int8u length)
5)如要接收数据则运行。
emberserialreadbyte(int8u port, int8u *databyte)
每次从缓冲区读一个字节。
如果缓冲区内有数据,则返回ember_success(*databyte有效)。
查询缓冲剩余空间:
emberserialwrite**ailable(port)
缓冲区大小。
emserialtxqueuesizes[port]
5 存储器( flash / simulate eeprom)
1)内部有128k byte flash,最后8k 虚拟成eeprom
2) flash 地址分配见hal/micro/xap2b/em250/
3) 虚拟eeprom的使用:
使用虚拟eeprom储存一个大小为e_size的数据e_data.
a) 打开文件stack/config/
b) 找到 //app creators
c) 在其下写。
#define creator_ e_data 0xe458
c) 找到 typedef int8u toktypestackkeytable[25]
d) 在其下写。
typdef int8u toktypeedata[12];
e) 找到 define_indexed_token(stack_key_table,toktypestackkeytable,ember_key_table_token_size,0,})
f) 在其下写。
define_indexed_token (e_data,toktypeedata,e_size,0,})
g) 写虚拟eeprom:
halcommonsetindexedtoken(token_ e_data, index, &data );
halstacksetindexedtoken(token_ e_data, index, &data, size );
h) 读虚拟eeprom:
halcommongetindexedtoken(&data, token_ e_data, index );
halstackgetindexedtoken(&data, token_ e_data, index, size );
计算机硬件技术及应用
计算机硬件技术及应用期末试卷。学号姓名成绩 第1部分客观题。1.软件与硬件的等价性原理说明软硬件在功能 性能和成本等方面是等价的。2.无符号数在前面加零扩展,数值不变 有符号数前面进行符号扩展,位数加长一位 数值增加一倍。3.c语言变量类型float,对应ieee754标准规定的单精度浮点数。4.半...
教师计算机硬件及应用基础
一 说明。一 课程性质。信息类课程,提高中小学教师对计算机基础硬件的认识 计算机日常维护的能力及计算机应用的水平。二 教学目的。本课程目的是帮助学员掌握计算机的硬件组成 日常计算机的维护 多 平台的使用及维护,能使用powerpoint制作简单的课件,能深入掌握校园网的应用及网络搜索的技巧。三 教学...
数字化教学及资源应用培训心得体会
精品文档。数字化教学及资源应用培训心得体会。为了让多 技术更好地为教学服务,提高教师利用 班班通 设备和资源进行课堂教学的能力,我们少林路小学在多 教室组织老师参加了数字化教学及教育资源应用培训,通过这次学习,让我深刻认识到数字化学习是信息时代重要的学习方式。数字化学习课程比其他学科有条件为学生提供...