GPS回调中断?

问题描述

我尝试捕获 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;
        }   ` 

enter image description here

但是当我使用 GPS_call back 时, GPS_CallBack(); Rxbuffer 被切断,

enter image description here

在这里想念什么?

回调代码

`
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 (将#修改为@)