利用串口中断方式实现完成STM32的USART串口通讯程序

一、USART、串口通信与中断方式简介

USART简介

通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART(Universal Asynchronous Receiver and Transmitter),它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输
出,我们平时用的串口通信基本都是 UART。

说明:
任何USART双向通信至少需要两个引脚:接收数据输入(RX)和发送数据输出(TX)。
RX:接收数据串行输入。通过过采样技术来区别数据和噪音,从而恢复数据。
TX:发送数据串行输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活且不发送数据时,TX引脚处于高电平。在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。
SCLK:发送器时钟输出。此引脚输出用于同步传输的时钟, (在Start位和Stop位上没有时钟脉冲,软件可选地,可以在最后一个数据位送出一个时钟脉冲)。数据可以在RX上同步被接收。这可以用来控制带有移位寄存器的外部设备(例如LCD驱动器)。时钟相位和极性都是软件可编程的。在智能卡模式里,CK可以为智能卡提供时钟。

在IrDA模式里需要下列引脚:
IrDA_RDI: IrDA模式下的数据输入。
IrDA_TDO: IrDA模式下的数据输出。

在硬件流控模式里需要下列引脚:
nCTS: 清除发送,若是高电平,在当前数据传输结束时阻断下一次的数据发送。
nRTS: 发送请求,若是低电平,表明USART准备好接收数据

STM32F103VET6 系统控制器有三个 USART 和两个 UART,UART(通用异步收发器)只是异步传输功能,所以没有 SCLK、nCTS 和 nRTS 功能引脚。

串口通信简介

串行通讯是指设备之间通过少量数据信号线,地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。

分类:
单工:数据传输只支持数据在一个方向上传输。
半双工:允许数据在两个方向上传输。但同一时刻只允许数据在一个方向上传输,它实际上是一种能够切换方向的单工通信,不需要独立的接收端和发送端,两者可以合并使用一个端口。
全双工:允许数据同时在两个方向上传输。因此全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端。

中断方式简介

中断方式指的是一方通过申请中断的方式与另一方进行数据传输,收发双方可以并行工作。
中断全过程可以分为中断发生、中断处理、中断返回。中断发生指的是当CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理;中断处理指的是CPU暂停当前的工作,转去处理事件B;终端返回指的是当CPU将事件B处理完毕后,再回到事件A中被暂停的地方继续处理事件A。
中断执行过程示意图
中断优先级:处理器根据不同中断的重要程序设置不同的优先等级。不同优先级中断的处理原则是:高级中断可以打断低级中断;低级中不能打断高级中断,整个优先级可以整理为如下示意图:
在这里插入图片描述

二、实验内容与实验过程

1、实验内容

学习 stm32 串口中断,采用串口中断方式重做汇编输出 hello windows!要求:
1)设置波特率为115200,1 位停止位,无校验位。
2)STM32 系统给上位机( win10 )连续发送“hello windows!”。win10 采用“串口助手”工具接收。

2、实验过程

2.1 代码准备

在编写这个代码时我们需要先准备一个工程模板,可以去这里的链接自取:https://pan.baidu.com/s/14oklbRIN8pNxNiGjx6crgw 提取码:luha。根据指南者配套开发的程序再修改得来,此外我们还需要准备一些烧录软件、串口调试助手和STM32核心板。

2.2 代码修改

编写代码时,需要对这些代码进行修改,其余的都是库文件:
在这里插入图片描述
GPIO 和 USART 宏定义:

/*串口1-USART1 */
#define  DEBUG_USARTx                   USART1  //定义串口一
#define  DEBUG_USART_CLK                RCC_APB2Periph_USART1
#define  DEBUG_USART_APBxClkCmd         RCC_APB2PeriphClockCmd
#define  DEBUG_USART_BAUDRATE           115200  //设置波特率为 115200

/*USART GPIO 引脚宏定义*/
  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值