STM32的串口通信
本篇文章主要讲解一个在开发过程中经常使用到的一个外设---串口。
串口是绝大多数 MCU 中不可或缺的一个外设,同时也是我们开发中经常使用的一种调试手段,所以在STM32的学习中,串口的配置使用也是必须要掌握的。那么,对于新手来讲,串口是什么呢?串口是串行通信接口的简称,即是一种采用串行通信方式的扩展接口,那么什么又是串行通信呢??
所谓串行通信就是,在一根数据线上,数据进行一位一位的发送或接收,从而实现双向通信,它适用于远距离数据传输,但缺点是传输速度较慢。
在STM32中,我们使用的是通用同步异步收发器(USART),通信协议采用异步串行通信。什么又是异步串行通信呢?
我们可以看到它的数据帧 示意图,它每次通信只传输一字节数据,也就是8位数据,由起始位、数据位、校验位、停止位组成,数据传输方式有单工、半双工、全双工3种。
简单来讲,单工就是只有发送方向接收方传输数据的单向通信;半双工是某一时刻由发送方向接收方传输数据的双向通信的方式;全双工就是发送方与接收方可以同时发送或接收数据,从而实现双向通信。
在看实例之前我们先查看下原理图。
根据原理图可知,我们所使用的是串口1,所用到的GPIO口为 PA9和PA10,其中,PA9为发送端,PA10为 接收端,接着我们再来看下它的模式配置,根据《STM32F10xxx参考手册》,要配置为全双工模式,它的TX端为推挽复用输出,RX端为浮空输入或带上拉输入。
了解了上述要点,我们结合实例来学习它的配置流程。
① 本讲学习串口这个外设,因此要添加外设的库函数文件。打开串口源文件,来看串口的配置流程。先定义一个GPIO结构体变量,接着在定义串口的结构体变量,接下来配置时钟。注意:不要忘记使能串口的时钟。
② 在下面分别配置 TX RX端口,模式一个为复用推挽输出,一个为浮空输入。其他配置和之前一样。
③ 接着初始化串口的成员变量。首先,模式配置为既有发送又有接收模式,较验配置为无检验,下面的波特率这个参数,为了后续使用的便利性,这里不直接写死,而是传入一个形参,接着停止位为1位字长为 8位,然后为无硬件数据流控制,最后完成串口的初始化配置。
④ 打开 main.c 文件,主函数中,首先仍是调用相关外设的初始化。注意:串口初始化不要忘了传入它的波特率参数,然后在主循环中,先定义了一个变量,接着是用户灯的一个闪烁,然后是等待我们输入一字节数据,接收成功后,它会将这个数据返回发送,我们利用一个串口助手来完成这个实验。
⑤ 编译下载之前,检查下载器中的串口与实验板的接线图。
⑥ 确认正确接线后,我们编译工程并将代码下载到实验板中。接着打开串口助手,检查是否识别到当前的端口号,正确选择后再检查串口的配置。所有都正确配置后,打开串口,在发送区发送一个字符,这时可以观察到接收区收到了它发送的字符,同时用户灯也会闪烁一次,这样就说明我们的串口通信是成功的。
视频资料
通信协议 - UART串口协议
http://www.makeru.com.cn/live/3576_1437.html?s=45051
stm32之SPI通信
http://www.makeru.com.cn/live/3523_1795.html?s=45051
SPI通信协议驱动norFlash
http://www.makeru.com.cn/live/4034_2151.html?s=45051
(DMA专题讲解)
http://www.makeru.com.cn/live/1392_1048.html?s=45051
系统移植(告别裸奔)
http://www.makeru.com.cn/live/1392_450.html?s=45051
资料下载学习交流群:830802928
STM32的串口通信的更多相关文章
- (三)stm32之串口通信DMA传输完成中断
一.DMA功能简介 首先唠叨一下DMA的基本概念,DMA的出现大大减轻了CPU的工作量.在硬件系统中,主要由CPU(内核).外设.内存(SRAM).总线等结构组成,数据经常要在内存和外设之间,外设和外 ...
- STM32之串口通信
一.RS232通信协议 1.概念 个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口. 2.电气特性 逻 ...
- STM32 在串口通信时运用MODBUS协议
最近一个项目用到了MODBUS协议,就学习了一下,这里做一下记录以免后续忘记. 要用到MODBUS肯定要先知道是MOBUS协议,这里呢我们就又要先理解协议的含义了. 所谓的协议是什么?就是互相之间的约 ...
- STM32学习笔记:【004】USART串口通信
版本:STM32F429 Hal库v1.10 串口通信能够实现两块电路之间不同的通信,在开发中作为打印调试也是一门利器(printf重定向). 补充一点小知识: 1. weak修饰符修饰的函数,说明这 ...
- Stm32串口通信(USART)
Stm32串口通信(UART) 串口通信的分类 串口通信三种传递方式 串口通信的通信方式 串行通信的方式: 异步通信:它用一个起始位表示字符的开始,用停止位表示字符的结束.其每帧的格式如下: 在一帧格 ...
- STM32 串口通信使用奇偶校验
STM32串口通信如果使用奇偶校验,需要设置数据位长度为9bit USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USAR ...
- stm32串口通信实验,一点笔记
第一次深入学习stm32,花了好长时间才看懂代码(主要是C语言学习不够深入),又花了段时间自己敲了一遍,然后比对教程,了解了利用中断来串口通信的设置方法. 板子是探索版f407,本实验工程把正点原子库 ...
- STM32串口通信UART使用
STM32串口通信UART使用 uart使用的过程为: 1. 使能GPIO口和UART对应的总线时钟 2. 配置GPIO口的输出模式 3. 配置uart口相关的基本信息 4. 使能uart口的相关的中 ...
- 嵌入式02 STM32 实验07 串口通信
STM32串口通信(F1系列包含3个USART和2个UART) 一.单片机与PC机串行通信研究目的和意义: 单片机自诞生以来以其性能稳定,价格低廉.功能强大.在智能仪器.工业装备以及日用电子消费产品中 ...
随机推荐
- Linux下运行bash脚本显示“: /usr/bin/env: "bash\r": 没有那个文件或目录
用 ./ 运行bash脚本文件出现 报错信息 /usr/bin/env: "bash\r": 没有那个文件或目录 错误原因:这主要是因为bash后面多了\r这个字符的原因.在lin ...
- deecms栏目页调用自定义字段方法
{dede:arclist addfields='suoxu_jifen,shichang_jiage' typeid='13' row='15' channelid='3'} <li>& ...
- Java基础系列(20)- while循环
循环结构 while循环 do-循环 for循环 在java5中引入了一种主要用于数组的增强型for循环 while循环 while是最基本的循环,它的结构为 while(布尔表达式){ //循环内容 ...
- typora+picgo+gitee 图片无法加载问题
typora+picgo+gitee 图片无法加载问题 待解决
- django 使用装饰器验证用户登陆
使用装饰器验证用户登陆,需要使用@method_decorator 首先需引用,method_decorator,并定义一个闭包 from django.utils.decorators import ...
- P3309-[SDOI2014]向量集【线段树,凸壳】
正题 题目链接:https://www.luogu.com.cn/problem/P3309 题目大意 \(n\)个操作 在序列末尾加入一个向量\((x,y)\) 询问加入的第\(l\sim r\)个 ...
- Windows 10、Windows Server 定时任务(定时关机)
前言 在测试过程中,有些测试机每天都需要关机,一台台很麻烦,于是想起了Windows的任务计划程序,想着试一试,就将具体过程记录一下. 过程 Windows 搜索任务计划程序 创建任务(不要选错了) ...
- IP多播与NAT地址转化
IP多播 与单播相比,在一对多的通信中,多播可以大大减少网络资源.在互联网上进行多播就叫做IP多播,IP多播所传送的分组需要使用IP多播地址. 如果某台主机想要收到某个特定的多播分组,那么怎样才能是这 ...
- springcloud组件之注册中心eureka学习
eureka的高可用 微服务架构中最核心的部分是服务治理,服务治理最基础的组件是注册中心.随着微服务架构的发展,出现了很多微服务架构的解决方案,其中包括我们熟知的Dubbo和Spring Cloud. ...
- 由于坏块导致DG的mrp0进程中断
由于坏块导致DG的mrp0进程中断1.Environment11.2.0.4 ADG 2.SymptomsDG的mrp0进程中断,重启后,还是卡住.查看alert,在1.47存在报错,进一步查看trc ...