STM32 Cube IDE 下实现串口 printf

首先用 NUCLEO-F103RB 开发板建立一个工程。

NUCLEO 板上的 ST-LINK 自带虚拟串口,并且连接到了板上的 STM32F103 的 USART2,所以不需要做任何修改,可以直接生成工程。

接下来打开 main.c,做一下修改:

  1.  包含头文件 #include <stdio.h>
  2.  添加函数
    int __io_putchar(int ch){
    uint8_t c=ch;
    HAL_UART_Transmit(&huart2, &c, 1, 100);
    return ch;
    }
  3.  在 main 中调用 printf(“abc”) 。
  4.  打开一个串口调试工具,编译运行刚才的程序。

怎么没有输出???

Google、Baidu 一番…… 先上结论,有两种解法:

  1.  在 printf 后面再加上一句 fflush(stdout)
  2.  简单的在每句 printf 里都加上 \n

显然第二种更方便一些,再来看下结果

终于显示出来了,真是曲折。下面再来试下打印一个变量的:printf(“a=%d”,100)

看起来还不错,再复杂点:printf(“a=%08d,b=%f”,100,99.9)

整数看起来没问题,不过浮点数就没有打出来了……

其实仔细看下,虽然之前编译是没有任何错误或是警告,不过 IDE 已经给出了提示

Float formatting support,这个需要单独在 link 参数里加上

最后的效果:

现在基本是完美了 ^o^

STM32CubeIDE是一款集成开发环境(IDE),用于开发STM32系列微控制器应用程序。它提供了许多工具和资源,帮助开发人员快速、高效地开发STM32应用程序。 在STM32CubeIDE中,串口通讯是一个非常常见的应用。STM32微控制器通常具有多个串口,可以用于与其他设备进行通信,例如传感器、显示屏、WiFi模块等。以下是在STM32CubeIDE实现串口通讯的步骤: 1. 配置串口引脚 在STM32CubeIDE中,可以使用CubeMX插件来配置STM32微控制器的引脚。在CubeMX中,选择相应的微控制器型号,然后选择“Pinout”选项卡。在这里,可以选择要用作串口引脚的GPIO引脚。 2. 配置串口外设 在CubeMX中,选择“Configuration”选项卡,然后选择“USART”外设。在这里,可以配置串口的波特率、数据位、停止位和校验位等参数。 3. 生成代码 在CubeMX中完成串口配置后,可以单击“Generate Code”按钮生成相应的代码。这将生成一个包含初始化串口的代码的C文件。 4. 编写串口通讯代码 在生成的代码中,可以使用HAL库函数来编写串口通讯代码。HAL库提供了许多函数,可以发送和接收数据,以及处理串口中断等。 5. 测试代码 在编写完串口通讯代码后,可以将代码下载到STM32微控制器中,然后使用串口调试工具进行测试。串口调试工具可以显示发送和接收的数据,并且可以检查数据是否正确。 总之,在STM32CubeIDE实现串口通讯需要进行引脚配置、外设配置、代码编写和测试。通过使用HAL库函数,可以轻松地实现串口通讯,并与其他设备进行通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值