CC2640使用snv保存信息
TI在協(xié)議棧中提供了兩個(gè)標(biāo)準(zhǔn)函數(shù)用于寫入和讀取信息的函數(shù),分別是:
uint8 osal_snv_write( osalSnvId_t id, osalSnvLen_t len, void *pBuf)
uint8 osal_snv_write( osalSnvId_t id, osalSnvLen_t len, void *pBuf)
兩個(gè)函數(shù)的返回值皆為兩種情況 SUCCESS 和?NV_OPER_FAILED
這兩個(gè)宏定義在頭文件 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的第二個(gè)參數(shù)的最大不能超過252,
使用時(shí)也無需初始化,協(xié)議棧已經(jīng)初始化了,直接使用很方便。
那么存儲(chǔ)結(jié)構(gòu)體也是很方便的,例如:
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);
結(jié)果正確!
?
?
總結(jié)
以上是生活随笔為你收集整理的CC2640使用snv保存信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我爱背单词031
- 下一篇: 项目中spring事务管理配置分析与修改