Loading...
 
Skip to main content

System Workbench for STM32


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 */

  1. 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 */
...