日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CC2640使用snv保存信息

發布時間:2024/3/26 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CC2640使用snv保存信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TI在協議棧中提供了兩個標準函數用于寫入和讀取信息的函數,分別是:

uint8 osal_snv_write( osalSnvId_t id, osalSnvLen_t len, void *pBuf)

uint8 osal_snv_write( osalSnvId_t id, osalSnvLen_t len, void *pBuf)

兩個函數的返回值皆為兩種情況 SUCCESS 和?NV_OPER_FAILED

這兩個宏定義在頭文件 comdef.h 中定義

#define SUCCESS ? ? ? ? ? ? ? ? ? 0x00 //!< SUCCESS

#define NV_OPER_FAILED ? ? ? ? ? ?0x0A //!< NV Operation Failed

在頭文件 bcomdef.h 中定義了用戶可以使用的ID范圍

// Customer NV Items - Range ?0x80 - 0x8F - This must match the number of Bonding entries
#define BLE_NVID_CUST_START ? ? ? ? ? ? 0x80 ?//!< Start of the Customer's NV IDs
#define BLE_NVID_CUST_END ? ? ? ? ? ? ? 0x8F ?//!< End of the Customer's NV IDs

直接操作讀寫就可以,例如:

? uint8_t Write_data[4] = {0x88,0x66,0x66,0x88};
? uint8_t Read_data[4];

? osal_snv_write(0x82,4,Write_data);
? osal_snv_read(0x82,4,Read_data);

打印 Read_data 的值:

其中,osal_snv_write和osal_snv_read的第二個參數的最大不能超過252,

使用時也無需初始化,協議棧已經初始化了,直接使用很方便。

那么存儲結構體也是很方便的,例如:

typedef struct{
? ? uint8_t a[2];
? ? uint8_t b[4];
? ? uint8_t c[16];
? ? uint8_t d;
}data_t;
data_t Write_data = {
?.a = {0x1,0x2},
?.b = {0x3,0x4,0x5,0x6},
?.c = {0x7,0x8,0x9,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x20,0x21,0x22},
?.d = 0x23
};
data_t Read_data;

然后在主程序中寫入再讀出來:

? ? ? osal_snv_write(0x82,sizeof(Write_data),&Write_data);
? ? ? osal_snv_read(0x82,sizeof(Read_data),&Read_data);

結果正確!

?

?

總結

以上是生活随笔為你收集整理的CC2640使用snv保存信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。