串口printf

这个问题的根本原因是复位后,TC和TXE标志位默认都是1,很多人喜欢这样写:
  USART_SendData(USART1, (u8) ch);
  while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
  {
  }
while在发送第一个字节时没有起到应有作用,直接跳出,接着写第二个字节,这时第一个字节还未发出,数据被破坏了
 

USART_SendData执行后延迟一段时间,TC标志位才清零。

 

把GPIO时钟和USART时钟一起开,就不会出现fe

posted @ 2013-05-11 17:11  米其林轮船  阅读(159)  评论(0编辑  收藏  举报