USART相关库函数包含在stm32f10x_usart.c和stm32f10x_usart.h文件中。
1、使能串口时钟及GPIO端口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能GPIOA时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //使能USART1时钟
2、GPIO端口模式设置,设置串口对应的引脚复用功能
GPIO_InitStructure.GPIO_Mode=GPIO_MODE_AF_PP; //RX引脚配置
GPIO_InitStructure.GPIO_Mode=GPIO_MODE_IN_FLOATING; //TX引脚配置
3、初始化串口参数,波特率,字长、奇偶校验位等
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
typedef struct
{
uint32_t USART_BaudRate;
uint16_t USART_WordLength;
uint16_t USART_StopBits;
uint16_t USART_Parity;
uint16_t USART_Mode;
uint16_t USART_HardwareFlowControl;
} USART_InitTypeDef;
4、使能串口
void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
USART_Cmd(USART1,ENABLE);
5、设置串口中断类型并使能
void USART_ITConfig(USART TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState);
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); //开启接受中断
USART_ITConfig(USART1,USART_IT_TC,ENABLE); //开启发送中断
6、设置串口中断优先级,使能串口中断通道
NVIC初始化库函数NVIC_Init();
7、编写串口中断服务函数
USART1_IRQHandler
ITStatus USART_GitITStatus(USART_TypeDef* USARTx,uint16_t USART_IT);
rif(USART_GitITStatus(USART1,RXNE)!=RESET)
{...//执行USART1接收中断内控制}
void USART_ClearFlag(USART_TypeDef* USARTx,uint16_t USART_FLAG);