STM8L串口发送问题

2019-07-19 21:39发布

小弟最近初学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.

不知道为什么会出现这样的情况,会不会是因为初始化配置问题吗?
求各位大神帮忙看下我的问题出在哪里?小弟感激不尽
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-07-20 03:33
帮顶....
xiaosi204
2楼-- · 2019-07-20 08:41
 精彩回答 2  元偷偷看……
xiaosi204
3楼-- · 2019-07-20 11:12
或者有没有谁有STM8L15X的串口通信代码给分享下看看?
xin
4楼-- · 2019-07-20 13:15
USART1->DR = TxBuffer1+'0';
XXL
5楼-- · 2019-07-20 19:02
 精彩回答 2  元偷偷看……
zx3321569
6楼-- · 2019-07-20 21:03
USART_Init(USART1,9600, USART_WordLength_8b,   


我看库里是  8D 不是 8b

一周热门 更多>