单片机 中断 驱动
单片机I/O设备有哪几种主要的控制方式?
单片机如何实现当一个程序在访问一个I/O设备时,而不占用CPU呢?
回帖(1)
2022-1-26 14:04:32
单片机如何实现当一个程序在访问一个I/O设备时,而不占用CPU呢?
对于这个问题,我们先了解一下单片机I/O设备有哪几种主要的控制方式;
一、程序循环检测
基本思路:
在设备驱动程序当中,通过不断地检测I/O设备的当前状态,来控制一个I/O操作的完成。这种方式也称为是繁忙等待方式或轮询方式。
缺点:
在进行一个I/O操作的时候,要一直占用着CPU,这样就会浪费CPU的时间。
二、中断驱动方式
基本思路:
当一个用户任务需要进行I/O操作时,会去调用相应的系统函数,由这个函数来发起I/O操作,并将当前任务阻塞起来,然后调度其他的任务去使用CPU。当所需的I/O操作完成时,相应的设备就会向CPU发出一个中断,系统在中断处理程序当中,如果发现还有数据需要处理,就再次启动I/O 操作。
缺点:
在中断驱动的控制方式下,数据的每一次读写还是通过CPU来完成,只不过当I/O设备在进行数据处理时,CPU不必在那里等待,而是可以去执行其他任务。
三、直接内存访问方式
基本思路:
让DMA控制器来代替CPU,完成I/O设备与内存之间的数据传送,从而空出更多的CPU时间,去运行其他的任务。
优点:
减少中断的次数,使得I/O操作消耗的CPU时间变少。
单片机如何实现当一个程序在访问一个I/O设备时,而不占用CPU呢?
对于这个问题,我们先了解一下单片机I/O设备有哪几种主要的控制方式;
一、程序循环检测
基本思路:
在设备驱动程序当中,通过不断地检测I/O设备的当前状态,来控制一个I/O操作的完成。这种方式也称为是繁忙等待方式或轮询方式。
缺点:
在进行一个I/O操作的时候,要一直占用着CPU,这样就会浪费CPU的时间。
二、中断驱动方式
基本思路:
当一个用户任务需要进行I/O操作时,会去调用相应的系统函数,由这个函数来发起I/O操作,并将当前任务阻塞起来,然后调度其他的任务去使用CPU。当所需的I/O操作完成时,相应的设备就会向CPU发出一个中断,系统在中断处理程序当中,如果发现还有数据需要处理,就再次启动I/O 操作。
缺点:
在中断驱动的控制方式下,数据的每一次读写还是通过CPU来完成,只不过当I/O设备在进行数据处理时,CPU不必在那里等待,而是可以去执行其他任务。
三、直接内存访问方式
基本思路:
让DMA控制器来代替CPU,完成I/O设备与内存之间的数据传送,从而空出更多的CPU时间,去运行其他的任务。
优点:
减少中断的次数,使得I/O操作消耗的CPU时间变少。
举报
更多回帖