打印
[STM32F1]

stm32和stm8串口通信问题

[复制链接]
1090|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
neonny|  楼主 | 2015-5-20 17:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        串口通信,stm8发送数据,stm32接收数据,两个IC波特率,停止位等设置一样。现在stm8数据发送正常,stm32接收单个字节也正常,但如果连续发送数据,接收就不准确了,请问是什么原因?stm32中断接收程序如下:
        void USART1_IRQHandler(void){
        if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
        {
                USART_ClearITPendingBit(USART1,USART_IT_RXNE);
                  bright = USART_ReceiveData(USART1);
        }
        /*溢出-如果发生溢出需要先读SR,再读DR寄存器 则可清除不断入中断的问题*/
        if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)==SET)
    {
        USART_ClearFlag(USART1,USART_FLAG_ORE);
        USART_ReceiveData(USART1);
    }
}
沙发
mmuuss586| | 2015-5-20 19:29 | 只看该作者
接收不正确:是接收不到数据,还是丢数据,还是无法进入中断呢?

使用特权

评论回复
板凳
尤彼卡| | 2015-5-20 20:25 | 只看该作者
会不会是时序问题

使用特权

评论回复
地板
desertsailor| | 2015-5-20 21:23 | 只看该作者
用中断接收的方式如果发送数据速度太快可能会丢数据

使用特权

评论回复
5
周董| | 2015-5-21 10:00 | 只看该作者
发生溢出需要先读SR,再读DR寄存器 。楼主再看看。

使用特权

评论回复
6
neonny|  楼主 | 2015-5-21 11:45 | 只看该作者
mmuuss586 发表于 2015-5-20 19:29
接收不正确:是接收不到数据,还是丢数据,还是无法进入中断呢?

是接收到是数据和最后发送的数据不一样

使用特权

评论回复
7
neonny|  楼主 | 2015-5-21 11:47 | 只看该作者
desertsailor 发表于 2015-5-20 21:23
用中断接收的方式如果发送数据速度太快可能会丢数据

把波特率调小,也无法解决这个问题

使用特权

评论回复
8
neonny|  楼主 | 2015-5-21 11:51 | 只看该作者
周董 发表于 2015-5-21 10:00
发生溢出需要先读SR,再读DR寄存器 。楼主再看看。

加了这两句,然后再这两句设置断点,不能进入,就表示没有溢出吧
/*溢出-如果发生溢出需要先读SR,再读DR寄存器 则可清除不断入中断的问题*/
        if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)==SET)
    {
        USART_ClearFlag(USART1,USART_FLAG_ORE);
        USART_ReceiveData(USART1);
    }

使用特权

评论回复
9
justtest111| | 2015-5-21 17:10 | 只看该作者
stm8和stm32的大小端是否一致?我没确认过,仅提问一下。

使用特权

评论回复
10
neonny|  楼主 | 2015-5-21 17:52 | 只看该作者
justtest111 发表于 2015-5-21 17:10
stm8和stm32的大小端是否一致?我没确认过,仅提问一下。

百度了一下大小端,应该不是这个问题吧,单个字节发送是可以正确读出来的,连续发送才不正确

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

8

帖子

0

粉丝