打印

STM32串口立即收发失败

[复制链接]
1811|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
BRUCE_G|  楼主 | 2012-4-20 08:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是想收到一个字符立即把这个字符又发送出去,但情况是有成功的,但也有失败的,1秒发送一次的的情况发送几十次后发现收发数量是不一直的,时间长了还会死机。调试很长时间都还是不知道哪里有问题的,主程序已经删到没东西了,就一个while(1){}  和串口的基本配置,别的什么都没了。

void USART1_IRQHandler(void)
{

  if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
    {
  Receive_buffer=USART_ReceiveData(USART1);
  USART_SendData(USART1,Receive_buffer);
   while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);  
          USART_ClearITPendingBit(USART1,USART_IT_RXNE);     }

}
沙发
fq1110| | 2012-4-20 11:47 | 只看该作者
建议把发送不要放在接收中断里试试。你用个缓冲区,把收到的先保存下来,然后再在发送中断里将之发出去。
还有你要确认收发两端的波特率,奇偶校验,数据位,停止位是否一致。

使用特权

评论回复
板凳
BRUCE_G|  楼主 | 2012-4-23 14:04 | 只看该作者
为什么不能这样做啊?那样的话是半双工的模式了

使用特权

评论回复
地板
mage心寒| | 2012-4-23 16:17 | 只看该作者
3# BRUCE_G
串口中断处理的时间只有你设置的波特率的那样的时间间隔,如果你串口中断里面太长,程序还没有跑完就出去了,接收就会有问题,中断一般都是只是简单的判断下不做处理,你可以新建一个函数专门处理从串口中断接收到的数据,当然你可以放到while(1)里面,反正不管怎样最后我们的程序都是在那里面跑的。。亲。。加油。。我的是stm32f2xx系列的需要可以给你代码。。跟10x有点区别,不是很大,时钟总线挂的外设有点变话。。上周四刚学也不是很懂,,:D

使用特权

评论回复
5
BRUCE_G|  楼主 | 2012-4-23 16:39 | 只看该作者
没懂,程序改成下面没进入一次中断读出数据后,读计数加1,返回这个累计数,返回的数字和我发送的数目都一样,但返回的数目就不是了,不是每次执行完累计后都能把字符发送出去。

if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
    {
  Receive_buffer=USART_ReceiveData(USART1);
  Receive_Count++;
  USART_SendData(USART1,Receive_Count);
   while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);  
          USART_ClearITPendingBit(USART1,USART_IT_RXNE);     
    }

使用特权

评论回复
6
fq1110| | 2012-4-26 18:50 | 只看该作者
你把while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);  
改成while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);  
这样,试下。

使用特权

评论回复
7
BRUCE_G|  楼主 | 2012-4-26 22:56 | 只看该作者
楼上试过,情况依旧

使用特权

评论回复
8
笨笨de幸福_| | 2012-4-27 15:01 | 只看该作者
你可以再中断中只处理两件事:置个接收标志位,清中断标志位;
在while(1){} 中发送数据   试下

使用特权

评论回复
9
chhaich| | 2012-4-28 14:33 | 只看该作者
发送的可以不用中断,只开接收中断。接收到一个数据后保存到一个地方去,接收中断退出后在主程序里面查看有没有接收到数据,有接收到就把接收到的数据通过串口发送。

使用特权

评论回复
10
守望一个人| | 2013-5-10 11:08 | 只看该作者
我是按照串口的基本配置的,但是就是收不到数据!进不到接收中断中!不知道原因,

使用特权

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

本版积分规则

3

主题

72

帖子

1

粉丝