是单片机的串口接收中断吗?要设置中断标志位呀,串口接收方式也要对呀,设置波特率。
SCON=0X50
EA=1
ES=1
TMOD=0X20
TH1=0xfd
TL1=0xfd
TR1=1
还要写串口中断程序,这样,当串口接收到数据就会进入中断程序了。
返回的数据都是一样的吧,都是第一个字符?你应该定义一个全局变量记录接受的字节数,另外每次中断只能接受一个字节。
你的中断函数是完成接受数据的吧,怎么里面还有一句(倒数第四行)等待发送结束?
int i=0
void USART2_IRQHandler(void)
{
if (USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //判断发生接收中断
{
USART_ClearITPendingBit(USART2, USART_IT_RXNE) //清除中断标志
TxBuf1[i++]=USART_ReceiveData(USART2) //接收数据
if(i==8) //接受完8个字节数据
{
LCD_write_String(7,2,IntToStr(TxBuf1[4]))
i=0 //计数清零
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)