一般串口设置的步骤分为以下几个:
(1)串口时钟使能,GPIO时钟使能
(2)串口复位
(3)GPIO端口模式设置
(4)串口参数初始化
(5)开启中断并且初始化NVIC
(6)使能串口
(7)编写中断处理函数
对于串口时钟使能,由串口是挂载在ABP2下面的外设,使能函数为:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1);
对于串口复位,当外设出现异常可以通过复位设置实现复位,然后重新配置这个外设使其达到重新工作的目的
USART_DeInit(USART1);
串口参数初始化,通过USART_Init()函数实现,它有两个参数,第一个是指定初始化串口的串口标号,这里选择USART1,第二个是一个USART_InitTypeDef类型的结构体指针,利用这个结构体的成员变量来初始化一些参数。
USART_InitStructure.USART_BaudRate=bound;//波特率设置
USART_InitStructure.USART_WordLength=USART_WordLength_8b;//字长为8位
。。。
数据发送与接收通过寄存器USART_DR实现。
USART_SendData(串口号,uint16_t的数据);
USART_ReceiveData(串口号);
串口状态,通过寄存器USART_SR读取,各位的描述看开发指南,第5、6位RXNE和TC。
当RXNE被置1时,说明有数据被接收,此时需要尽快去读取USART_DR,读取后RXNE被置0。
TC被置为时,说明USART_DR内的数据已经被发送完成,如果设置了该位的中断,则会产生中断,该位的清零方式也有两种,读USART_SR,写USART_DR或者直接向该位写0。
判断非空的操作是USART_GetFlagStatus(USART1,USART_FLAG_RXNE/TC);
网友评论