STM32串口学习小结

STM32串口学习小结

串口是一个单片机常用的外设模块,对于单片机的外部通讯,程序调试都有着十分重要的作用。所以作为嵌入式学习中一个必须掌握的外设模块,这里向大家分享的我学习小结。

1.通讯理论知识简要介绍

处理器与外部通讯主要可分别为以下两种方式:
1.并行通信:数据多位同时传输,通讯速度快,但占用IO口资源多
2.串行通信:数据单位顺序传输,通讯速度较慢,其占用IO口资源较少。

串行通信按数据传递方向又可分为一下几种类型:
1.单工:传输数据只能单向传递
2.半双工:传输数据可以进行双向传输,但在传输数据的一瞬间,数据为单向传输,实际上是一种可变方向的单工通信
3.全双工:传输数据进行双向传输过程,此类通信方式要求通信设备都具有独立的接收和发送数据能力。

串行通信按通信方式又可分为1.同步通信,2.异步通信
1.同步通信:从硬件结构上讲,其通讯接口有:1.SDA,2.SCL两个接口:
SCL:时钟线,提供数据接受时序,保证数据正常传递;2.SDA:数据线,发送和接受用户所需求的数据。
2.异步通信:与同步通信上对比,没有时钟线:SCL,使用波特率等协议来确保数据传输速率。通讯接口为:RXD、TXD分别负责数据的接收和发送。

以下是一些常用的通讯协议(图片来自正点原子):
在这里插入图片描述

2.基于库函数的串口初始化步骤:

对于串口的初始化步骤可以分为以下几步:
1.GPIO以及串口时钟的使能
2.GPIO端口复用映射设置,如果想要使用中断的化,则需要进行NVIC中断优先级分组设置
3.GPIO端口模式初始化
4.UART模式初始化设置
5.串口使能。
如果不使用串口中断的话,使用上面配置已经就够了。若使用串口中断则需要加上中断配置。
6.中断使能以及NVIC中断初始化配置
示例(初始化USART1):

void uart_init(u32 bound){
   
   
   GPIO_InitTypeDef  GPIO_InitStructure;
  USART_InitTypeDef USART_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
 
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//使能串口时钟
 
  USART_DeInit(USART1);//复位串口1
  GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);
  GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);//设置PA9与PA10复用功能串口1
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断管理优先级分组为2,2位抢占优先级,2位响应优先级
 
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10; //引脚设置位Pin9与pin10
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;          //模式设置为复用功能
  GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;        //推挽输出模式
  GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;     //上拉模式
  GPIO_InitStructure.GPIO_Speed=GPIO_Fast_Speed; //IO速率50Mhz
  GPIO_Init
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值