你好对话小组
我想反射BD地址,该地址读取表格的外部存储器的特定区域到DA14580。在AN-B23第9.1章和第12章和第12.5章中,已仅针对TrimMig值描述了示例源。关于来自外部内存读取的BD地址值,我不知道修改。BD地址应该如何从延伸记忆中反映为DA14580?
最好的祝福
嗨舒河,
BD地址由Custom_nvds_get_func加载到堆栈中。
感谢您的回复。我通过将从外部内存读取的BD地址复制到NVDS.C中的“BUF”来确认它很好。感谢您的信息。
嗨,对话我的芯片组也是14580。我想动态地改变BD地址,因为我引用了这个艺术。我知道我必须在nvds.c中修改custom_nvds_get_func因此,我在char数组中准备一个bd地址:{{0x61},{0x62},{0x63},{0x64},{0x65},{0x66}}这是我的custom_nvds_get_func:
extern char device_bd_addr [6];Uint8_t custom_nvds_get_func(uint8_t tag,nvds_tag_len_t * lengeptr,uint8_t * buf){开关(标签){案例nvds_tag_bd_address:if(nvds_data_ptr-> nvds_validation_flag&bd_address_valid){if(* lenderptr {* lengemptr = 0;返回nvds_length_out_of_range;}别的{uint8_t buf1 [6];Memcpy(&buf1,&device_bd_addr,nvds_len_bd_address);* lengemptr = nvds_len_bd_address;返回nvds_get_func(标记,lengeptr,buf1);}}休息;}返回nvds_get_func(标记,lengeptr,buf);}
我的调用版位于UART_SPS.C中
nvds_tag_len_t loadingptr;uint8_t buff1 [6];uint8_t re = custom_nvds_get_func(nvds_tag_bd_address,&lengeptr,bud1);if(re == nvds_ok){app_gapm_reset_msg_create();app_easy_gap_advertise_with_timeout_stop();app_easy_gap_undircated_advertise_start();}
最终的BD地址已经完全更改(不是默认{0x00,0x00,0x00,0xca,0xea,0x80}),但其值未预期{{0x61},{0x62},{0x63},{0x64},{0x65},{0x66}}它是0x00,0x06,0x00,0x00,0x00,0x00怎么了?
嗨Double524,
我完全没有得到你想要做的事情,但是你为什么要分配一个额外的本地数组并从全局变量中拥有的数组复制BD地址,也是为什么在做你再次调用nvds_get_func()之后?
只需执行以下操作,您就可以从您所设置的Device_BD_ADDR数组中获取所需的广告地址。
案例nvds_tag_bd_address:{if(nvds_data_ptr-> nvds_validation_flag&bd_address_valid){if(* lenderptr {* lengemptr = 0;返回nvds_length_out_of_range;}别的{memcpy(buf,device_bd_addr,nvds_len_bd_address);* lengemptr = nvds_len_bd_address;返回(nvds_ok);}}休息;}
谢谢mt_dialog.
嗨舒河,
BD地址由Custom_nvds_get_func加载到堆栈中。
你好对话小组
感谢您的回复。
我通过将从外部内存读取的BD地址复制到NVDS.C中的“BUF”来确认它很好。
感谢您的信息。
最好的祝福
最好的祝福
嗨,对话
我的芯片组也是14580。
我想动态地改变BD地址,因为我引用了这个艺术。
我知道我必须在nvds.c中修改custom_nvds_get_func
因此,我在char数组中准备一个bd地址:{{0x61},{0x62},{0x63},{0x64},{0x65},{0x66}}
这是我的custom_nvds_get_func:
extern char device_bd_addr [6];{
Uint8_t custom_nvds_get_func(uint8_t tag,nvds_tag_len_t * lengeptr,uint8_t * buf)
{
开关(标签)
{
案例nvds_tag_bd_address:
if(nvds_data_ptr-> nvds_validation_flag&bd_address_valid)
{
if(* lenderptr
* lengemptr = 0;
返回nvds_length_out_of_range;
}
别的
{
uint8_t buf1 [6];
Memcpy(&buf1,&device_bd_addr,nvds_len_bd_address);
* lengemptr = nvds_len_bd_address;
返回nvds_get_func(标记,lengeptr,buf1);
}
}
休息;
}
返回nvds_get_func(标记,lengeptr,buf);
}
我的调用版位于UART_SPS.C中
nvds_tag_len_t loadingptr;
uint8_t buff1 [6];
uint8_t re = custom_nvds_get_func(nvds_tag_bd_address,&lengeptr,bud1);
if(re == nvds_ok)
{
app_gapm_reset_msg_create();
app_easy_gap_advertise_with_timeout_stop();
app_easy_gap_undircated_advertise_start();
}
最终的BD地址已经完全更改(不是默认{0x00,0x00,0x00,0xca,0xea,0x80}),但其值未预期{{0x61},{0x62},{0x63},{0x64},{0x65},{0x66}}
它是0x00,0x06,0x00,0x00,0x00,0x00
怎么了?
嗨Double524,
我完全没有得到你想要做的事情,但是你为什么要分配一个额外的本地数组并从全局变量中拥有的数组复制BD地址,也是为什么在做你再次调用nvds_get_func()之后?
只需执行以下操作,您就可以从您所设置的Device_BD_ADDR数组中获取所需的广告地址。
案例nvds_tag_bd_address:{
{
if(nvds_data_ptr-> nvds_validation_flag&bd_address_valid)
{
if(* lenderptr
* lengemptr = 0;
返回nvds_length_out_of_range;
}
别的
{
memcpy(buf,device_bd_addr,nvds_len_bd_address);
* lengemptr = nvds_len_bd_address;
返回(nvds_ok);
}
}
休息;
}
谢谢mt_dialog.