• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

中断问题

大大的鱼 2018-08-14 浏览量:707
最近在用DMA传送ADC的数据,并且设置了一个数据传送完成DMA中断。但是问题来了,在中断里调用显示函数的时候总是莫名奇妙的会出错。在网上查了下说是共享变量的问题,导致主函数和中断函数冲突了。但是我调用的显示函数并没有更改变量的值啊。
然后我用一个变量赋值语句放在主函数调用显示函数的前、后。主函数里调用显示函数时变量赋值为“忙”,调用完之后赋值为“空闲”。然后在中断函数里用这个全局变量判断是否主函数调用了显示函数。这就避免了冲突。

但是,这就会错过很多次中断,请问各位大佬怎么解决!
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案

  • 这个应该还是显示函数中变量冲突的问题,
    主函数也调用,中断函数里也调用,
    试想主函数调用一半的时候来了中断,中断里又调用可能会有冲突。
    解决的办法,在中断里尽量不要调用显示函数。
    显示函数是比较耗时的,为什么非要在中断调用呢?反正主函数也要调用的。
    可以在中断函数中设置一个标志,
    然后在主函数中查看这个标志,
    根据标志的不同来处理显示的工作。
    • 发布于 2018-08-14
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:7
  • 中断里面不要做这种阻塞性的业务,这些业务应该用一个标志位放到常规任务里面去运行
    • 发布于2018-08-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 需要用到操作系统里面的信号量,解决资源共享问题
    • 发布于2018-08-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个中断里面最好是做一个互斥锁,对你的资源进行保护,防止被其他线程修改
    • 发布于2018-08-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 中断函数要尽可能的短,不能长时间的处理,不然你的任务会得不到及时响应
    • 发布于2018-08-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 中断的的时间不能太长,而且要对资源保护,不能随意访问
    • 发布于2018-08-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 本身中断里面的函数就是不可以有延时性太高的操作存在的,你显示屏刷屏,要比中断处理的速度慢得多,你在中断里面调用显示屏显示,会大大影响中断的处理速度,所以数据就出错了。
    • 发布于2018-08-30
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

中断问题