I’ve been trying to transmit and receive information through the serial port in my NUCLEO-F072RB using mbed-os 5.12 with some particular problems.
I have tested serial.getc() in my main loop and it worked fine, but now I want to use a callback whenever I get new information to avoid the blocking call and it does not seem to work. When I send something through the serial port led1 starts blinking (4 times at normal pace, then 3 fast blinks) and it appears that the code gets stuck in the callback.
My code looks like this:
#include "mbed.h"
Serial pc(PC_4, PC_5, 9600);
volatile char c = 'n';
bool charReceived;
DigitalOut led1(LED1);
void onCharReceived(){
c = pc.getc();
charReceived = true;
}
int main() {
DigitalOut led1(LED1);
pc.printf("Start \n");
pc.attach(&onCharReceived, Serial::RxIrq);
while(1){
if(charReceived == true){
led1 = true;
wait(1);
led1 = false;
pc.printf("%c \n", c);
charReceived = false;
}
}
}
Any suggestions of what I may be missing?
Thanks in advance.