东阳建设局网站,百度官方官网,wordpress 制作下载,明星用什么软件做视频网站文章目录一、STM32串口常用寄存器和库函数1.1 常用的串口寄存器1.2 串口相关的库函数1.3 状态寄存器#xff08;USART_ SR#xff09;1.4 数据寄存器#xff08;USART_ DR#xff09;1.5 波特率寄存器#xff08;USART_BRR#xff09;二、串口配置一般步骤一、STM32串口常…
文章目录一、STM32串口常用寄存器和库函数1.1 常用的串口寄存器1.2 串口相关的库函数1.3 状态寄存器USART_ SR1.4 数据寄存器USART_ DR1.5 波特率寄存器USART_BRR二、串口配置一般步骤一、STM32串口常用寄存器和库函数
1.1 常用的串口寄存器
USART_ SR状态寄存器 USART_ DR数据寄存器 USART_BRR波特率寄存器
1.2 串口相关的库函数
void USART_ Init(); //串口初始化:波特率数据字长奇偶校验硬件流控以及收发使能
void USART Cmd(); //使能串口
void USART ITConfig0; //使能相关中断void USART SendData(); //发送数据到串口DR
uint16 t USART ReceiveData(); //接受数据从DR读取接受到的数据FlagStatus USART GetFlagStatus(); //获取状态标志位
void USART ClearFlag(); //清除状态标志位
ITStatus USART GetlTStatus); //获取中断状态标志位
void USART_ ClearlTPendingBit); //清除中断状态标志位
1.3 状态寄存器USART_ SR 所用函数 FlagStatus USART_GetFlagStatus(USART TypeDef USARTx; uint16 t USART_FLAG); FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG)
{FlagStatus bitstatus RESET;/* Check the parameters */assert_param(IS_USART_ALL_PERIPH(USARTx));assert_param(IS_USART_FLAG(USART_FLAG));/* The CTS flag is not available for UART4 and UART5 */if (USART_FLAG USART_FLAG_CTS){assert_param(IS_USART_1236_PERIPH(USARTx));} if ((USARTx-SR USART_FLAG) ! (uint16_t)RESET){bitstatus SET;}else{bitstatus RESET;}return bitstatus;
}1.4 数据寄存器USART_ DR 相关函数 void USART SendData(USART TypeDef* USARTx, uint16 t Data); uint16_t USART_ ReceiveData(USARTTypeDef* USARTx) void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
{/* Check the parameters */assert_param(IS_USART_ALL_PERIPH(USARTx));assert_param(IS_USART_DATA(Data)); /* Transmit Data */USARTx-DR (Data (uint16_t)0x01FF);
} uint16_t USART_ReceiveData(USART_TypeDef* USARTx)
{/* Check the parameters */assert_param(IS_USART_ALL_PERIPH(USARTx));/* Receive Data */return (uint16_t)(USARTx-DR (uint16_t)0x01FF);
}1.5 波特率寄存器USART_BRR 关于波特率的计算 小数部分需要乘上16 void USART Init(USART TypeDef* USARTx; USART_ InitTypeDef* USART: InitStruct) 第一个入口参数是用来确实是哪个串口
#define IS_USART_ALL_PERIPH(PERIPH) (((PERIPH) USART1) || \((PERIPH) USART2) || \((PERIPH) USART3) || \((PERIPH) UART4) || \((PERIPH) UART5) || \((PERIPH) USART6) || \((PERIPH) UART7) || \((PERIPH) UART8)) 1-8个第二个入口参数结构体就是设置串口的一些变量
typedef struct
{uint32_t USART_BaudRate; //设置波特率uint16_t USART_WordLength; //设置字长8/9uint16_t USART_StopBits; //停止位uint16_t USART_Parity; //奇偶校验uint16_t USART_Mode; //使能发送/控制uint16_t USART_HardwareFlowControl; //硬件控制本次不用
} USART_InitTypeDef;二、串口配置一般步骤
①串口时钟使能: RCC_APBxPeriphClockCmd); GPIO时钟使能: RCC_ AHB1PeriphClockCmd();
②引脚复用映射:GPIO_PinAFConfig();
③GPIO端口模式设置:GPIO _Init(); 模式设置为GPIO_Mode_ AF
④串口参数初始化: USART_ Init();
⑤开启中断并且初始化NVIC ( 如果需要开启中断才需要这个步骤) NVIC_ Init(); USART_ITConfig();
⑥使能串口:USART_Cmd();
⑦编写中断处理函数: USARTX_ IRQHandler();
⑧串口数据收发: void USART_SendData();//发送数据到串口DR uint16_ t USART_ReceiveData();//接受数据从DR读取接受到的数据
⑨串口传输状态获取: FlagStatus USART_GetFlagStatus(); void USART_ClearlTPendingBit();