历史上的今天
返回首页

历史上的今天

今天是:2025年12月20日(星期六)

2022年12月20日 | 单片机stm32 USART串口实际应用解析

2022-12-20 来源:zhihu

  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); //等待发送结束


推荐阅读

史海拾趣

南京国博公司的发展小趣事

在5G浪潮的推动下,国博电子凭借其在射频集成电路领域的深厚技术积累,成功研制出5G毫米波段Massive MIMO毫米波有源相控阵组件等一系列典型产品。这些产品不仅在国内市场得到了广泛应用,还赢得了国际市场的认可。国博电子的技术领先不仅推动了国内5G通信产业的发展,也为全球5G通信技术的进步做出了重要贡献。

华瓷(Chinocera)公司的发展小趣事

在华瓷的发展历程中,一个关键的转折点是在XX年代初,公司成功研发出了一种新型陶瓷材料,这种材料不仅具备优异的耐高温、耐腐蚀性能,而且在电子元器件的应用中表现出了极高的稳定性和可靠性。这一技术突破使得华瓷迅速在电子行业崭露头角,众多知名电子品牌开始与华瓷合作,使用其陶瓷材料生产高性能的电子元器件。

GC Electronics公司的发展小趣事
如温度、湿度等环境因素的变化,有时也可能对传感器的工作产生影响,导致误报。
雅特力(Artery)公司的发展小趣事

在发展过程中,雅特力积极寻求与其他企业的战略合作,以实现共赢发展。通过与上下游企业建立紧密的合作关系,雅特力不仅确保了供应链的稳定性和高效性,还获得了更多的技术支持和市场资源。同时,雅特力还注重与同行业企业的交流与合作,共同推动电子行业的进步与发展。这些战略合作不仅增强了雅特力的综合实力和市场竞争力,也为整个电子行业的繁荣做出了积极贡献。

综上所述,雅特力公司通过技术创新、全球市场布局、企业社会责任、人才培养和战略合作等多个方面的努力,实现了从初创企业到行业领军者的华丽转身。这些故事不仅展现了雅特力的发展历程和成就,也揭示了其在电子行业中的重要地位和影响力。

FTDI公司的发展小趣事

雅特力在追求经济效益的同时,也高度重视企业社会责任和可持续发展。公司积极参与社会公益事业,通过捐款、捐物等方式支持教育、环保等领域的发展。此外,雅特力还注重环境保护和资源利用,采用环保材料和节能技术,努力降低生产过程中的能耗和排放。这些举措不仅有助于提升公司的社会形象,也为实现可持续发展做出了积极贡献。

ALLIED [Allied Electronics]公司的发展小趣事

雅特力深知人才是企业发展的核心力量。因此,公司始终重视人才培养和团队建设。雅特力通过招聘优秀的专业人才、开展内部培训、设立激励机制等方式,打造了一支高素质、高效率的团队。这支团队不仅具备丰富的技术知识和实践经验,还具备高度的创新意识和团队协作能力。正是有了这样一支优秀的团队,雅特力才能够在激烈的市场竞争中脱颖而出,实现持续稳健的发展。

问答坊 | AI 解惑

基于DSP控制的PFC变换器的新颖采样算法

基于DSP控制的PFC变换器的新颖采样算法…

查看全部问答>

射频参数测试新方法(下)

3. 应用例子: 目前吉时利已经将上面所介绍的设计方法成功应用于其最新的S600DC/RF APT系统中,用于实现过程监控。其关键的性能指标包括: 基于吉时利S600 APT带固态转换开关的直流测试系统以及Anritsu VNA技术,高速的射频测量能力实现了1KHz的 ...…

查看全部问答>

某个强人的电子竞赛经验介绍

本帖最后由 paulhyde 于 2014-9-15 09:42 编辑 很值得学习的大赛经验介绍!让你少走弯路!!  …

查看全部问答>

全国电子设计大赛的优秀作品集锦???

哪本书或者那个网站有最近几年全国电子设计大赛的优秀作品集锦???…

查看全部问答>

MMU地址映射

void mem_mapping_linear(void)    {        unsigned long descriptor_index, section_base, sdram_base, sdram_size;        sdram_base=0x30000000;        sdr ...…

查看全部问答>

帮帮忙急求:谁知道嵌入式精简TCP/IP

    谁知道嵌入式精简TCP/IP协议有多大要用多大的flash/ram来存储,是不是单片机上有这个协议就可以实现网络通信了啊? 如果不行还需要什么啊?…

查看全部问答>

计算机组成原理 和 计算机体系结构 有什么不同?

已经学了计算机组成原理,下学期有计算机体系结构这门课选,不知道两者有多大的不同?大家给点意见。…

查看全部问答>

也谈家电产品之模糊控制技术(上)

本帖最后由 jameswangsynnex 于 2015-3-3 20:04 编辑 当今绚丽多彩的家电市场,产品最受关注的卖点莫过于“智能”、“人性化”、“全自动”等。从用户的角度来看,能配上如此美名的产品,应该是用户只需按触一个“START”开关,不论具体应用的对象 ...…

查看全部问答>

求430控制十字路口交通灯程序 急急急

求430控制十字路口交通灯程序 急急急  …

查看全部问答>

电路图的画法规则

电路图的画法规则,为了使看图者能正确方便理解电路图的全部内容,绘制电路图时,,,,... 资源中心下载地址:https://download.eeworld.com.cn/detail/qwqwqw2088/281462 直接下载:电路图的画法规则…

查看全部问答>