引用: 引用 2 楼 xiaogang2000 的回复:
谢谢shuiyan 的指教。
如果是“中断时被唤醒执行相应功能”这样的做法的话,那当下一个中断来了,而我还没有处理完上一个中断的数据,这种情况我该怎么办?
还有,一般情况下,中断处理双口ram收发数据的流程是怎样的?谢谢大家指导
在中断中不要做太多的事情,越简单越好,这个原则和单片机设计中是一致的。而中断线程才是真正进行中断处理的一段程序。
中断线程,其实已经不是中断程序了,和普通的线程都是同样的等级,会被系统任务调度管理的。在这里面做任何事都不会造成系统阻塞。
不过,正如你所担心的:一个未处理完,下一个来了怎么办?
首先,中断来了,是通知CPU可以做处理了(读写外部RAM),但是并不是说,CPU必须立即去处理。操作的主动权在CPU,中断标志位会被置位,直到中断线程完成一次处理,可以进行下一次处理。
然后,你算一下,以现在CPU的运算速度,到底有多少可能会发生这样的中断事件拥挤?当然,如果你的cpu是从端,对数据的处理没那么快,可能会碰到,不过中断的设计,本来就是为了防止数据处理不及时造成的数据丢失,只要不去处理,中断就一直悬而未决,而数据就一直保持着。这也是双口RAM的一个标准。