Embedded 将扩展数据值读取到CC2541中的应用程序

Embedded 将扩展数据值读取到CC2541中的应用程序,embedded,bluetooth-lowenergy,iar,Embedded,Bluetooth Lowenergy,Iar,我想读取蓝牙LE芯片CC2541的MAC地址。这存储在内存位置0x780C中。我通过了考试 osal_snv_read 函数,但我不知道osalSnvId\u t id是什么。关于此工作原理的简要说明将非常有用。osalSnvId\u t是uint的类型定义,可以是uint8或uint16。该值将介于0x00和0xFF之间 低至0x7F的值是为Zigbee保留的,这些位置将在头文件中的某个位置用宏定义 您可以出于自己的目的使用0x80到0xFE之间的值 osal_snv_write( 0x80

我想读取蓝牙LE芯片CC2541的MAC地址。这存储在内存位置0x780C中。我通过了考试

osal_snv_read

函数,但我不知道osalSnvId\u t id是什么。关于此工作原理的简要说明将非常有用。

osalSnvId\u t是uint的类型定义,可以是uint8或uint16。该值将介于0x00和0xFF之间

低至0x7F的值是为Zigbee保留的,这些位置将在头文件中的某个位置用宏定义

您可以出于自己的目的使用0x80到0xFE之间的值

osal_snv_write( 0x80, 6, "hello" );
osal_snv_read( 0x80, 6, mybuf );

显然,存储MAC地址的位置不能使用osal_snv_read读取。所以要么我必须使用

GAPRole_GetParameter(GAPROLE_BD_ADDR, ownAddress);
之后

或者我必须使用

__xdata __no_init uint8 mac_id[6] @ 0x780C;
__扩展数据表示它正在从扩展数据内存中读取,而_no_init则告诉编译器不要初始化此变量。此外,必须将其保留在任何函数之外,以防止其声明为自动变量


信用证:

所以为了读取内存位置0x780C,我需要在头文件中搜索宏,找出指向该内存地址的id,并使用它进行读取?0x780E是正确的地址!
__xdata __no_init uint8 mac_id[6] @ 0x780C;