在STM32CUBEIDE 环境下使用printf的设置方法
使用代碼自動生產工程文件之後,需要增加重定向文件,有二個方案;
一、直接修改_write函數。
_write函數在syscalls.c中, 使用__weak定義, 所以可以直接在其他文件中定義_write函數
__attribute__((weak)) int _write(int file, char *ptr, int len)
{
int DataIdx;
for (DataIdx = 0; DataIdx < len; DataIdx++)
{
__io_putchar(*ptr++);
}
return len;
}
二、增加putchar的輸出函數, gcc使用int __io_putchar(int ch) , 由_write也能看的出來
int __io_putchar(int ch)
{
if (ch == '\n')
{
uint8_t enter = '\r';
if ((HAL_UART_Transmit(&huart1, &enter, 1, 5000)) != HAL_OK)
{
return -1;
}
}
if ((HAL_UART_Transmit(&huart1, (uint8_t *) &ch, 1, 5000)) != HAL_OK)
{
return -1;
}
return ch;
}
增加完成之後,設置工程 , 右鍵工程ico ->properitiel->c/c++ Build->settings->toolsettings->mcu settings
runtime library選擇standard c , 如下圖所示
设置完成之后,make clean , make 就能使用printf了
版权声明:本文为kyzb002原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。