[mw_shl_code=c,true]void USART1_IRQHandler(void)
{
u8 res,data[16];
int res1,i=0,num=16,index=0;
if(USART_GetITStatus(USART1,USART_IT_RXNE))//判断接收到数据没
{
res= USART_ReceiveData(USART1);
res1=(int)res;//强制转化为int型
while(res1>0)//十进制转为二进制并存入data数组中
{
data[index] = res1%2+'0';//将INT变为char
res1 = res1/2;
index++;
}
while(i<num)//逐个发送data中的二进制数据
{
USART_SendData(USART1,data
);
while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);//等待发送完毕
i++;
}
}
}[/mw_shl_code]
先说说我代码想要实现的功能吧,电脑通过串口发送一个数据给单片机,单片机把这个数据转为ASCII数值,然后再将十进制的ASCII数值变为二进制存到数组data[16]中,最后单片机将data中的元素逐个通过串口发送给电脑。
但是发现会出现乱码,而且转化的二进制也不对,所以就来求助各位大侠了,我是个菜鸡,希望有所错误的地方请各位指出!下面是我电脑接收到乱码的图片
乱码
你确认下uart设置的波特率是不是115200
一周热门 更多>