中级会员
- 积分
- 292
- 金钱
- 292
- 注册时间
- 2014-3-6
- 在线时间
- 31 小时
|
5金钱
小弟最近初学STM8L152c6系列的单片机,在进行串口实验的时候,发现单片机串口发送给PC端的字符是乱码,而PC发送给单片机,然后单片机返回给PC端,发现发送的字符回来的也是乱码,只有在发送的字符前面加0x。。。返回来的才对,求各位大神给看下代码哪里有问题。
void Uart_Init(void)
{
GPIO_Init(GPIOC,GPIO_Pin_2,GPIO_Mode_In_PU_No_IT);
GPIO_Init(GPIOC,GPIO_Pin_3,GPIO_Mode_Out_PP_Low_Fast);
CLK_PeripheralClockConfig(CLK_Peripheral_USART1,ENABLE);
USART_DeInit(USART1);
USART_Init(USART1,9600, USART_WordLength_8b, USART_StopBits_1,
USART_Parity_No, USART_Mode_Rx|USART_Mode_Tx);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_Cmd(USART1, ENABLE);
enableInterrupts();
}
@far @interrupt void USART_RX_IRQHandler (void) //28
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
DATA_Buf=USART_ReceiveData8(USART1);
USART1->DR = DATA_Buf; //写入要发送的数
}
}
u8 TxBuffer1[] = "This is STM8L15 UART1 Say Hello!";
for(i=0;i<sizeof(TxBuffer1);i++)
{
USART1->DR = TxBuffer1;//发送TxBuffer1数组的字符
while((USART1->SR & 0x80) == 0x00);//查询发送缓冲区的字节是否已经发送出去
}
单片机单纯发送这组数据的时候,返回来的如下图
用PC给单片机返回的是下图
字符前面加0x的时候如下图所示
PC发送字符给单片机的时候是前八个字节出现乱码
发送:1234567890123456789azxcv
返回:L&??:90123456789azxcv
发送:0x1234567890123456789azxcv
返回:1234567890123456789azxcv
单片机主动发送的话,PC端接收到的完全是乱码
单片机主动发送:1234567890123456789azxcv
返回:9.?????搼??煗??棔????=9.
不知道为什么会出现这样的情况,会不会是因为初始化配置问题吗?
求各位大神帮忙看下我的问题出在哪里?小弟感激不尽
|
|