基于Hal库stm32串口配置printf函数

devtools/2024/12/24 7:12:20/

使用示例

/*初始化USART 配置模式为 115200 8-N-1,中断接收*/
DEBUG_USART_Config();
printf("欢迎使用野火 电机开发板 步进电机 速度闭环控制 位置式PID例程\r\n");
printf("按下按键1增加目标值、按键2减少目标值\r\n");	
printf("其他操作请使用PID调试助手\r\n");	  /* 初始化时间戳 */

这样即可以打印到串口助手上。

基础原理

USART(Universal Synchronous/Asynchronous Receiver/Transmitter)是STM32微控制器内部集成的一个硬件外设,用于串行数据通信。它能够根据数据寄存器中的一个字节数据自动生成数据帧时序,并通过TX引脚发送出去,同时也可以自动接收RX引脚的数据帧时序,将其拼接成一个字节数据并存放在数据寄存器中。

波特率生成器

  • 功能:USART内置波特率发生器,最高支持4.5 Mbps的速率。
  • 工作原理:波特率发生器通过对输入时钟频率进行分频来生成所需的波特率时钟。例如,如果APB2总线提供72 MHz的频率,波特率发生器将对其进行分频,生成所需的波特率时钟。在这个时钟下进行数据的收发,即为指定的通信波特率。

配置选项

  • 数据位长度:可配置为8位或9位数据长度。
  • 停止位长度:可选0.5、1、1.5或2个停止位。
  • 校验位:可选无校验、奇校验或偶校验。
  • 模式支持:
  • 同步模式:用于需要时钟信号的通信。
  • 硬件流控制:用于避免数据丢失的问题。
  • DMA(直接存储器访问):用于大量数据传输,减轻CPU负担。
  • 智能卡模式:支持智能卡通信。
  • IrDA(红外数据协会):用于红外通信。
  • LIN(局域网络接口):用于汽车通信网络。

硬件流控制

问题:当A设备通过TX向B设备的RX发送数据,如果A发送太快,B处理不过来,就可能导致数据丢失。

  • 解决方案:硬件流控制在硬件电路上多出一根线,用于反馈B设备的准备状态。
  • 当B设备没有准备好接受数据时,发送高电平信号。
  • 当B设备准备好接受数据时,发送低电平信号。
  • A设备根据B设备的反馈信号决定是否发送数据。
  • 作用:避免数据丢失的问题,确保数据传输的可靠性。
  • 使用:STM32支持硬件流控制,但一般情况下不常用。

DMA支持

  • 功能:USART支持DMA(直接存储器访问)用于数据传输。
  • 优势:在进行大量数据收发时,DMA可以直接将数据从存储器传输到USART外设或从USART外设传输到存储器,减轻了CPU的负担,提高了数据传输效率。

STM32F103C8T6的USART资源

  • USART1:连接在APB2总线上。
  • USART2、USART3:连接在APB1总线上。

串口初始化

  • 开启时钟:首先,打开USART和GPIO所需的时钟。
  • GPIO初始化:将TX引脚配置为复用输出,将RX引脚配置为输入。
  • 配置USART:使用一个结构体配置所有参数。
  • 启用USART:
  •         如果只需要发送功能,直接启用USART。
  •         如果需要接收功能,还需配置中断。在启用USART之前,添加ITConfig和NVIC的相关代码。

问题引入?

1、这两个函数的功能和区别?//HAL_UART_Receive_IT(&UartHandle,UART_RxBuffer,20); /*使能串口接收断 */ __HAL_UART_ENABLE_IT(&UartHandle,UART_IT_RXNE);</


http://www.ppmy.cn/devtools/144926.html

相关文章

Slate文档编辑器-TS类型扩展与节点类型检查

Slate文档编辑器-TS类型扩展与节点类型检查 在之前我们基于slate实现的文档编辑器探讨了WrapNode数据结构与操作变换&#xff0c;主要是对于嵌套类型的数据结构类型需要关注的Normalize与Transformers&#xff0c;那么接下来我们更专注于文档编辑器的数据结构设计&#xff0c;…

Echarts连接数据库,实时绘制图表详解

文章目录 Echarts连接数据库&#xff0c;实时绘制图表详解一、引言二、步骤一&#xff1a;环境准备与数据库连接1、环境搭建2、数据库连接 三、步骤二&#xff1a;数据获取与处理1、查询数据库2、数据处理 四、步骤三&#xff1a;ECharts图表配置与渲染1、配置ECharts选项2、动…

ssr实现方案

目录 序言 一、流程 二、前端要做的事情 三、节点介绍 四、总结 序言 本文不是详细的实现过程&#xff0c;是让你最快最直接的理解ssr的真正实现方法&#xff0c;有前端经验的同学&#xff0c;能够很好的理解过程&#xff0c;细节根据具体项目实现 一、前端要做的事情 1.…

[Effective C++]条款38-39 复合和private继承

本文初发于 “天目中云的小站”&#xff0c;同步转载于此。 条款38 : 通过复合塑膜出has-a或"is-implemented-in-terms-of" 在条款32中我们认识了public继承意味着is-a, 本条款将会认识两个新的关系, 均可通过"复合"这一操作实现出来. 复合 所谓复合, 就是…

漏洞检测工具:允许TRACE方法漏洞

允许TRACE方法漏洞 漏洞定义 TRACE方法是HTTP协议中定义的一种调试方法&#xff0c;主要用于测试或诊断Web服务器连接。Web服务器在配置时未正确禁用HTTP TRACE方法&#xff0c;从而允许客户端向服务器发送TRACE请求&#xff0c;并导致服务器返回可能包含敏感信息的响应。 漏…

无人零售及开源 AI 智能名片 S2B2C 商城小程序的深度剖析

摘要&#xff1a;本文聚焦无人零售这一新兴零售模式及其发展浪潮中崛起的开源 AI 智能名片 S2B2C 商城小程序。深入阐述无人零售的发展态势&#xff0c;细致剖析其驱动因素、现存问题&#xff0c;全面详细介绍小程序的功能特性、应用优势以及对无人零售的潜在价值&#xff0c;旨…

基于Java Web的“使用Ajax实现无刷新实时显示公告信息”实验

1.实验目的 学习和掌握jQuery获取网页元素对象的格式。使用JDBC进行数据库的连接以及使用Statement对象执行SQL查询语句。掌握使用Properties类加载Properties文件中参数的方式。使用<jsp:UseBean>标签创建对象。使用$.get方法向服务器发送请求以及获取服务器中的数据。…

Wux weapp 组件库的 bug—— wux-picker选择器组件无法正确初始化到选定的value

options的value为Number&#xff0c;组件无法正常使用 解决方案&#xff0c;修改picker-view/utils.js中的getIndexFromValue函数&#xff0c;如下&#xff1a; export function getIndexFromValue(value, col [], fieldNames DEFAULT_FIELD_NAMES) {//return getRealIndex(…