手把手教你单片机HAL库开发——中断,通信、串口


前言

非常感谢百问网黄老师今天的授课!
在这里推荐大家学嵌入式上百问网官网,更是有明星老师韦东山老师亲自授课。


中断

特别提示:因为在STM32MP157实验中,详细的讲述了中断,所以这里对于基本的概念就不再重述,只进行重点分析。

基本概念

通常把CPU内部产生的紧急事件,比如非法指令(除0),地址越界访问等称为异常;对于CPU外部产生的紧急事件,比如GPIO电平引脚变化,定时器溢出等称为中断。但是两者产生的效果基本一致,所以就统一称为中断。

ARM中的中断类型和种类如下
在这里插入图片描述
STM32的中断和优先级

在这里插入图片描述

使用中断来获取按键并控制LED

原理图入如下

在这里插入图片描述

CubeMX设置

在这里插入图片描述

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

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

运行结果

在这里插入图片描述

通信

串行通信/并行通信

数据按照传输方式,通信可以分为串行通信和并行通信。
串行通信:简单的说就是数据依次传输。
并行传输:就是几个数据一起传输
如下:
在这里插入图片描述由此可见,串行传输使用的通信线少,所以成本较低,并行传输使用通信线多,传输数据快。
但是随着科技的发展,并行传输因为随着数据传输速率的提升导致通信线之间的相互影响较大,所以目前串行传输的数据还比并行传输更快。

全双工/半双工/单工通信

按照数据传输方向,通信可以分为全双工、半双工、单工。相信通过下面的一幅图即可明白三者的区别

在这里插入图片描述

同步通信/异步通信

按数据同步的方式,通信可以分为同步通信和异步通信。数据双方之间传输时,需要指定保证数据传输的准确。
同步通信:就是加一个时钟信号,发送方和接收方在这个时钟节拍下传输数据,比如常见的SPI。IIC就是同步通信。
异步通信:对数据进行封装,在数据的开头加上起始信号,在数据结尾加上终止信号,双方按这个规则传输数据,比如UART,1-Wire。

因为往往通过是否有时钟线来区分二者。

通信速率

对于同步通信,通信速率由时钟信号决定,时钟信号越快,传输速度就越快。
对于异步通信,需要收发双方提前统一通信速率,这也就是我们串口调试时,波特率不对显示乱码的原因。

通常使用比特率来描述通信速率的快慢,与之容易混淆的是波特率。

  • 比特率:系统在单位时间内传输的比特位个数
  • 波特率:系统在单位时间内传输的码元个数。(码元就是承载信息量的基本单位)
    码元有N个状态时,比特率与波特率的关系式: Rb=RBxlog2N

常见通信协议

在嵌入式中,有众多的通信协议,往往从性能,成本,稳定性,易用性等角度考虑选择合适的协议。常见的协议如下:
在这里插入图片描述

串口

基础知识

说到串口,经常提到TTL、 RS232、 RS422、 RS485,简单的说,就是为了适应不同的环境条件,使用了不同的电平标准。假如微处理器和板载的蓝牙透传模块通信时,一般就使用TTL电平,引脚直接连接即可。假如微处理器在工业现场,需要连接一个几十米外的装置,则应该考虑将TTL电平转为RS232、 RS422、 RS485。
在这里插入图片描述
常见通信接口标准
在这里插入图片描述在这里插入图片描述以TTL电平的接口为例讲解串口怎么传输数据,对于RS232/RS422/RS485等接口,仅仅是把TTL电平转换为不同的电平值,或者转换为差分信号。

TTL接口的串口,硬件连接如下图:
在这里插入图片描述
信号波形如下图:
在这里插入图片描述

STM32的串口

在嵌入式中,很多MCU和外设模块都集成有UART外设。 STM32F103系列最多有3个通用同步异步收发器( Universal synchronous asynchronous receiver transmitter, USART), 2个通用异步收发器( Universal
asynchronous receiver transmitter, UART)。 USART和UART的主要区别在于, USART支持同步通信,该模式有一根时钟线提供时钟
串口在嵌入式中经常使用,一般使用UART就足够了,常见的用途如下:

  1. 作为调试口,打印程序运行的状态信息;
  2. 连接串口接口的模块(比如GPS模块),传输数据;
  3. 通过电平转换芯片变为RS232/RS485电平,连接工控设备;

STM32F103系列不同USART所支持的功能如下图
在这里插入图片描述
USART内部结构如下
在这里插入图片描述

通信、串口代码设计

原理图

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

在这里插入图片描述

CubeMX设置

在这里插入图片描述

生成代码

源码分析

在这里插入图片描述
printf函数重构

在这里插入图片描述
主函数
在这里插入图片描述

查看打印信息

在这里插入图片描述

在这里插入图片描述
完成

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jacky~~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值