Loading...
 
Skip to main content

System Workbench for STM32


printf through uart

France

The three setvbuf calls you mention are meant to set all standard streams as unbuffered; however:

  1. the setvbuf call on stdin is really useless, as stdin is a readonly stream.
  2. the default setup for stderr is already unbuffered, so this call is usualy also useless
  3. so only the stdout call will change anything, as, by default, stdout is line buffered
    • by default printf only send characters on the serial line when it reach an end-of-line character ("\n")
    • including "setvbuf(stdout, NULL, _IONBF, 0);" in your init routine will effectively get characters out as soon as possible

Bernard