OpenEdv-开源电子网

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

往串口中断服务函数中加入LED灯闪烁函数,数据发送出现问题

[复制链接]

24

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2019-11-8
在线时间
62 小时
发表于 2019-11-17 21:03:14 | 显示全部楼层 |阅读模式
2金钱
往如图串口中断服务函数中加入LED灯闪烁函数,发送数据“正电原子”,只能返回“正”字,LED灯会闪烁两次。如果将LED灯函数放入主函数,如图注释部分,就可以实现接受完毕数据LED灯闪烁一次。谢谢好心解答
3.png
2.png
1.png

串口中断实验.rar

4.64 MB, 下载次数: 37

最佳答案

查看完整内容[请看2#楼]

中断里面不要搞其他的,只接受数据。对数据的处理和其他的操作放到主程序去。 中断里面的LED操作延时200ms,波特率115200,你的数据早发完了但是你的延时200ms还远没结束呢
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6666
金钱
6666
注册时间
2015-8-25
在线时间
1035 小时
发表于 2019-11-17 21:03:15 | 显示全部楼层
中断里面不要搞其他的,只接受数据。对数据的处理和其他的操作放到主程序去。
中断里面的LED操作延时200ms,波特率115200,你的数据早发完了但是你的延时200ms还远没结束呢
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

24

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2019-11-8
在线时间
62 小时
 楼主| 发表于 2019-11-19 21:27:27 | 显示全部楼层
有人帮忙看看吗,谢谢啦!!
回复

使用道具 举报

6

主题

45

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
221
金钱
221
注册时间
2019-10-23
在线时间
58 小时
发表于 2019-11-20 15:46:09 | 显示全部楼层
你这可以换一种方式搞啊

bool flag = false;

中断处理函数里面  flag = true;

while(1)
{
     if(flag)
     {
           你的函数
           flag = false;
     }
}
回复

使用道具 举报

25

主题

180

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2015-1-14
在线时间
152 小时
发表于 2019-11-21 17:01:54 | 显示全部楼层
中断里面哪能处理那么耗时的,中断就是能不放里面的就不放里面,置个标志位就行了,让其他任务去处理不就可以了吗?
回复

使用道具 举报

24

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2019-11-8
在线时间
62 小时
 楼主| 发表于 2019-11-22 23:08:34 | 显示全部楼层
szczyb1314 发表于 2019-11-20 11:43
中断里面不要搞其他的,只接受数据。对数据的处理和其他的操作放到主程序去。
中断里面的LED操作延时200ms ...

谢谢您的回复,我还想请问一下他这个数据发送具体流程是什么呢???难道是只能一股脑儿发送,期间不能停止吗??
回复

使用道具 举报

24

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2019-11-8
在线时间
62 小时
 楼主| 发表于 2019-11-22 23:10:04 | 显示全部楼层
Mrjiang 发表于 2019-11-21 17:01
中断里面哪能处理那么耗时的,中断就是能不放里面的就不放里面,置个标志位就行了,让其他任务去处理不就可 ...

我就是有点小疑惑,这是约定俗成吗??
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6666
金钱
6666
注册时间
2015-8-25
在线时间
1035 小时
发表于 2019-12-4 08:41:54 | 显示全部楼层
151l 发表于 2019-11-22 23:10
我就是有点小疑惑,这是约定俗成吗??

中断的要求是快进快出,本来中断就是打断了CPU的正常执行而去执行的中断,只有快速的进入并快速的退出才能对正常的任务执行影响最小。
所以中断里不要做其他的事,只执行一些必须的操作,尤其不要在中断里面调用死循环构成的延时函数,你在中断死循环等待延时主程序直接就卡住了,其他的事件放到主程序去执行。
串口的接收中断里面加入延时,你的延时不结束,这一字节的接收就没完成,就不会去接收下一字节,在你延时的同时串口调试助手可是按照波特率在发送,人家早都发完了你单片机还在延时呢
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

24

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2019-11-8
在线时间
62 小时
 楼主| 发表于 2019-12-4 10:18:58 | 显示全部楼层
szczyb1314 发表于 2019-12-4 08:41
中断的要求是快进快出,本来中断就是打断了CPU的正常执行而去执行的中断,只有快速的进入并快速的退出才 ...

好的好的,谢谢您的详细解答
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 04:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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