STM32进阶-串口及蓝牙通信 控制开发板硬件详细步骤-USART1/2

USART实现步骤处理器与外部通信概述USART原理及特点介绍USART配置的详细步骤(USART1为例)处理器与外部通信概述串行通信-传输原理:数据按位顺序传输。-优点:占用引脚资源少-缺点:速度相对较慢并行通信-传输原理:数据各个位同时传输。-优点:速度快-缺点:占用引脚资源多串口作为 MCU 的重要外部接口,基本上所有的 MCU 都会带有串口。而STM32F407ZET6 最多可提供 6 路串口。通信按传输方向以下几种方式:  a.单工:数据传输
摘要由CSDN通过智能技术生成

处理器与外部通信概述

  1. 串行通信
    在这里插入图片描述
    -传输原理:数据按位顺序传输。
    -优点:占用引脚资源少
    -缺点:速度相对较慢

  2. 并行通信
    在这里插入图片描述
    -传输原理:数据各个位同时传输。
    -优点:速度快
    -缺点:占用引脚资源多

串口作为 MCU 的重要外部接口,基本上所有的 MCU 都会带有串口。而STM32F407ZET6 最多可提供 6 路串口。

  1. 通信按传输方向以下几种方式:  
    a.单工:
    数据传输只支持数据在一个方向上传输(收音机、遥控器)
    b.半双工:
    允许数据在两个方向上传输,但是,在某一时刻,只允许数
    据在一个方向上传输,它实际上是一种切换方向的单工通信;(对讲机)
    c.全双工:
    允许数据同时在两个方向上传输,因此,全双工通信是两个
    单工通信方式的结合,它要求发送设备和接收设备都有独立
    的接收和发送能力。(电话机)

  2. 串行通信的通信方式
    a.同步通信:带时钟同步信号传输。 -SPI,IIC通信接口
    b.异步通信:不带时钟同步信号。 -UART(通用异步收发器),单总线

在这里插入图片描述

USART原理及特点介绍

  1. USART与UART的区别:
    USART:全双工通用同步/异步串行收发器
    UART:全双工通用异步串行收发器
    USART/UART是一种通用的标准接口,根据导线的电压等不同也分为很多的同类,比如: RS485, RS422,RS232

  2. UART异步通信方式特点:

  • 全双工异步通信。
  • 小数波特率发生器系统,提供精确的波特率。
  • 可配置的16倍过采样或8倍过采样,因而为速度容差与时钟容差的灵活配置提供了可能。
  • 可编程的数据字长度(8位或者9位);
  • 可配置的停止位(支持1或者2位停止位);
  • 可配置的使用DMA多缓冲器通信。
  • 单独的发送器和接收器使能位。
  • 检测标志:① 接收缓冲器 ②发送缓冲器空 ③传输结束标志
  • 多个带标志的中断源。触发中断。
  • 其他:校验控制,四个错误检测标志。
  1. STM32串口异步通信定义的参数传送格式:
    在这里插入图片描述
  • 起始位:发送器是通过发送起始位而开始一个字符的传送。起始位使数据线处于“space”状态
  • 数据位(8位或9位):起始位之后就传送数据位。在数据位中,低位在前(左),高位在后(右)。由于字符编码方式的不同,数据位可以是5、6、7或8位。
  • 奇偶校验位(第九位):用于对字符传送作正确性检查,因
    此奇偶校验位是可选择的,共有3种可能,即奇校验、偶校验和无校验,由用户根据需要选定。
  • 停止位(1,1.5,2位):停止位在最后,用以标志一个字符传送的结束,它对应于mark状态。停止位可能是1、1.5或2位,在实际应用中根据需要确定。

波特率(band rate)= 1波特=1bps(位/秒)1

USART配置的详细步骤(USART1为例)

在这里插入图片描述
跳线帽的连接非常重要,不能接错

在这里插入图片描述
在这里插入图片描述
根据自己的开发板原理图,找到相应的IO口

  1. 串口时钟使能,GPIO 时钟使能。
  2. 设置引脚复用器映射:调用 GPIO_PinAFConfig 函数。
  3. GPIO 初始化设置:要设置模式为复用功能。
  4. 串口参数初始化:设置波特率,字长,奇偶校验等参数。
  5. 开启中断并且初始化 NVIC,使能中断(如果需要开启串口中断才需要这个步骤)。
  6. 使能串口。
  7. 编写中断处理函数:函数名格式为 USARTx_IRQHandler(x 对应串口号)。
void Usart1_Init(void)
{
   
	GPIO_InitTypeDef  GPIO_InitStructure;
	USART_InitTypeDef USART_InitStruct;
	NVIC_InitTypeDef  NVIC_InitStruct;
	
	// 串口是挂载在 APB2 下面的外设,(多goto函数查看原理有助于理解)
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
	//使用的是串口 1,串口 1 对应着芯片引脚 PA9,PA10 需要使能PA的时钟
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); 

	//设置引脚复用器映射
	//引脚复用器映射配置,需要配置PA9,PA10 的引脚,调用函数为:
	//PA9 复用为 USART1
	GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); 
	//PA10 复用为 USART1
	GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);
		
	GPIO_InitStructure.GPIO_Pin 	= GPIO_Pin_9 | GPIO_Pin_10; //GPIOA9 与 GPIOA10
	GPIO_InitStructure.GPIO_Mode 	= GPIO_Mode_AF;				//配置IO口复用功能
	GPIO_InitStructure.GPIO_Speed 	= GPIO_Speed_50MHz; 		//速度 50MHz
	GPIO_InitStructure.GPIO_OType 	= GPIO_OType_PP; 			//推挽复用输出
	GPIO_InitStructure.GPIO_PuPd 	= GPIO_PuPd_UP; 			//上拉
	//初始化 PA9,PA10
	GPIO_Init(GPIOA,&GPIO_InitStructure); 
	
	USART_InitStruct.USART_BaudRate 	= 115200;				//一般设置为 115200;
	USART_InitStruct.USART_WordLength 	= USART_WordLength_8b;	//字长为 8 位数据格式
	USART_InitStruct.USART_StopBits 	= USART_StopBits_1
  • 12
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值