pl202 发表于 2025-5-6 21:38

初始化USART并重定向stdout。

louliana 发表于 2025-5-11 10:48

检查缓冲和编译器优化设置。            

uiint 发表于 2025-5-11 12:48

如果使用的是外部电源,检查电源是否稳定,电源纹波是否过大,过大的电源纹波可能会干扰串口通信,导致数据传输错误,影响printf函数的输出。

mnynt121 发表于 2025-5-11 17:21

若输出大量数据,可能因缓冲区满导致阻塞,可添加延时或优化发送逻辑。

jonas222 发表于 2025-5-13 17:05

查是否链接了正确的标准库文件。            

mollylawrence 发表于 2025-5-13 19:25

如果缺少这些文件,编译器将无法找到printf函数的定义,从而导致链接错误,无法正常使用printf函数。

hearstnorman323 发表于 2025-5-13 21:32

需要将printf的标准输出重定向到所选择的串口。

zhengshuai888 发表于 2025-5-14 07:47

printf的重定向接口函数写没有?

cashrwood 发表于 2025-5-14 22:19

首先检查串口的配置是否正确,包括硬件连接和软件初始化。

lidi911 发表于 2025-5-15 07:46

没有重定向putc函数把

earlmax 发表于 2025-5-15 10:33

如果缺少这些文件,编译器将无法找到printf函数的定义,从而导致链接错误,无法正常使用printf函数。

robertesth 发表于 2025-5-15 12:35

可以尝试将优化级别设置为较低的值,如 - O0 或 - O1,然后重新编译项目,看是否能够解决问题。

loutin 发表于 2025-5-15 14:27

#include "at32f4xx_hal.h"

UART_HandleTypeDef huart1;

// 重定向fputc以支持printf
int fputc(int ch, FILE *f)
{
    HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF); // 发送字符到串口
    return ch;
}

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);

int main(void)
{
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_USART1_UART_Init();

    printf("Hello, AT32F407VG!\n");

    while (1)
    {
      // 主循环
    }
}

void MX_USART1_UART_Init(void)
{
    huart1.Instance = USART1;
    huart1.Init.BaudRate = 115200;
    huart1.Init.WordLength = UART_WORDLENGTH_8B;
    huart1.Init.StopBits = UART_STOPBITS_1;
    huart1.Init.Parity = UART_PARITY_NONE;
    huart1.Init.Mode = UART_MODE_TX_RX;
    huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
    huart1.Init.OverSampling = UART_OVERSAMPLING_16;
    if (HAL_UART_Init(&huart1) != HAL_OK)
    {
      Error_Handler(__FILE__, __LINE__);
    }
}没有禁用对printf的支持

pl202 发表于 2025-5-15 16:15

printf函数之前的代码,确保没有逻辑错误导致程序在调用printf之前就退出了。

WhisperingTrees 发表于 2025-7-15 11:58

muyichuan2012 发表于 2025-4-7 09:48
请勿重复发帖。我刚有测试你代码,printf函数是正常输出的。请仔细检查连线。
注意:如果你使用的AT START...

版主牛啊,太认真负责了,代码没问题的基本就是硬件问题了
页: 1 [2]
查看完整版本: AT32F407VG不能用printf输出