野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18372|回复: 3

USART中断问题

[复制链接]
发表于 2013-8-20 09:54:01 | 显示全部楼层 |阅读模式
我的想法是没次进入中断我都亮一下LED用来得知进入中断了。我发送abcd,按道理是要进入4次中断,但是输出结果是abb
3次,而且数据还不对
[img]file:///C:\Users\ADMINI~1\AppData\Local\Temp\)SC5BVG@Z77TFAZI3REO[}R.gif[/img]但是我发送1个或者2个字符就对了  。是不是中断时间太长了?
,但是我感觉应该是代码的BUG?

回复

使用道具 举报

 楼主| 发表于 2013-8-20 09:57:16 | 显示全部楼层
代码如下
c=USART1->DR;
            printf("%c",c);    //将接受到的数据直接返回打印
                        LED1(ON);  //没发送一个数据就亮一下灯
      Delay(0x00FFFFFF);
      LED1(OFF);       
            Delay(0x00FFFFFF);
回复 支持 反对

使用道具 举报

发表于 2013-8-20 12:31:58 | 显示全部楼层
中断里,仅仅存储了数据,然后就退出,别处理太多事情,否则处理过程可能 FIFO 满了,接收不了 剩下的数据
回复 支持 反对

使用道具 举报

发表于 2013-8-21 15:15:17 | 显示全部楼层
发数据时间和接受数据时间不一致,导致数据覆盖,建议搞个DMA收到立马存到N个字节的FIFO缓冲区,收发都用中断,如果有必要可以两个中断进行互斥
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 07:02 , Processed in 0.025960 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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