Caros,
como aquele post de título HAL stm32f4 estava fugindo do tópico, achei por bem continuar a discussão do demo do BRTOS para NucleoF401 nesse aqui, mais apropriado.
Pois bem, Denardin, implementei as tuas sugestões, editei o arquivo printf.c, mas em vez de usar o mesmo, criei um outro, chamado printf_brtos.c, para não dar conflito com aquele que é inserido pelo COIDE.
Descobri que na verdade o demo não estava usando aquele PUTCHAR_PROTOTYPE que estava defindo no main.c, mas sim estava usando uma função no arquivo do printf que enviava pela serial diretamente. Não sei como não deu pau, com duas tarefas enviando coisas ao mesmo tempo. Agora então o demo está legal, com o mutex só na função fputf que é chamada pelo printf e envia uma string inteira.
Também atualizei os comentários, passando para ingles.
Usei aquele driver da USART que tu mandou Denardin, se bem que só a função Init da USART e o handler de interrupção (com a mutex, semáforos e queue) é efetivamente utilizada pelo printf. Achei melhor deixar o driver inteiro, caso seja necessário ao usuário usar as funções de envio de caractere e strings diretamente (bem como poder usar outras USARTs).
Botei as declarações da mutex, semáforos e queue usados pela serial no arquivo UART.h, assim, ficou mais fácil de incluir no printf_brtos.c
Já atualizei no github.
Nesse demo não usei ponto flutuante. Mas quando der vou dar uma testada.
Saudações, bom final de final de semana!
Moreto