文章目录
- 前言
- 4-3 USART的标准库编程(上)
- 标准库编程接口
- void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
- void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
- uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
- void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
- FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
前言
-
本笔记内容,为本人依据B站UP主“铁头山羊”视频内容(本人为其粉丝),归纳整理总结而来,如有侵权,联系立即删除,同时有想详细了解的也可进行观看bilibili铁头山羊 。
-
硬件:STM32F103C8T6
-
软件:Keil
4-3 USART的标准库编程(上)
标准库编程接口
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
// @简介:串口初始化
// @参数:USARTx - 选择要从操作的的串口,可以是USART1,USART2,USART3,UART4,UART5
// @参数:USART_InitStruct - 初始化参数,USART——InitTypedef结构体指针类型
USART_InitTypeDef USART_InitStruct
uint32_t USART_BaudRate; //设置波特率
uint16_t USART_WordLength; //数据位长度
uint16_t USART_StopBits; //停止位长度
uint16_t USART_Parity; //奇偶校验
uint16_t USART_Mode; //收发模式选择
uint16_t USART_HardwareFlowControl; //硬件流控制选择
// @返回值:None
USART_InitTypeDef USART_InitStruct;
USART_InitStruct.USART_BaudRate = 9600;
USART_InitStruct.USART_WordLength = USART_WordLength_8b;
USART_InitStruct.USART_StopBits = USART_StopBits_1;
USART_InitStruct.USART_Parity = USART_Parity_No;
USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_Init(USART1, &USART_InitStruct);
void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
// @简介:控制USART总开关的断开和闭合(总开关)
// @参数:USARTx - 选择要操作的串口,可以是USART1,USART2,USART3,UART4,UART5
// @参数:NewState - 开关状态,ENABLE - 闭合,DISABLE - 断开
USART_Cmd(USART1, ENABLE);
USART_Cmd(USART1, DISABLE);
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
// @简介:从RDR读取数据(读RDR寄存器)
// @参数:USARTx - 选择要操作的串口,可以是USART1,USART2,USART3,UART4,UART5
// @返回值:读取到的数据
uint16_t receivedData = USART_ReceiveData(USART1);
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
// @简介:向TDR写数据(写TDR寄存器)
// @参数:USARTx - 选择要操作的串口,可以是USART1,USART2,USART3,UART4,UART5
// @参数:Data - 写入要写的数据
// @返回值:None
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
USART_SendData(USART1, 0x5a);
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
// @简介:读标志位
// @参数:USARTx - 选择要操作的串口,可以是USART1,USART2,USART3,UART4,UART5
// @参数:USART_FLAG - 标志位名称 ,可以是USART_IT_PE,USART_IT_TXE,USART_IT_TC,USART_IT_RXNE,USART_IT_ORE_RX,USART_IT_IDLE,USART_IT_LBD,USART_IT_CTS,USART_IT_ERR,USART_IT_ORE_ER,USART_IT_NE,USART_IT_FE
// @返回值:标志位状态,SET - 1,RESET - 0
while(USART_GetFlagStatus(USART1, USART_IT_TXE) == RESET);
while(USART_GetFlagStatus(USART1, USART_IT_RXNE) == RESET);
if(USART_GetFlagStatus(USART1, USART_IT_PE) == SET);