STM32
回帖(1)
2021-12-15 10:21:07
1、参考资料
《STM32F1开发指南-库函数版本》- 5.3 usart串口文件夹介绍
-第9章 串口实验
《STM32中文参考手册V10》-第25章通用同步异步收发器(USART)
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();//清除中断状态标志位
·状态寄存器(USART_SR)
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
·数据寄存器(USART_DR)
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
·波特率寄存器(USART_BRR)
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
·波特率计算方法
·硬件连接
PA9、PA10(串口1)连接到了USB串口威廉希尔官方网站
3.串口配置的一般步骤
①串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd();
②串口复位:USART_DeInit(); 这一步不是必须的
③GPIO端口模式设置:GPIO_Init(); 模式设置为GPIO_Mode_AF_PP
④串口参数初始化:USART_Init();
⑤开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)
NVIC_Init();
USART_ITConfig();
⑥使能串口:USART_Cmd();
⑦编写中断处理函数:USARTx_IRQHandler();
⑧串口数据收发:
void USART_SendData();//发送数据到串口,DR
uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据
⑨串口传输状态获取:
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);
1、参考资料
《STM32F1开发指南-库函数版本》- 5.3 usart串口文件夹介绍
-第9章 串口实验
《STM32中文参考手册V10》-第25章通用同步异步收发器(USART)
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();//清除中断状态标志位
·状态寄存器(USART_SR)
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
·数据寄存器(USART_DR)
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
·波特率寄存器(USART_BRR)
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
·波特率计算方法
·硬件连接
PA9、PA10(串口1)连接到了USB串口威廉希尔官方网站
3.串口配置的一般步骤
①串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd();
②串口复位:USART_DeInit(); 这一步不是必须的
③GPIO端口模式设置:GPIO_Init(); 模式设置为GPIO_Mode_AF_PP
④串口参数初始化:USART_Init();
⑤开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)
NVIC_Init();
USART_ITConfig();
⑥使能串口:USART_Cmd();
⑦编写中断处理函数:USARTx_IRQHandler();
⑧串口数据收发:
void USART_SendData();//发送数据到串口,DR
uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据
⑨串口传输状态获取:
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);
举报
更多回帖