发新帖我要提问
12
返回列表
打印
[AT32F407]

AT32F407VG不能用printf输出

[复制链接]
楼主: tototm
手机看帖
扫描二维码
随时随地手机跟帖
21
初始化USART并重定向stdout。

使用特权

评论回复
22
louliana| | 2025-5-11 10:48 | 只看该作者
检查缓冲和编译器优化设置。              

使用特权

评论回复
23
uiint| | 2025-5-11 12:48 | 只看该作者
如果使用的是外部电源,检查电源是否稳定,电源纹波是否过大,过大的电源纹波可能会干扰串口通信,导致数据传输错误,影响printf函数的输出。

使用特权

评论回复
24
mnynt121| | 2025-5-11 17:21 | 只看该作者
若输出大量数据,可能因缓冲区满导致阻塞,可添加延时或优化发送逻辑。

使用特权

评论回复
25
jonas222| | 2025-5-13 17:05 | 只看该作者
查是否链接了正确的标准库文件。              

使用特权

评论回复
26
mollylawrence| | 2025-5-13 19:25 | 只看该作者
如果缺少这些文件,编译器将无法找到printf函数的定义,从而导致链接错误,无法正常使用printf函数。

使用特权

评论回复
27
hearstnorman323| | 2025-5-13 21:32 | 只看该作者
需要将printf的标准输出重定向到所选择的串口。

使用特权

评论回复
28
zhengshuai888| | 2025-5-14 07:47 | 只看该作者
printf的重定向接口函数写没有?

使用特权

评论回复
29
cashrwood| | 2025-5-14 22:19 | 只看该作者
首先检查串口的配置是否正确,包括硬件连接和软件初始化。

使用特权

评论回复
30
lidi911| | 2025-5-15 07:46 | 只看该作者
没有重定向putc函数把

使用特权

评论回复
31
earlmax| | 2025-5-15 10:33 | 只看该作者
如果缺少这些文件,编译器将无法找到printf函数的定义,从而导致链接错误,无法正常使用printf函数。

使用特权

评论回复
32
robertesth| | 2025-5-15 12:35 | 只看该作者
可以尝试将优化级别设置为较低的值,如 - O0 或 - O1,然后重新编译项目,看是否能够解决问题。

使用特权

评论回复
33
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的支持

使用特权

评论回复
34
pl202| | 2025-5-15 16:15 | 只看该作者
printf函数之前的代码,确保没有逻辑错误导致程序在调用printf之前就退出了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则