【STM32F103笔记】5、串口通信——你好呀~

这一篇来说说STM32的串口通信功能,可以说串口通信是每个工程师在开发过程中第一或者第二个进行调试的程序(第一个可能是点灯,固定时间闪烁的那种),因为作为一种通信手段,单片机可以输出一些必要的信息,为调试其他程序提供有力的帮助(当然如果用JLink的话,配合keil uVision5可以单步调试啦。。但是不能否认串口通信在大多数情况下都调试的好帮手)。

这一篇将编写STM32的USART程序,并通过USB转串口的小设备将蓝色最小系统板的串口接到电脑上进行通信。
在这里插入图片描述

USART

STM32集成了USARTuniversal synchronous asynchronous receiver and transmitter),也就是通用同步异步收发器,即可以用于异步通信,也可以提供同步时钟与其他设备进行同步通信,这里我们主要用到的是异步通信功能,即UARTuniversal asynchronous receiver and transmitter),请明确其两者的区别。(笔者面试的时候踩了坑呢T.T)

数据传输格式

这里给出一张图简要说明异步串口通信的数据传输格式:
在这里插入图片描述

  • 串口通信按Word)传输,一个字可以是8位也可以是9位,通过程序配置,一般来说8位用的比较多(因为8是整数啊!get?);
  • 发送引脚TX清0表示起始位,置1表示停止位;
  • 空闲帧(Idle Frame)和断开帧(Break Frame)可用于产生中断进行其它处理,这里不做说明。
STM32的USART配置

这里并不对串口通信的协议进行深入说明,因为在官方库中已经给出了用于USART配置与使用的函数。这里对配置要点进行说明:

  • 波特率Baudrate):每秒传输的二进制数据的多少,通常可以设置为2400、4800、9600、19200、38400、57600、115200;
  • 数据位数Word Length):也就是上面说的“字”的位数;
  • 停止位Stop Bits):可以设置为半位、一位、一位半、两位;
  • 校验位Parity):可以配置为奇校验或偶校验,也可以无校验。

若进行异步串口通信,则双方设备的上述设置均应一致。

电路

串口通信最简单的电路只需要3根信号线,TX、RX、GND:
在这里插入图片描述

  • 注意这里的TX1连接到了RX2,即两个设备采取串口通信的话,其TX端口与RX端口是交叉相连的(仔细想想我发送你接收,没毛病~)。

在蓝色的最小系统板上,已经将串口1(USART1)单独用排针引了出来,PA9、PA10复用为USART的通信引脚:

  • TX:PA9
  • RX:PA10

注意在STM32手册中有说明,当GPIO引脚用于复用功能时,输出引脚配置为相应的复用输出功能,而输入引脚需要配置为浮空、上拉或者下拉:
在这里插入图片描述
(这里我们用的USB转串口设备的TX引脚平时输出为低电平,即有驱动电路,因此设置成浮空模式就行)

程序说明

对引脚进行配置:

	GPIO_InitTypeDef GPIOInitStruct;
	// PA9 TX
	GPIOInitStruct.GPIO_Pin = GPIO_Pin_9;
	// 复用推挽输出
	GPIOInitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIOInitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIOInitStruct);
	
	// PA10 RX
	GPIOInitStruct.GPIO_Pin = GPIO_Pin_10;
	// 浮空输入
	GPIOInitStr
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值