单片机stm32 USART串口实际应用解析

2023-05-16

stm32作为现在嵌入式物联网单片机行业中经常要用多的技术,相信大家都有所接触,今天这篇就给大家详细的分析下有关于stm32的出口,还不是很清楚的朋友要注意看看了哦,在最后还会为大家分享有些关于stm32的视频资料便于学习参考。

什么是串口

UART : Universal Asynchronous Receiver/Transmitter 通用异步收发器

USART : Universal Synchronous Asynchronous Receiver/Transmitter

通用同步/异步收发器

一种是常用也是最简单的串行数据传输协议。数据线只需要两根就可以实现全双工。

Tx: 发送数据线

Rx: 接收数据线

A B

TX -----------> Rx

Rx <------------Tx

全双工: 两个设备可以同时发送和接收

串行数据: 发送只一根线,一次只能发送一bit. 一bit接着一bit发送和接收。

模块通信: 上位机 下位机

通信一般需要两个设备,我们把这两个设备,人为叫做上位机, 下位机。

上位机: 把处理性能强的机子,上位机。数据大部分处理都在上位机完成。

下位机: 把数据采集的终端,处理性能单一的机子,下位机。

串口只有一根发送数据线,假如 A要发送一个字符数据  10101010 给B

A -------- ---------

-------- ------- …

高电平周期是多长?即使是不发送数据Tx线上也有一个电平状态,接收方

它怎么知道你是在发送呢?..

UART数据如何传输?

UART protocol 串口协议。

串口发送和接收数据是以帧为单位. Frame

1帧(Frame)= 1 start bit(起始位) + 5-9bits数据位 + 0/1bit 校验位  + stop bits(0.5,

1,1,5,2)

起始位: 一个周期的低电平

数据位: 5-9bits数据位,具体是多少bits,需要双方协商。并且传送是先传送LSB(最低位) … MSB

校验位:

0 bit :没有校验位

1 bit :校验位. “赖子” X

D0 D1 D2 … Dn X

奇校验:要保证传输的1为奇数

D0 D1 D2 … Dn X 要保证这一串数据中1的个数为奇数

1 0 1 0 1 0 1 0 X(1)

1 0 1 0 1 0 1 1 X(0)

偶校验:要保存传输的1为偶数

停止位: 高电平

0.5 个停止位。 半个周期的高电平

1 个停止位

1.5 个停止位

2 个停止位

Baudrate(波特率): 传输速率。

决定 时间周期。

115200 bps: bits per second

物理层标准  the physical layer standards

TTL level UART : TTL电平串口

RS-232:

RS-422:

RS-485:

TTL level UART:

逻辑低电平(0) 0V

逻辑高电平(1) 5V/3.3V

RS-232: 适合较长距离传输

逻辑低电平(0) +3v~+15V

逻辑高电平(1) -3v~-15v

TTL UART RS-232 RS-422 RS-485

电平 1 3.3V/5V 1 -5V ~ -15V +/- 2v +/- 1.5v

0 0V 0 5V ~ +15V

信号 单端信号   单端信号  差分信号   差分信号

传输长度 < 2m <15m <1200m <1200m

不同标准的串口,引脚也不一样。TX/Rx是一定存在的。

TTL

RX

TX

GND

VCC

STM32F4xx 串口控制器

TX

RX

硬件流控:

RTS: Request To Send 请求发送信号

终端告诉对方可以向我传输数据啦。

CTS: Clear To Send 清除发送信号

对方告知终端,我要向你发送数据啦

RTS -------> CTS(对方)

CTS <------- RTS(对方)

标志位:

TXE: Transmit data Register Empty

发送数据寄存器为空。

不代表上一次数据已经发送完成啦,因为数据有可能还在 shifter里面

但是此时您可以向TDR写数据啦。

TC : Transmit Complete

发送完成。

发送移位寄存器中的数据已经发送到Tx引脚上面去了。

RXNE: Read Data register Not Empty

接收数据寄存器不为空。意思是你可以读数据啦。

STM32F4xx串口代码流程

(1) GPIO口配置

串口的TX/RX 引脚是由GPIO口来复用的。

a. 使能GPIO分组的时钟

RCC_AHB1PeriphClockCmd

b. 配置GPIO口的功能 GPIO_Init

c. 选择具体的复用功能

GPIO_PinAFConfig

(2) usart配置

a. 使能usart时钟

b. USART_Init

USART_Init(USART_TypeDef * USARTx, USART_InitTypeDef *

USART_InitStruct);

typedef struct

{

uint32_t USART_BaudRate; // 波特率

uint16_t USART_WordLength; //传输字长 ,如下两个任选其一:

USART_WordLength_8b

USART_WordLength_9b

在STM32中:传输字长=数据位数+检验位数

uint16_t USART_StopBits; //停止位数,如下 :

USART_StopBits_1 1bit停止位

USART_StopBits_1_5 1.5bit停止位

USART_StopBits_2 2 bits停止位

USART_StopBits_0_5 0.5bit停止位

uint16_t USART_Parity; //校验方式,如下:

USART_Parity_No 无校验

USART_Parity_Odd 奇校验

USART_Parity_Even 偶校验

uint16_t USART_Mode; //串口模式, 如下:可以组合

USART_Mode_Tx 发送模式

USART_Mode_Rx 接收模式

USART_Mode_Tx | USART_Mode_Rx 发送和接收模式

uint16_t USART_HardwareFlowControl; //硬件流控

USART_HardwareFlowControl_None 无硬件流控

USART_HardwareFlowControl_RTS RTS 请求发送。你可以接收对方的数据。

USART_HardwareFlowControl_CTS CTS 清除发送,你可以发数据给对方。

USART_HardwareFlowControl_RTS_CTS RTS_CTS 发送和接收都用流控

} USART_InitTypeDef;

(3) 中断的配置

USART_ITConfig <- 配置串品的中断

在STM32中一个USART只对应一个中断通道,但是引起串口中断的

事件有很多,比如:

TXE -> 发送寄存器为空,可以引起串口中断

TC -> 发送完成,可以引起串口中断

RXNE -> 接收寄存器不为空,可以引起串口中断

……

只不过,这些事件需要"中断控制位使能"

USART_ITConfig(USART1, USART_IT_RXNE,ENABLE);

USART_ITConfig就是用来把一个串口的XX事件,配置成是否引起串口中断的

在串口中断函数里面,就需要判断是哪个串口事件,引起了中断!!!

NVIC_Init()

(4) 使能串口

USART_Cmd

接收(中断函数)

USART1_IRQHanlder()

{

if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)

{

//有数据可读啦

data = USART_ReceiveData(USART1); //读取接收到的数据

}

//清除USART1的中断标志

USART_GetITStatus

}

USART_GetITStatus用来获取串口的xx事件标志位

发送数据

USART_SendData(USART1, 0x55);

while (USART_GetFlagStatus(USRAT1, USART_FLAG_TXE) == RESET); //等待发送结束

stm32视频学习资料

(stm32 USART串口应用)

http://www.makeru.com.cn/live/1392_1164.html?s=45051

PWM脉宽调制技术

http://www.makeru.com.cn/live/4034_2146.html?s=45051

基于STM32讲解串口操作

http://www.makeru.com.cn/live/1758_490.html?s=45051

通过Z-stack协议栈实现串口透传

http://www.makeru.com.cn/live/1758_330.html?s=45051

(stm32直流电机驱动)

http://www.makeru.com.cn/live/1392_1218.html?s=45051

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机stm32 USART串口实际应用解析 的相关文章

  • gcc之-fomit-frame-point

    Kernel里的dump stack oops打印出来的backstrace调用链表是怎样实现的呢 xff1f 大家都知道当发生函数调用的时候 xff0c 函数的参数传递 xff0c 返回值传递都要遵循一定的规则 xff0c 在ARM体系架
  • Lauterbach trace32与 jlink

    一直不太明白trace32为何这么贵 xff0c 这篇文章讲了一些 xff0c 稍微明白一点了 一个小工具背后的故事 昨天我们推送了华为任正非2012年的讲话稿 真正的出路 xff1a 重读任正非2012实验室讲话 任总是在商场上真刀真枪干
  • 嵌入式开发输出调试信息的几种方法(常规法及非常规法)!

    origin https mp weixin qq com s 7LolqWUeJ4tCENh6yVmvXw 嵌入式开发的一个特点是很多时候没有操作系统 xff0c 或者没有文件系统 xff0c 常规的打印log到文件的方法基本不适用 最常
  • 从零开始,耗时两年,19岁小伙自制一块32位Risc-V处理器,可玩「贪吃蛇」

    从零开始 xff0c 耗时两年 xff0c 19岁小伙自制一块32位Risc V处理器 xff0c 可玩 贪吃蛇 脚本之家 今天 关注 脚本之家 xff0c 与百万开发者在一起 本文经机器之心 xff08 微信公众号 xff1a almos
  • 揭秘被Arm编译器所隐藏的浮点运算~

    以下文章来源于Mculover666 xff0c 作者mculover666 引言 笔者接触嵌入式领域软件开发以来 xff0c 几乎用的都是 ARM Cortex M 内核系列的微控制器 感谢C语言编译器的存在 xff0c 让我不用接触汇编
  • main之前初始化流程

    本文分别介绍Keil调用的ARMCC以及ARM NONE EABI GCC两个编译器在main之前的操作 xff1a Keil MDK启动文件 总结一下MDK的启动流程 xff1a 1 系统初始化 xff0c 包括中断向量表的重新映射 2
  • 嵌入式单片机之STM32F103C8T6最小系统板电路设计参考

    STM32F103C8T6最小系统板电路设计 一 电源部分 设计了一个XH插座 xff0c 以便使用3 7V锂电池供电 xff0c 接入电压不允许超过6V 二 指示灯部分 电源指示灯可以通过一个短路帽控制亮灭 xff0c 以达到节电的目的
  • 国产射频前端,攀登新高峰

    2022年 xff0c 国产射频前端开启新篇章 射频前端包括功率放大器 xff08 PA xff09 滤波器 xff08 Filter xff09 开关 xff08 Switch xff09 低噪声放大器 xff08 LNA xff09 天
  • slam相关文章

    1 视觉SLAM漫谈 http www cnblogs com gaoxiang12 p 3695962 html 2 学习SLAM需要哪些预备知识 xff1f https www zhihu com question 35186064 3
  • 工业机器人主要核心

    主要核心为三部分 xff0c 控制器 xff08 就是用来控制机器人动作的那个手持设备 xff0c 可以用来编程 xff0c 一般用vxworks和linux xff0c wince来实现 xff09 伺服电机和减速器用来实现机器人的动作
  • 想搞工业机器人 这五大方面你必须了解

    origin http www robot china com news 201510 09 25754 html 1 工业机器人控制系统硬件结构 控制器是 机器人 系统的核心 xff0c 国外有关公司对我国实行严密封锁 近年来随着微电子技
  • 为什么我选择并且推崇用ROS开发机器人?

    origin http www leiphone com news 201701 zBHXGJcsRTioj4gH html 雷锋网 公众号 xff1a 雷锋网 按 xff1a 本文来自知乎 xff0c 作者贾子枫 xff0c 雷锋网已获授
  • 一飞智控CEO齐俊桐:一篇文章教你看透无人机飞控这十年

    origin http www leiphone com news 201702 YO2bskI7smE1U8TA html 无人机 又一个被国人玩坏了的单词 科幻电影里的无人机 10年前说自己是搞无人机的 xff0c 无不引来疑惑和赞叹的
  • 机器人框架

    ROS Rock Yarp Orocos
  • 列王的纷争-深度传感器已被巨头瓜分?

    origin http mt sohu com 20170325 n484729546 shtml 我们常常说苹果富可敌国 但是你这么说其实是在侮辱苹果 苹果可比美国政府有钱多了 根据最新消息 xff0c 美国政府账上的现金 xff0c 只
  • 不得不看!国内深度摄像头方案大起底

    origin http pieeco baijia baidu com article 517947 引言 xff1a 市场对深度视觉技术需求趋于井喷 xff0c 但可以提供产品和方案的公司寥寥无几 xff0c 本文分析了国内三家各具特点的
  • VR中的9轴传感器(重力加速度/陀螺仪/磁力计)

    origin http blog csdn net dabenxiong666 article details 53836503 前言 传感器的调试过程 xff0c 一般根据原厂提供demo代码 xff0c 调试数据接口 xff0c 将数据
  • STM32中AD采样的三种方法分析

    在进行STM32F中AD采样的学习中 xff0c 我们知道AD采样的方法有多种 xff0c 按照逻辑程序处理有三种方式 xff0c 一种是查询模式 xff0c 一种是中断处理模式 xff0c 一种是DMA模式 三种方法按照处理复杂方法DMA
  • 神经网络:比原来更容易学习了

    origin http geek csdn net news detail 195039 原文 xff1a NEURAL NETWORKS YOU VE GOT IT SO EASY 作者 xff1a Steven Dufresne 翻译
  • NuttX 编译系统

    origin http blog csdn net zhumaill article details 24400441 xff08 嵌入式 实时操作系统 rtos nuttx 7 1 makefile xff09 NuttX 编译系统 转载

随机推荐

  • NuttX 启动流程

    origin http blog csdn net zhumaill article details 23261543 xff08 嵌入式 实时操作系统 rtos nuttx 7 1 stm32 源代码分析 xff09 NuttX 启动流程
  • nuttx操作系统的移植以及下载

    origin http blog csdn net seawolfe article details 70244672 1 在ubuntu根目录下 xff1a root 64 ubuntu apt get update 更新包 2 root
  • 机器人峰会厂商

    origin http www chinarobtop com exhibition exhibition php 埃夫特 清能德创 芜湖瑞思 芜湖哈特 山东帅克机械 宁波慈兴轴承 A6 成都卡诺普 绿的谐波
  • 机器人公司

    1 螺趣科技 2 米兔机器人 3 360
  • 解:高性能MEMS IMU解决方案-ADXRS290

    origin https ezchina analog com message 34890 对于复杂且高动态惯性配置的MEMS IMU应用 xff0c 评估功能时需要考虑许多属性 在设计周期早期评估这些属性优于追逐开放性成果 xff0c 从
  • 关于DIY电池均衡器--被动均衡---蓄电池--电瓶车电池组电压均衡的经历

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 前言 随着电动车长时间的反复使用 xff0c 电池参数难免会发生变化 xff0c 当电池组中各节电池参数不一时 xff0c 便会出现充电时
  • CMakeLists.txt与Makefile 的区别

    我平时一般是在windows使用VS编程 xff0c 但是偶尔在网上查资料的时候也会下载一些别人的代码 xff0c 其中就经常对CMakeLists txt和Makefile文件产生疑惑 xff0c 下面我来分析一下这两个经常使用的地方 C
  • 链接提示 extern "C"

    在 C 43 43 中调用 C 代码时 xff0c 需要给编译器指定 xff23 代码要按照 xff23 语言的编译器编译 xff0c 否则编译器会将 xff23 代码按照默认的C 43 43 编译器来编译 xff23 代码 xff0c 这
  • C/C++实现你的浪漫表白:浪漫流星雨表白程序,

    想要讨女朋友欢心也巩固自己所学的知识 xff0c 各位小伙伴有自己的想法了吗 xff1f 准备好想要怎样实施了吗 xff1f 有什么美好的计划了吗 xff1f 如果没有的话那么别慌 xff0c 我知道 xff0c 在座的各位肯定都是有自己的
  • DDR4原理及硬件设计

    DDR4 DRAM的工作原理 其引脚按照功能可以分为7类 xff1a 前3类为电源 地 配置 后4类为 xff1a 控制信号 时钟信号 地址信号 数据信号 电源 地 配置信号的功能很简单 xff0c 在此不赘述 控制信号主要是用来完成DDR
  • RK3568最小系统四层板设计总结

    很久没有关注DDR4和DDR5相关知识了 xff0c 利用找工作在家休息间隙从网上下载了RK3568的原理图和6层板的PCB参考设计 xff0c 将6层板改为4层板设计 进行总结之前 xff0c 先将设计时关于Allegro设计小技巧进行总
  • 部门管理经验小结

    很久没有针对管理做总结了 xff0c 回武汉后一直做工程师 xff0c 现对管理知识体系进行总结 xff1a 部门管理按照如下框图1所示 图1
  • STM32驱动开发(二)--USB Device RNDIS虚拟网卡(usb hound抓包完整数据流分析)

    一 简介 抓包工具 xff1a usb hound xff0c 本例使用安卓手机作为device 使用RNDIS功能连接电脑虚拟网卡 抓取完整数据流包按流程进行分析 数据流程熟悉之后 xff0c 查看stm32或者其他厂家的USB库开发RN
  • 瑞芯微RK3568控制板设计总结

    本周刚使用瑞芯微RK3568设计完成一款军用控制PCB板 xff0c 特进行总结便于后续设计提升效率 一 布局相关 器件布局效率及结果对于PCB设计至关重要 xff0c 特别在使用一个新处理器如何高效的展开器件的布局设计非常重要 xff0c
  • xilinx ise 下载地址

    10 1i ed2k file Xilinx ISE DS v10 1 iso 6345773056 5211e011944e70e0e682b3f90a613695 9 1i http download xilinx com direct
  • 输出比较模式时的TIM_OCMode_PWM1和TIM_OCMode_PWM2区别

    配合结构体成员TIM OCInitTypeDef TIM OCPolarity来一起使用 现在假定TIM OCInitTypeDef TIM OCPolarity 61 TIM OCPolarity High 则起始波形为高电位 若TIM
  • 运放稳定性连载4:运放网络,SPICE分析(1)

    作者 xff1a Tim Green xff0c 德州仪器公司 2 0 引言 本系列第2部分将着重分析运放电路 xff08 尤其是两种常见运放网络 xff09 的稳定性 重要的是必须在进行SPICE 仿真前先进行1 阶分析 xff08 主要
  • 运放稳定性连载18:电容负载稳定性:输出引脚补偿(2)

    我们的CMOS RRO输出引脚补偿实例如图9 20所示 这种实际电源应用采用OPA569功率运算放大器作为可编程电源 为了在负载上提供精确的电源电压 xff0c 可以采用一种差动放大器INA152对负载电压实施差动监控 闭环系统可以补偿任何
  • 音响开关机POP声/爆破声最新解决消除方法(D类音频功放IC应用实例)

    POP声是指音频器件在上电 断电瞬间以及上电稳定后 xff0c 各种操作带来的瞬态冲击所产生的爆破声 下文结合自身在推广小功率D类音频功放IC的过程中遇到的设计问题 xff0c 就音频系统开关机POP声的解决思路和大家分享一下 降低或去除P
  • 单片机stm32 USART串口实际应用解析

    stm32作为现在嵌入式物联网单片机行业中经常要用多的技术 xff0c 相信大家都有所接触 xff0c 今天这篇就给大家详细的分析下有关于stm32的出口 xff0c 还不是很清楚的朋友要注意看看了哦 xff0c 在最后还会为大家分享有些关