打印(C 语言)到 STM32CubeIDE 上的 IDE 控制台

问题描述 投票:0回答:2

我开始使用 CubeIDE 对 NUCLEO-F401RE 板进行编程(附有传感器),在我的一个项目中,我必须获取板的电压并将其打印在笔记本电脑上的某个位置(通过 USB 电缆连接到板) )。
我使用 HAL_UART_Transmit 函数来发送字符串,并在我的笔记本电脑上使用 PuTTY 来接收和打印字符串。

现在,我注意到 IDE 中集成了一个控制台,IDE 会自动打印控制信息、编译错误等,我想在这里打印电压(可能使用 printf,因为我是用 C 编程),而不是使用 PuTTY,但从我在互联网上读到的内容来看,它似乎并不那么简单(就像我使用过的许多其他 IDE 一样),例如,here

我知道这里有两台不同的计算机相互通信,因此使用 printf 进行打印并不像在同一台计算机上编写、编译和执行代码的其他情况那么容易。

我的问题是:
为什么 IDE 中没有一个“控制台选项卡”来显示板上生成的 printf 结果?如果有,如何设置?这只是项目属性中的一些设置配置还是我必须按照上面链接的讨论中所述修改低级 I/O C 功能?

谢谢你。

c printf stm32
2个回答
2
投票

创建一个新的命令 Shell 控制台。

配置新控制台,就像使用 PuTTY 一样。


0
投票

https://www.youtube.com/watch?v=WLqUImiV5Gs

这个视频可能会有所帮助,我也会为您附上代码

//Paste this code in main.c file
int _write(int file, char *ptr, int len)
{
    int DataIdx;

    for (DataIdx = 0; DataIdx < len; DataIdx++)
    {
        ITM_SendChar(*ptr++);
    }
    return len;
}```

//Paste this code in syscalls.c  

#define DEMCR           *((volatile uint32_t*) 0xE000EDFCU)

#define ITM_STIMULUS_PORT0  *((volatile uint32_t*) 0xE0000000)
#define ITM_TRACE_EN        *((volatile uint32_t*) 0xE0000E00)


void ITM_SendChar(uint8_t ch)
{
    DEMCR |=(1<<24);

    ITM_TRACE_EN |= (1<<0);

    while(!(ITM_STIMULUS_PORT0 & 1));

    
    ITM_STIMULUS_PORT0 = ch;
}```
© www.soinside.com 2019 - 2024. All rights reserved.