qt串口发送,单片机收到乱码啊
mycom->write(“123”);
我在电脑上用串口调试助手看是对的.
单片机是AVRde接收函数
void USART_Received_Ir()
{
UCSRB&=~BIT(RXCIE); //接收完毕中断不使能
RX_Buffer[i]=UDR;
// delay(5);
i++;
if(i==12)
{
i=0;
flag=1;
//delay(5);
}
UCSRB|=BIT(RXCIE); //接收完毕中断使能
}
然后我在主函数里
if(flag==1)
{
flag=0;
USART_Send(RX_Buffer[0]);
delay(1);
USART_Send(RX_Buffer[1]);
delay(1);
USART_Send(RX_Buffer[2]);
}
这里用串口调试助手看就不对了啊,乱码了,根本不是123啊 展开
中断方式:
用ICC产生的初始化程序
#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
void uart0_rx_isr(void)
{
//uart has received a character in UDR
//UCSRB&=~BIT(RXCIE); //接收完毕中断不使能
//AVR没有中断优先级概念,中断处理结束前不接受新中断,没必要关接收中断
RX_Buffer[i]=UDR;
// delay(5);
i++;
if(i==12)
{
i=0;
flag=1;
//delay(5);
}
// UCSRB|=BIT(RXCIE); //接收完毕中断使能
}
查询方式
void USART_Received_Ir()
{
if(!( UCSRB&BIT(RXC)))//未接收到新数据
{return;}// 返回
RX_Buffer[i]=UDR;
// delay(5);
i++;
if(i==12)
{
i=0;
flag=1;
//delay(5);
}
}
然后我在主函数里
USART_Received_Ir();
if(flag==1)
{
flag=0;
USART_Send(RX_Buffer[0]);
delay(1);
USART_Send(RX_Buffer[1]);
delay(1);
USART_Send(RX_Buffer[2]);
}