
串口UART,作为基础的一种通信协议应该是我们接触的最早的通信协议,有许多芯片和模块可以利用串口来进行通信。 本期我们介绍如何使用CubeMX实现STM32的串口通信以及对printf等函数的重定向。 ![]() ![]() 首先打开CubeMX,配置时钟树和时钟源。 ![]() 接着配置我们的串口,设置相对应的波特率。 ![]() 打开串口的中断。 然后创建工程。 ![]() 在魔术棒中勾选Use MicroLIB
在全局定义一个缓存用以存储中断接收到的数据。
初始化的时候需要启动串口中断。
接着编写串口的中断回调函数,我们将接收到的数据发送回PC机。 ![]() 可以看到,我们发送的数据被原原本本的发送回来了。 串口的重定向 重定向在计算机科学中是一个常见概念,特别是在操作系统和编程语言中。在C语言中,标准输入输出库(stdio.h)提供了标准的输入输出流,如 stdin, stdout, 和 stderr。这些流默认连接到键盘和显示屏(或者命令行控制台),但是C语言也提供了机制来重定向这些流到其他的输入输出源,比如文件、管道或者其他设备。 串口的重定向可以非常方便的让我们解决发送的格式问题,可以看到,其实使用HAL_UART_Transmit发送文本是比较麻烦的,C语言的标准库中有printf函数可以方便的让我们实现指定格式的发送,那么如何将printf函数和串口结合到一起呢?
我们首先需要导入C语言标准输入输出库,这样子我们就可以使用printf函数了。 通过重写 fputc 函数,可以控制 printf 函数的输出,因为 printf 最终会调用 fputc 来逐个字符地写入输出。通过将这些字符发送到串口,实现了将标准输出重定向到串口的目的。
![]() 正弦波
![]() 正弦波相加
![]() 正弦波相乘
![]() 转载自: 电路小白 如有侵权请联系删除 |
【STM32C0测评】Nucleo-C092开发板驱动DS1302实验
【ST云实验室先锋计划】兔哥的IO-LINK 云上体验
拷打cubemx【003】——找不到的芯片包
【STM32U3评测】实现双通道串口通信系统
新版STM32Cube for Visual Studio Code开发体验
【STM32N6570-DK评测】3.CubeMX关于DCMIPP和CSI的BUG整理及摄像头使用
经验分享常被误解的开、关总中断
【STM32C0测评】Nucleo-C092开发板功耗测试
【STM32C0测评】Nucleo-C092开发板IIC通信测试(硬件IIC)
【STM32C0测评】Nucleo-C092开发板IIC通信测试(软件IIC)