STM32串口通信(针对stm32f10x)

处理器与外部通信的两种方式

并行通信
数据各个位同时传输,速度快,占用引脚资源多
串行通信
数据按位顺序传输,占用引脚资源少,速度相对比较慢
1.按照数据传送方向可以分为:
单工:数据传输只支持在一个方向上传输。
半双工:允许数据在两个方向上传输,但是在某一时刻只允许数据在一个方向上传输。
全双工:允许数据同时在两个方向上传输。
2.串行通信的通信方式
同步通信:带时钟同步信号传输,如SPI,IIC通信接口
异步通信:不带时钟同步信号,URAT(通用异步收发器),单总线。

STM32中的串口通信

STM32的串口通信接口
UART:通用异步收发器
USART:通用同步异步收发器

UART异步通信方式引脚连接方式
在这里插入图片描述
RS232转换器的作用
我们所说的USB转串口实际上有两种:一种是USB转232串口,一种是USB转TTL串口,UART上使用的TTL电平,而PC的串口是RS232,由于电平定义不同,所以要做电平转换。

STM32串口异步通信需要定义的参数
起始位
数据位(8位或者9位)
奇偶校验位(第9位)
停止位(1,15,2位)
波特率设置

常用的串口相关寄存器
USART_SR状态寄存器
USART_DR数据寄存器
USART_BRR波特率寄存器
波特率的计算方法

串口操作相关库函数(省略入口参数):

void USART_Init(); //串口初始化:波特率,数据字长,奇偶校验,硬件流控以及收发使能
void USART_Cmd();//使能串口
void USART_ITConfig();//使能相关中断
void USART_SendData();//发送数据到串口,DR
uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据
FlagStatus USART_GetFlagStatus();//获取状态标志位
void USART_ClearFlag();//清除状态标志位
ITStatus USART_GetITStatus();//获取中断状态标志位
void USART_ClearITPendingBit();//清除中断状态标志位

串口配置的一般步骤

1.串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd();
2.串口复位:USART_DeInit(); 这一步不是必须的
3.GPIO端口模式设置:GPIO_Init(); 模式设置为GPIO_Mode_AF_PP
4.串口参数初始化:USART_Init();
5.开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)
      NVIC_Init();
      USART_ITConfig();
6.使能串口:USART_Cmd();
7.编写中断处理函数:USARTx_IRQHandler();
8.串口数据收发:
	void USART_SendData();//发送数据到串口,DR
	uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据
9.串口传输状态获取:
	FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
	void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);
发布了4 篇原创文章 · 获赞 2 · 访问量 68

猜你喜欢

转载自blog.csdn.net/qq_44708426/article/details/103944920
今日推荐