STM学习问题及现象.docVIP

  • 5
  • 0
  • 约5.04千字
  • 约 5页
  • 2015-08-07 发布于湖北
  • 举报
STM学习问题及现象.doc

STM32库函数void?USART_SendData(USART_TypeDef*?USARTx,?u16?Data)的缺陷和解决方法 使用USART_SendData()函数非连续发送单个字符是没有问题的;当连续发送字符时(两个字符间没有延时),就会发现发送缓冲区有溢出现象。若发送的数据量很小时,此时串口发送的只是最后一个字符,当发送数据量大时,就会导致发送的数据莫名其妙的丢失。 如: ??????for(TxCounter = 0;TxCounter RxCounter; TxCounter++) ??????USART_SendData(USART1, RxBuffer[TxCounter]); 原因 此API函数不完善,函数体内部没有一个判断一个字符是否发送完毕的语句,而是把数据直接放入发送缓冲区,当连续发送数据时,由于发送移位寄存器的速度限制(与通信波特率有关),导致发送缓冲区的数据溢出,老的数据还未及时发送出去,新的数据又把发送缓冲区的老数据覆盖了。 解决方法(目前总结的两种方案) 方案1.?加入延时函数(下下策),不需要修改USART_SendData()函数 ??????for(TxCounter = 0;TxCounter RxCounter; TxCounter++) { ??????????????USART_SendData(USART1, RxBuf

文档评论(0)

1亿VIP精品文档

相关文档