这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » M451在Keil中,printf函数打印输出到哪里了?

共3条 1/1 1 跳转至

M451在Keil中,printf函数打印输出到哪里了?

工程师
2024-09-01 11:32:02     打赏

在Keil中,printf函数,打印输出到哪里了?
我的项目中没有使用UART0,而是使用了UART3




关键词: M451     printf     KEIL    

助工
2024-09-01 11:32:48     打赏
2楼

在Keil中,printf函数默认情况下是通过串口调试助手(如ST-Link Utility)输出的。具体来说,printf函数将输出数据发送到标准输出流(stdout),然后标准输出流将数据发送到UART0。

如果你的项目中没有使用UART0,而是使用了UART3,则需要进行一些配置才能使printf函数输出到UART3。

首先,你需要在Keil中配置UART3的引脚和时钟。

然后,在使用printf函数之前,你还需要重定向标准输出流(stdout)到UART3。可以使用下面的代码示例实现:

```c
#include

// 重定向标准输出流到UART3
int fputc(int ch, FILE *f) {
    // 发送字符到UART3
    // TODO: 实现将字符发送到UART3的代码
    return ch;
}

int main(void) {
    // TODO: 初始化UART3

    // 使用printf函数输出到UART3
    printf("Hello, world!n");

    while (1) {
        // TODO: 其他代码
    }
}
```

在上面的代码中,我们定义了一个名为fputc的函数,它被称为重定向函数。当printf函数调用fputc函数来发送字符时,你需要在fputc函数中实现将字符发送到UART3的代码。

需要注意的是,在Keil中,默认情况下printf函数是不会输出到调试助手中的。你需要在Keil的设置中将“Use MicroLib”选项设置为“Use MicroLIB”。这将允许printf函数使用标准输出流。

其实换句话讲,如果是在DEBUG状态,是在KEIL的调试窗口里打印的,在KEIL的下拉菜单选UART1窗口。非DEBUG状态可以从实际串口打印出去,看retarget.c这个文件定义的是哪个串口,就从哪个串口打印出去


专家
2024-09-02 09:34:37     打赏
3楼

输出到哪里,由你控制啊。printf最终会由输出转向函数控制。


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]