STM32学习之串口调试

目录

一、UART和USART

1、UART

2、USART

3、比较

二、printf函数实现

三、串口调试

1、配置

2、代码 

 3、调试

4、浮点数输出


一、UART和USART

1、UART

工作方式

        UART是一种通用的串行通信协议,采用异步通信方式,即不需要时钟信号来同步数据传输。它使用起始位、数据位、校验位和停止位来组织和解析数据。

数据传输

        在UART通信中,数据位是指每个数据字节中实际传输的位数。通常,UART支持7位或8位数据位的传输。起始位用于指示数据传输的开始,而停止位则指示数据传输的结束。校验位可以用于检测传输过程中的错误。

2、USART

工作方式

        USART是一种通用的串行通信协议,它结合了UART和同步通信的功能。与UART不同,USART可以通过外部时钟信号进行同步通信,也可以使用内部时钟进行异步通信

数据传输

        USART支持多种传输模式,包括异步、同步、全双工和半双工模式。它可以发送和接收数据,并且可以实现更高的通信速率和更可靠的数据传输。

3、比较

        UART 在简单性和成本方面有一些优势,适用于一些基本的串行通信需求;而 USART 则在通信速率、数据传输可靠性和通信模式等方面具有更多的功能和灵活性,适用于更复杂和要求更高的串行通信应用。

二、printf函数实现

        在 STM32 微控制器中使用 printf 函数通常需要结合串口通信模块(如 USART 或 UART)来实现。

        为了让 printf 函数将数据输出到串口通信模块,需要重定向 printf 函数。比如GNUC编译器,就要将 printf 函数重定向,通常使用__io_putchar(int ch)函数来实现这一功能,这个函数会被 printf 自动调用来输出数据。

        重定向之后,还需要链接相应的库函数来实现底层的串口输出。这通常是通过 STM32 提供的库(比如 STM32Cube HAL 库)来完成的,其中包含了底层的串口驱动函数。这些函数负责将数据发送到正确的串口,并且处理发送过程中可能的错误或者中断。

三、串口调试

1、配置

2、代码 

 3、调试

         烧录过程在前面文章整理过,这里我就省略了。需要该串口工具的同学可以私聊我。

4、浮点数输出

         当我想要输出浮点数时,编译器会报错,这是为什么呢?由于单片机的硬件资源限制(内存太小),所以STM32单片机里C语言标准库的printf()函数并不支持浮点数的输出。但是我们的代码可能需要用到浮点数,那如何解决呢?请看下图:

         添加-u_printf_float,重新烧录并调试。

 

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力学代码的小信

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值