本帖最后由 地瓜patch 于 2025-5-30 21:52 编辑
在 STM32CubeIDE 上使用 stm32f407。在我的代码中,想用printf打印数据 #include <stdio.h>int fputc(int ch, FILE *f)
{
HAL_UART_Transmit ( & huart3 , (uint8_t *)&ch , 1 , 0xFFFF ) ;
return ch ;
}为了验证 UART 有效 - 用 2 种方法打印 Hello World。如下: StringOut ( "Hello World with StringOut\n\r" ) ;
printf ( "Hello World with printf" ) ;运行代码时,只会打印“Hello World with StringOut”。printf 函数未打印。没找到哪里的问题 以下完整的代码: #include "main.h"
#include <stdio.h>
#define PUTCHAR_PROTOTYPE
i[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)]nt fputc(int ch, FILE *f)
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)]void StringOut ( char * s )
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)]{
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)]HAL_UART_Transmit ( & huart3 , ( void * ) s , strlen ( s ) , 1000 ) ;
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)]}
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)]int main(void)
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)]{
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)] HAL_Init();
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)] SystemClock_Config();
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)] MX_USART3_UART_Init();
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)] while (1)
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)] {
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)] StringOut ( "Hello World with StringOut\n\r" ) ; // Prints successfully
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)] printf ( "Hello World with printf" ) ; [color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)]// Nothing happens. The code just proceeds ahead.
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)] }
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)]}
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)]PUTCHAR_PROTOTYPE
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)]{
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)] HAL_UART_Transmit ( & huart3 , (uint8_t *)&ch , 1 , 0xFFFF ) ;
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)] return ch ;
[color=var(--darkreader-text-444444, #a19c95)][backcolor=var(--darkreader-background-ffffff, #141617)]}
|