stm32单片机的同级中断最多能叠加多少,比如说我的串口波特率很高,中断服务程序又需要相对比较长的时间,那么当我串口数据不断传入,导致中断不断产生,这时可能第一个中断服务程序还没执行完,这样是否会导致丢包。
51单片机只有两个中断优先级,那是否意味一个程序中只能有两个中断?如果不是,那如果程序中同时有五个中断产生,会发生什么情况?
不会同时处理两个中断的吧 一个一个来
中断程序的编制要求中就有一条是,尽量快的完成中断,不要进行复杂的操作。如你描述的STM32的中断情况,第一个中断没有执行完,这时触发了串口中断,如果你的串口的中断优先级比第一个中断程序的高,那么就会跳转到串口的中断程序中执行。如你描述的串口的波特率比较高,担心串口传输数据时串口中断的处理时间过长,这个要看你传输的数据的大小,如你所说你的串口波特率比较高,相应的数据就传的快,只有在大量数据传输的时候才会发生你说的情况。再者,你可以自己编一个小程序测试一下你最大数据量传输时所需的时间,如果这个时间长到影响其它中断的运行的话,你就要修改程序,避免在串口传输大量数据时处理其它的中断。51单片机优先级只有两个,并不意味着只有两个中断触发源,具体的要查看技术文档;如果同时有5个中断触发,那么就要根据优先级决定中断执行的先后顺序,同等优先级的根据触发时间决定执行顺序。记住单片机程序都是单线程的,也就是程序是一步一步执行的,不会同时执行多个任务,即使是中断,也是从主程序中跳到中断程序中执行,执行结束后又跳回到主程序中。