8 years, 1 month ago.

Asynchronous serial read buffer size

Hi, I'm writing a software for the board STM32 Nucleo-F207ZG. I use the asynchronous read method to call a method when the board receive the char '\n'. Everything works great but only if the board receive an amount of data wich is less than 256 bytes, but I have declared a length of 2048! There is a limit set somewhere? Thanks!

#include "mbed.h"
Serial pc(USBTX, USBRX, 115200);
event_callback_t serialEventCb;
uint8_t* rx_buf;

static void received_n(int events) {
    // do stuff
    pc.read(rx_buf, 2048, serialEventCb, SERIAL_EVENT_RX_ALL, '\n');
}

int main(){
    rx_buf = (uint8_t*) malloc(2048*sizeof(uint8_t));
    serialEventCb.attach(received_n());
    pc.read(rx_buf, 2048, serialEventCb, SERIAL_EVENT_RX_ALL, '\n');
    while(true){
        sleep();
    }
    return 0;
}

2 Answers

7 years ago.

Here is some information about how you can override config settings - https://os.mbed.com/docs/v5.6/tools/configuring-tools.html

This is the lib file used by the Serial object - https://github.com/ARMmbed/mbed-os/blob/master/drivers/mbed_lib.json

Alternatively, you can call recv many times until you have received all data.