ZStack(CC2530) 断电存储(NV)方法
来源:互联网 发布:面向对象编程什么意思 编辑:程序博客网 时间:2024/05/22 07:03
写了很久的CC2530代码,终于要用到断电存储功能了。比如,我希望断电之后,重新上电能把我上次采集的温度信息保存下来。
其实很简单。
第一:不要预定义什么,你只需要看看你的代码里有没有用到 osal_nv_init(NULL)来进行NV初始化就好了。
查询位置: ZMain.c文件中的main()函数,如果有就可以进行第二步了。实在不是很确定的,可以IAR工具里Debug看看。
第二:写初始化代码
osal代码里说的很清楚,在使用osal_nv_read和osal_nv_write之前必须调用osal_nv_item_init进行初始化。
从CC2530的<OSAL API.pdf>中可以看到自定义的NV 编号范围是 0x0401 – 0x0FFF。
代码
#define ZD_NV_TEMP_ID 0x0404uint8 InitNVStatus=osal_nv_item_init(ZD_NV_TEMP_ID,sizeof(zclAirConditionFuns),NULL);
其中 zclAirConditionFuns为一个struct.
InitNVStatus的输出值见下表,这个非常关键:
值含义SUCCESS表示成功,并且该ID已经存在NV_ITEM_UNINIT表示成功,但ID之前不存在,即第一次初始化。NV_OPER_FAILED初始化失败
第二 : 读取NV的内容
其实第一次读取时,读到的内容必然是无效的,因此要结合初始化的结果来判断信息是否有效。
zclAirConditionFuns AirConditionStatusNV;
readNVStatus=osal_nv_read(ZD_NV_TEMP_ID,0, sizeof(zclAirConditionFuns),&AirConditionStatusNV );if(readNVStatus==SUCCESS&&InitNVStatus==SUCCESS){ ...................}
也就是说初次烧录代码时不会处理读到的信息,因为第一次读取的本来就是无效的,因为还没有写入过。当然,如果你在读取之前已经写过了,那就能读出有效信息。
第三: 向NV写内容
writeNVStatus=osal_nv_write(ZD_NV_TEMP_ID,0,sizeof(zclAirConditionFuns),&AirConditionStatus);
注意事项:
1. NV操作不能过于频繁,耗时耗能量。
2. 每次利用IAR烧录时就是重新擦除了,因此如果希望看自己的代码是否有效,只能断电重启通过其他方式验证,别指望通过DEBUG方式验证代码的有效性。
阅读全文
1 0
- ZStack(CC2530) 断电存储(NV)方法
- ZStack(CC2530) 断电存储(NV)方法
- cc2530 Zstack NV操作类似EEPROM 掉电不丢失(flash)
- zstack cc2530 ZStack-CC2530-2.4.0-1.4.0 修改txpower方法
- Zstack设置发送功率(CC2530)
- Zstack设置发送功率(CC2530)
- Zstack设置发送功率(CC2530)
- Zstack中关于NV的几个问题
- CC2530 NV最细致讲解操作
- Zstack协议栈中CC2530协调器掉电重启后重新加入之前网络的方法
- Zstack协议栈中CC2530协调器掉电重启后重新加入之前网络的方法
- Zigbee网关 cc2530 zstack添加1602驱动
- zigbee(CC2530+ZSTACK)的AES加密
- zigbee单播丢包测试(CC2530,ZSTACK)
- CC2530 zstack 2.5.1 生成hex文件
- ZigBee TI ZStack CC2530 1.1 总体框架
- CC2530 ZStack 增加2400波特率笔记
- IAR编译ZStack-CC2530,生成HEX文件完全配置
- SDL2.0 使用互斥量
- AfxGetApp用法
- apt-get install 下载太慢怎么办,用apt-fast!
- springMVC-参数绑定(服务器接收页面传来的参数)返回值转换为JSON
- TCP套接字(server/client实现)
- ZStack(CC2530) 断电存储(NV)方法
- 汇编-字符串小写转大写
- Android 序列化学习总结
- HBase笔记-4.HBase的mapredece
- 探索MFC全局函数-AfxGetApp()
- win10卸载ubuntu
- HALCON安装与配置(VS2013+HALCON13)
- 国际化测试-ICU
- python中MySQLdb使用中踩过的坑