串口接收数据的时候,总是很难进入到中断处理函数,发好几次数据可能只有一次能触发中断响应的,有办法提高响应速度吗?
您好,您是如何判断只有少数情况会触发中断的。默认例程里可能会在两处代码触发接收中断,一处是数据量达到触发点,另一处是接收超时。接收超时要求FIFO中至少留有一个字节以供硬件判断超时。
如果需要每次接收中断都要进超时,可以参考下列博客,在数据量达到触发点时只接收n-1个数据。
因为一进入中断函数就会打印,但是发送了很多次数据都没有反应,手机也没有收到信息。程序都是进入超时中断,没有进入触发点中断。
接收超时的条件是什么,要设置超时的时间吗?
我用的是蓝牙串口透传例程,触发点是在这里设置吗?
app_drv_fifo_result_t
app_drv_fifo_init(app_drv_fifo_t *fifo, uint8_t *buffer, uint16_t buffer_size)
{
if(buffer_size == 0)
{
return APP_DRV_FIFO_RESULT_LENGTH_ERROR;
}
if(0 != ((buffer_size) & (buffer_size - 1)))
{
return APP_DRV_FIFO_RESULT_LENGTH_ERROR;
}
fifo->begin = 0;
fifo->end = 0;
fifo->data = buffer;
fifo->size = buffer_size;
fifo->size_mask = buffer_size - 1;
return APP_DRV_FIFO_RESULT_SUCCESS;
}
BLE_UART的例程下面有一个Readme,参考一下,使用串口3进行数据收发,同时接串口1打印观察。
连接BLE调试助手进行蓝牙的数据透传,无问题。
重新解压了一个程序也不行,发20次只能收到3次
1、确认是使用的官方EVT,官方开发板进行测试;
2、使用官方的例程不做修改进行测试,官方可以提供出来的程序,是不会出现问题的,这也是经过我们测试的;
3、发送数据的时候先发送一个字节,注意程序中是有一份Readme,请仔细参数,相应的使用方法是提供出来的。