stm32串口

本文详细介绍了STM32F10x系列中串口通信的基础知识,包括RS232电平特性、USART/UART数据格式、波特率计算,以及如何使用HAL库进行外设初始化和中断回调。重点讲解了HAL库中的UART初始化函数和中断处理函数。
摘要由CSDN通过智能技术生成

什么是串口

串口通信接口:指按位发送和接收的接口。如:RS232/RS485等
异步串行全双工通信

区分RS232电平

关于STM32F10x管脚的特质
STM32F10xx的所有标准输入管脚都是CMOS的,但与TTL兼容。
STM32F10xx的所有5V容忍输入管脚都是TTL的,但与CMOS兼容。

在输出模式下,在供电电压为2.7V~3.6V范围内,所有STM32F10xx的输出管脚都是与TTL兼容。
//目前来看 后两者不用分太清楚
在这里插入图片描述

RS232电平通信 与USB口与主控通信协议

在这里插入图片描述
在这里插入图片描述

数据格式

必须有1位起始位,8位数据位,停止位(电平可以保持1,2或1.5单位时间长度)
在这里插入图片描述

USART/UART

都可以在与外部进行全双工异步通信
在这里插入图片描述

串口数据接收和发送过程

注意F1、F4系列最后都是要通过DR寄存器读或写 不能直接操作RDR、TDR寄存器,而F7/H7可直接操作
在这里插入图片描述

波特率的计算

在这里插入图片描述
比特率是每秒传输的二进制位数
波特率是每秒传送的码元数
【如果在数字传输过程中,用0V表示数字0,5V表示数字1,那么每个码元有两种状态0和1. 每个码元代表一个二进制数字。此时的每秒码元数和每秒二进制代码数是一样的,这叫两相调制,波特率等于比特率。】
【如果在数字传输过程中,0V、2V、4V和6V分别表示00、01、10和11,那么每个码元有四种状态00、01、10和11. 每个码元代表两个二进制数字。此时的每秒码元数是每秒二进制代码数是一半的,这叫四相调制,波特率等于比特率一半。】
【引用】
原文链接:https://blog.csdn.net/aaaaaa_xiao/article/details/106367443
在这里插入图片描述
如果是hal库 公式里面已经封装好了 只需要将所需要的波特率写入就行

HAL库外设初始化MSP回调机制

何为复用?
1、通用:IO端口的输入或输出是由GPIO外设控制,我们称之为通用
2、复用:IO端口的输入或输出是由其他非GPIO外设控制,我们称之为复用

HAL_PPP_Init(); 用户调用该函数初始化PPP外设的工作参数(会调用MSP回调函数)
**HAL_PPP_MspInit();**配置PPP外设用到的硬件 如GPIO、NVIC等;
【在HAL库中被_weak修饰】
当多个PPP外设调用MSP函数时候,通过判断外设的基地址来区分,再设置其需要的硬件。
在这里插入图片描述

HAL库中断回调机制

HAL_PPP_IRQHandler(); 用户在中断服务函数中调用HAL库共有中断函数
HAL_PPP_XXXCallback();
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

串口配置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
相关函数:
1、HAL_UART_Init
2、UART_Receive_IT
3、HAL_UART_Receive
4、 HAL_UART_Receive_IT

作者详细讲解了各个函数

接上篇作者定义的一些函数

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值