I'm trying to setup logging with printf() over UART and I got totaly blocked by following realy strange situation.
Let's have following very simple log_test.c:
#include "boards.h"
#include "nrf_delay.h"
#include "app_uart.h"
#include "app_error.h"
int _write(int file, const char * p_char, int len) {
int i;
for (i = 0; i < len; i++) app_uart_put(*p_char++);
return len;
}
static void uart_error_handle(app_uart_evt_t * p_event) { /* nothing here */ }
int main(void) {
ret_code_t err_code;
const app_uart_comm_params_t comm_params = {
RX_PIN_NUMBER,
TX_PIN_NUMBER,
0,
0,
APP_UART_FLOW_CONTROL_DISABLED,
false,
UART_BAUDRATE_BAUDRATE_Baud9600
};
APP_UART_FIFO_INIT(&comm_params, 1024, 1024, uart_error_handle, APP_IRQ_PRIORITY_MID, err_code);
UNUSED_VARIABLE(err_code);
printf("\r\nHello");
while (true) {
nrf_delay_ms(1000);
printf(".");
}
}
Then I have a putty configured as a hyper terminal and can watch the COM port traffic...
When I compile and run this log_test.c, I can see that ONLY THE CONTROL CHARACTERS \r and \n are sent over UART. I can't see the "Hello" string and the dots "." in the while loop.
BUT when I comment out this line:
// nrf_delay_ms(1000);
I start to see all printf() logs: the control characters, the "Hello" and the dots ".".

Any idea what is going wrong?
