為什么串口透傳例程里,接收串口中斷這么遲鈍的

串口接收數(shù)據(jù)的時(shí)候,總是很難進(jìn)入到中斷處理函數(shù),發(fā)好幾次數(shù)據(jù)可能只有一次能觸發(fā)中斷響應(yīng)的,有辦法提高響應(yīng)速度嗎?

您好,您是如何判斷只有少數(shù)情況會觸發(fā)中斷的。默認(rèn)例程里可能會在兩處代碼觸發(fā)接收中斷,一處是數(shù)據(jù)量達(dá)到觸發(fā)點(diǎn),另一處是接收超時(shí)。接收超時(shí)要求FIFO中至少留有一個(gè)字節(jié)以供硬件判斷超時(shí)。

如果需要每次接收中斷都要進(jìn)超時(shí),可以參考下列博客,在數(shù)據(jù)量達(dá)到觸發(fā)點(diǎn)時(shí)只接收n-1個(gè)數(shù)據(jù)。

CH582m串口透傳程序 - JayWell - 博客園 (cnblogs.com)


因?yàn)橐贿M(jìn)入中斷函數(shù)就會打印,但是發(fā)送了很多次數(shù)據(jù)都沒有反應(yīng),手機(jī)也沒有收到信息。程序都是進(jìn)入超時(shí)中斷,沒有進(jìn)入觸發(fā)點(diǎn)中斷。

接收超時(shí)的條件是什么,要設(shè)置超時(shí)的時(shí)間嗎?

我用的是藍(lán)牙串口透傳例程,觸發(fā)點(diǎn)是在這里設(shè)置嗎?


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的例程下面有一個(gè)Readme,參考一下,使用串口3進(jìn)行數(shù)據(jù)收發(fā),同時(shí)接串口1打印觀察。

連接BLE調(diào)試助手進(jìn)行藍(lán)牙的數(shù)據(jù)透傳,無問題。


重新解壓了一個(gè)程序也不行,發(fā)20次只能收到3次

image.png

ef04560eb0e59ba2b6fb3f66373f8e1.jpg






1、確認(rèn)是使用的官方EVT,官方開發(fā)板進(jìn)行測試;

2、使用官方的例程不做修改進(jìn)行測試,官方可以提供出來的程序,是不會出現(xiàn)問題的,這也是經(jīng)過我們測試的;

3、發(fā)送數(shù)據(jù)的時(shí)候先發(fā)送一個(gè)字節(jié),注意程序中是有一份Readme,請仔細(xì)參數(shù),相應(yīng)的使用方法是提供出來的。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频