STM32单片机,UART的寄存器配置以及工作原理
时间:2021-09-24 16:14:57
[导读]前言UART是重要的片上资源,主流单片机基本上都有该功能,通过UART可以扩展出很多的通信接口,如RS232、RS485、LIN,甚至WIFI、蓝牙模组等,可以说只要搞通讯就会涉及到UART。下面和大家分享STM32的UART配置。1UART是什么USART全称universal...
前言
UART是重要的片上资源,主流单片机基本上都有该功能,通过UART可以扩展出很多的通信接口,如RS232、RS485、LIN,甚至WIFI、蓝牙模组等,可以说只要搞通讯就会涉及到UART。下面和大家分享STM32的UART配置。4 USART的代码示例4.1 标准库提供的常用USART接口标准库为所有的外设都提供了封装寄存器的API接口函数,文件名为stm32f10x_peripheral.c;以下为usart外设的常用函数;
//串口USARTx的参数配置初始化函数;void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);//使能串口,(主要是分频器和输出的设置)void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);//使能串口中断,(就是那8个中断,均可以进入中断函数)void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState);//都是处理一个字节;void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);uint16_t USART_ReceiveData(USART_TypeDef* USARTx);//读取SR寄存器的状态,SR的状态都是硬件设置的;FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);//读取SR寄存器和CRx控制寄存器的状态,和上面一个功能相同的;ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);
//修改SR寄存器的状态,单功能通讯用不上;void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);4.2 USART1使用代码
#include "usartDemo.h" u8 USART1_RX_BUF[256]; //接收缓存u8 USART1_RX_CNT = 0; //接收字节计数u8 USART1_REV_0D = 0; //收到\ru8 USART1_REV_0A = 0; //收到\r和\n
//usart1初始化之后,便可以通过串口读写了;void Usart1_Init(u32 bound){ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 0-3;
//USART1外设中断配置 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ; //抢占优先级3 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子优先级3 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能 NVIC_Init( 




