OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 13067|回复: 6

STM8L串口发送问题

[复制链接]

12

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2014-3-6
在线时间
31 小时
发表于 2014-8-8 15:56:38 | 显示全部楼层 |阅读模式
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.

不知道为什么会出现这样的情况,会不会是因为初始化配置问题吗?
求各位大神帮忙看下我的问题出在哪里?小弟感激不尽

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-8-8 23:21:52 | 显示全部楼层
回复

使用道具 举报

12

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2014-3-6
在线时间
31 小时
 楼主| 发表于 2014-8-11 09:41:52 | 显示全部楼层
没有人有用过STM8L的串口吗?
回复

使用道具 举报

12

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2014-3-6
在线时间
31 小时
 楼主| 发表于 2014-8-11 10:57:09 | 显示全部楼层
或者有没有谁有STM8L15X的串口通信代码给分享下看看?
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2014-9-9
在线时间
6 小时
发表于 2014-9-10 15:50:21 | 显示全部楼层
USART1->DR = TxBuffer1+'0';
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2014-11-1
在线时间
2 小时
发表于 2015-4-20 11:19:02 | 显示全部楼层
回复【3楼】xiaosi204:
---------------------------------
刚搞出来串口通信,你是不是波特率没选择正确?
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2012-9-12
在线时间
3 小时
发表于 2015-4-20 17:35:28 | 显示全部楼层
USART_Init(USART1,9600, USART_WordLength_8b,   


我看库里是  8D 不是 8b
目前处于stm32学习中,初学者水平,来论坛的目的就是找资料学习。希望遇到高手指点~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表