嗨,对话框中,
我正在申请持续扫描,我也需要把扫描的包拉到UART。我在通过UART发送的时候,我担心会暂时阻塞扫描。有什么方法我可以做轮询出我通过UART得到的包,而不阻止扫描过程?
这里我把我的一些代码放在这里:
空白app_scan2(空白)
{
struct gapm_start_scan_cmd *cmd = KE_MSG_ALLOC(gapm_start_scan_cmd,
TASK_GAPM TASK_APP,
gapm_start_scan_cmd);
cmd - > op。代码= GAPM_SCAN_PASSIVE;
cmd - >间隔= 12288;/ / 6000毫秒
cmd窗口- > = 12288;/ / 6000毫秒
cmd - >模式= GAP_GEN_DISCOVERY;
cmd - > filt_policy = SCAN_ALLOW_ADV_ALL;
cmd - > filter_duplic = SCAN_FILT_DUPLIC_DIS;
ke_msg_send (cmd);
}
int gapm_adv_report_ind_handler (ke_msg_id_t是否,
struct gapm_adv_report_ind *参数,
ke_task_id_t dest_id,
ke_task_id_t src_id)
{
Volatile struct adv_report adv = param->report;
For (unsigned char I = 0;我< 6;我+ +)
{
white_addr1[我]= adv.adv_addr.addr[我];
}
uart2_init (UART_BAUDRATE_115K2 3);
For (unsigned char I = 0;我< 6;我+ +)
{
printf_byte (adv.adv_addr.addr[我]);
uart2_init (UART_BAUDRATE_115K2 3);
}
uart2_init (UART_BAUDRATE_115K2 3);
For (int j = 0;j < sizeof (adv.data);j + +)
{
printf_byte (adv.data [j]);
uart2_init (UART_BAUDRATE_115K2 3);
}
printf_string (" ");
uart2_init (UART_BAUDRATE_115K2 3);
返回(KE_MSG_CONSUMED);
}
}
嗨liuluan002,
可以使用arch_printf()函数,而不是直接使用printf函数,后者实际上直接使用UART。
您可以在最新SDK中通过定义CFG_PRINTF定义来启用arch_printf()函数,检查UART端口是您已经连接的端口,并包含您想在其中使用arch_printf()函数的arch_console.h文件。
由于MT_dialog
嗨,对话框中,
我正在尝试使用您的建议从UART轮询出一个数组。
然而,我得到系统重启每次我调用函数arch_printf(“%c”,package_send[j]);.如何解决这个问题,你有什么建议吗?
我的代码:
无符号字符package_send [133];
(unsigned char j = 0; j
嗨liuluan002,
我假定您的意思是想打印出该数组的数据。如果你的设备最终的wrap_platform_reset意味着你耗尽内存,你打印数据和分配额外的消息为每个字符印刷没有消费(印刷,因为实际打印时arch_printf_process调用)。尝试以更小的块打印数组元素,以便调用在schedule_while_ble_on()中调用的arch_printf_process()函数,并在输入其他数据之前打印数据。
由于MT_dialog