小学生
最后登录1970-1-1
在线时间 小时
注册时间2017-8-14
|
在霸道的视频教程里面有一个地方用了USART1的中断:
//串口中断服务函数
void DEBUG_USART_IRQHandler(void)
{
uint8_t ucTemp;
if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE) != RESET)
{
ucTemp = USART_ReceiveData(DEBUG_USARTx);
USART_SendData(DEBUG_USARTx,ucTemp);
}
}
在这里调用了USART_SendData函数发送回所有接受到的数据
而USART_SendData函数的声明是这样的:USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
形参是16bit的数据(此处不知道说的对不对)
但是视频教程里面发送到单片机123456789,已经超出16位,但是在试验的时候仍然全部发送回电脑
后来我又在main函数里面直接调用:USART_SendData(DEBUG_USARTx,0x6789);
但是这时候串口调试助手里面只显示了89,也就是只发送了后面8个字节。
请问这是不是因为USART_SendData函数没有延时,导致缓冲区溢出呢?
但是如果是这样为什么之前能直接发送回123456789呢?
刚学不久,求助各位前辈,万分感谢!
|
|