打印
[STM32H7]

[STM32H745I-DISCO试用]串口打印输出

[复制链接]
382|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
[STM32H745I-DISCO试用]串口打印输出

在嵌入式项目开发中,我们首先完成的是点灯实验,LED灯按设计规则闪烁则代表了芯片正确配置了时钟,也同步验证了IDE开发环境是兼容与适配的。而在点灯实验之后,便是串口输出实验。串口输出实验旨在验证调试信息的输出功能。虽然JTAG技术要远强于串口打印,但这个从51单片机时代延续下来的调试手段凭借着成本低,易于实现,无硬件依赖等优点继续发光发热。今天,我们就来在STM32H745I-DISCO评估板上实现串口调试输出功能。

通过查询原理图,我们看到PB10与PB11两个引脚与ST Link的虚拟串口功能外设相连,再查询上述两个引脚所属Usart3外设,所以我们在STM32CubeMX中配置Usart3。这里对于串口的配置参数,我们采用默认的“115200-8-N-1”。

利用STM32CubeMX来初始化串口还是非常方便的,在main函数中,我们也仅需要再调用Hal_uart_transmit()接口函数即可。我们看看串口调试输出实现的效果,如下图所示:

我对STM32官方的hal库的设计还是有些意见的——抽象与封装的层次有些高,所以在串口驱动实现中,我更愿意采用自己的数据结构,并使用寄存器的方式来进入中断处理函数。所以,我在使用STM32CubeMX生成初始化代码时Usart外设选择了LL库模式。

在软件设计方面,uart的数据结构设计如下:

typedef struct uart_class
{
    uint8_t *rx_buf;
    uint8_t *tx_buf;
    uint16_t rx_curr;
    uint16_t tx_len;
    uint32_t flag;
}uart_class_t;

利用串口输出的功能并不难实现,在项目中,我们使用串口输出仍然再封装一层调试日志输出,对输出的内容打个tag与date,并支持格式化输出。我在将未来的日子再开帖子详细说明日志输出的实现与应用效果。




使用特权

评论回复
沙发
yangjiaxu| | 2025-4-9 14:48 | 只看该作者
还得是cubemx啊,这软件搞ST的高端芯片真的是如虎添翼啊

使用特权

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

本版积分规则

认证:嵌入式技术专家
简介:热爱开源,乐于分享。在嵌入式技术领域里面,主攻通讯协议,Modbus,TCP/IP以及虚拟化和RTOS

25

主题

534

帖子

3

粉丝