WCH沁恒单片机
直播中

李春梅

7年用户 1729经验值
私信 关注
[问答]

CH573蓝牙会卡死,如何防攻击?

RT,

void RF_2G4StatusCallBack( uint8 sta , uint8 crc, uint8 *rxBuf )
{
switch( sta )
{
case RX_MODE_RX_DATA:
RF_Shut();
if( crc == 1 )
{
//PRINT("crc errorn");
}
else if( crc == 2 )
{
//PRINT("match type errorn");
}
else
{
if(l_rf_read_cb != NULL){
l_rf_read_cb(rxBuf);
}
}
RF_Rx( NULL,0, l_package_type, 0xFF );
break;
}
//PRINT("STA: %xn",sta);
}

void rf_read_cb(uint8_t* ptData){
#ifdef DEBUG_ME
/*int i = 0;
PRINT("read data:");
for(i=0;i 245){
PRINT("data > 245n");
return;
}

/*if(queue_can_write_len(&g_bt_queue) >= ptData[1]+2){
queue_put(&g_bt_queue,ptData[1]);
queue_put_buff(&g_bt_queue,ptData+2,ptData[1]);//data
}else{
PRINT("queue fulln");
}
tmos_set_event(l_task_id, SBP_MAIN_RF_EVT);
PRINT("endn");*/


memcpy(uart_send_buff,ptData+2,ptData[1]);
UART0_SendString( uart_send_buff, ptData[1]);

//PRINT("en");
}


一块板子在收,并打印,一块板子在发,当发送的板子使用while(1) tx的时候,接收的板子可能出现卡死,TMOS set event后再也进不了

RF_2G4StatusCallBack
,只要把发送的板子关闭,那接收的板子立马就正常了。

如果发送的板子,发送的时候加上延时,而非while(1) tx,那么接收的板子就没事



回帖(1)

孙婧

2022-9-1 10:21:26
在接收的回调函数里,不要立刻开启接收,而是设置一个event,然后在event里面进行接收。
这个原因是 :
发送比较快,导致接收中断来的太快,你又在接收回调里面把接收打开了,而tmos状态机轮询需要一定时间。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分