问题描述
我尝试捕获 RxBuffer,我使用的是 nRF52840 当我不使用回调时,缓冲区是清晰的, RxBuffer 来自 UART1,显示在 UART0 上,
代码:
`void uart_event_handler1(void * context,nrf_libuarte_async_evt_t * p_evt)
{
nrf_libuarte_async_t * p_libuarte = (nrf_libuarte_async_t *)context;
ret_code_t ret;
switch (p_evt->type)
{
case NRF_LIBUARTE_ASYNC_EVT_ERROR:
bsp_board_led_invert(0);
break;
case NRF_LIBUARTE_ASYNC_EVT_RX_DATA:
**//nrf_libuarte_async_tx(&libuarte,p_evt->data.rxtx.p_data,p_evt->data.rxtx.length);**
**GPS_CallBack();**
//NRF_LOG_INFO("GPS CALLBACK /n/r");
break;
case NRF_LIBUARTE_ASYNC_EVT_TX_DONE:
bsp_board_led_invert(2);
break;
default:
break;
} `
但是当我使用 GPS_call back 时, GPS_CallBack(); Rxbuffer 被切断, 我在这里想念什么?
回调代码:
`
typedef struct
{
uint8_t rxBuffer[480];
uint16_t rxIndex;
uint8_t rxTmp;
uint32_t LastTime;
GPGGA_t GPGGA;
}GPS_t;
void GPS_CallBack(void)
{
GPS.LastTime=nrf_systick_val_get(); //originally
if(GPS.rxIndex < sizeof(GPS.rxBuffer)-2)
{
//p_evt->data.rxtx.p_data[GPS.rxIndex] = GPS.rxTmp;
GPS.rxBuffer[GPS.rxIndex] = GPS.rxTmp; //originally
GPS.rxIndex++;
//memcpy((void *)line_buffer_GPS,GPS.rxBuffer,GPS.rxIndex);
}
nrf_libuarte_async_rx_free(&libuarte1,(uint8_t *)&GPS.rxTmp,1);
//DEBUG
//display to buffer
nrf_libuarte_async_tx(&libuarte,sizeof(GPS.rxBuffer));
}
`
有什么想法吗?
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)