STM32F767ZI nucleo board printf to console
_read() and _write() in autogenerated syscalls.c is are weak functions.
Virtually any possible own implementation will do the thing. E.g. https://electronics.stackexchange.com/questions/206113/how-do-i-use-the-printf-function-on-stm32
BTW, the file syscalls.c mostly contains “always failing” mock syscall implementations and may be safely deleted: anyway, you will need to implement own working variant of every one used )
printf() uses _write(), no more.
parts of vanilla “blinky” example modified to printf() blinks:
main.c
...
/* Private includes ----------------------*/
/* USER CODE BEGIN Includes */
- include ‹stdio.h›
/* USER CODE END Includes */
...
...
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
HAL_Delay(500);
printf(“Hello, world!\r\n”);
}
/* USER CODE END 3 */
...
...
/* USER CODE BEGIN 4 */
int _write(int file, char *ptr, int len)
{
if (len > 0)
HAL_UART_Transmit(&huart2, (uint8_t*)ptr, len, len/10+5); // because baudrate is 115200
return len;
}
/* USER CODE END 4 */
...