STM32串口通讯的问题

2013年07月11日 17:21    发布者:狂风
stm32的串口通讯一次只能接收一个字节,接收一个字节后出现标志位,那要想继续接收数据,是不是每次接到一个字节的数据后都要清零标志位?还有:USART_GetFlagStatus与USART_GetITStatus的区别是不是前者是接收到一个字节的标志;后者是串口中断的标志?后者的中断是不是所用的数据发送完毕才产生?

网友评论

taxuelangzi110 2013年08月20日
①是不是每次接到一个字节的数据后都要清零标志位?答:是的,在STM32单片机的串口通讯中,每当SBUF接收到一个字节数据后,相应的接收标志位会被置1,该位需要软件清零;如果要想继续接收数据,必须先将该位软件清零。
②USART_GetFlagStatus与USART_GetITStatus的区别:IT主要就是与中断相关的,检查USART中断产生与否,当USART发送完成后会有USART_IT_TC中断,因此可以用来判断,而USART_GetFlagStatus是USART标志位设置与否,其中就有发送完成标志位USART_Flag_TC所以也可用来判断。而最终都是操作SR寄存器。另外,USART_GetFlagStatus仅仅是把SR相应的标志位置位,但是USART_GetITStatus还会去操作相应的CR1,CR2,CR3,完了再去进行SR的置位。:):)