关于cc2530NV *** 作

关于cc2530NV *** 作,第1张

因为有一些需要由客户自己指定的数据,如WIFI的网络名、密码等,不能固定在下载程序中,所以可以使用NV,由用户自己确定。

NV *** 作主要实际下面三个函数:osal_nv_item_init、osal_nv_write、osal_nv_read

关于cc2530NV读取的简单代码例子:

需要注意的是,虽然NV可写入地址范围从 0x0401 – 0x0FFF,但是一定要注意,地址应该是 %4=1,如:0x401为十进制1025,1025%4=1;不能是%4=0,至于为什么是%4,可以参照cc2530手册。

另外在某地址第一次读写时,结果可以使用!=SUCCESS来判断,但如果这个地址已经被初始化过并写入过数据,再一次被初始化过,如果还是用!=SUCCESS是不行的,因为此时即使没数据,但读取也是SUCCESS!

#define PATHS_ID 0x0601

#define WIFI_NAME 0x0A01

#define WIFI_PWD 0x0A29

void writeNV(){

osal_nv_item_init(PATHS_ID ,1,NULL)//每次写入前必须先初始化

uint8 sfcsh=0

uint8 su_b=osal_nv_write(PATHS_ID ,0,1,&sfcsh)//写入标志

uint8 su_n= osal_nv_item_init(WIFI_NAME,40,NULL)

uint8 su_p= osal_nv_item_init(WIFI_PWD,40,NULL)

if((su_b==SUCCESS)&&(su_n==SUCCESS)&&(su_p==SUCCESS)){

HalLcdWriteString("init _ok", HAL_LCD_LINE_1 )

}

}

uint8 readNV(){

uint8 * pshuju

uint8 yuu =osal_nv_read(PATHS_ID,0,sizeof(pshuju),pshuju)

if(yuu==SUCCESS){

if(* pshuju==0)

{

return 0

}else

{

return 1

}

}

既然发送的那块开发板能下载,应该不是下载器的问题。两块板子都烧一下同一个程序试试,如果只有接收的那块板子有问题,那肯定是板子的问题了。检测一下线路是否接对是否了,如果都没问题。检测一下430是否能正常工作,否则很大可能是芯片坏了,该换一个一块芯片了试试了。看错误代码应该是下载器与单片机BSL无法同步,把两个程序对换一下看看,应该不是你程序的问题,检查一下板子,或者芯片。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11008096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存