中断 ------ 中断方式

一、中断与轮询区别(无DMA)

| | | | |

特性 轮询方式 (Polling) 中断方式 (Interrupt) DMA方式 (Direct Memory Access)
CPU参与度 CPU主动、持续询问设备状态 CPU被动等待,设备就绪后通知CPU CPU仅启动和收尾参与,传输过程完全脱离
响应时机 取决于轮询频率(有延迟) 设备就绪立即触发(响应快) DMA控制器直接响应,无需CPU介入
CPU效率 低------CPU不断"空转"检查 高------CPU可并行处理其他任务 最高------CPU全程不参与数据传输
实现复杂度 简单,纯软件实现 较复杂,需要硬件支持中断控制器 最复杂,需要独立DMA控制器和总线仲裁
适用场景 设备状态变化快、简单系统 设备状态变化慢、多任务系统 高速大批量数据传输(磁盘、网络、显卡)

二、三种IO

类比方式

|---------|----------------------------|
| 轮询 | 每分钟刷新物流页面,啥事干不了 |
| 中断 | 手机做别的事,快递到了接电话去开门(但每次只送一件) |
| DMA | 告诉门卫"整批货直接放仓库,搬完叫我",自己完全不管 |

三、代码示意

// 轮询方式:CPU忙等

while (device_status != READY) {

// 空循环,CPU被占用

}

read_data();

// 中断方式:CPU做其他事,设备就绪后触发中断处理

// 主程序

while (1) {

do_other_work(); // 正常执行

}

// 中断服务程序(ISR)

void ISR() {

read_data(); // 设备就绪时自动执行

}

四、中断参考代码

cpp 复制代码
#include "exynos_4412.h"
int main()
{
	//将GPX1_1设置成中断功能
	GPX1.CON=GPX1.CON &(~(0xF<<4)) |(0xF<<4);
	//设置GPX1_1中断触发方式
	EXT_INT41_CON=EXT_INT41_CON &(~(0x7<<4)) |(0x2 <<4)
	//使能GPX1_1中断功能
	EXT_INT41_MASK=EXT_INT41_MASK &(~(1<<1));
	return 0;
}
相关推荐
芯岭技术9 小时前
PY32L020系列32位MCU,超低功耗、高性价比,支持三种低功耗模式
单片机·嵌入式硬件
危桥带雨14 小时前
RTC理论知识
stm32·单片机·嵌入式硬件·实时音视频
ElfBoard16 小时前
飞凌精灵(ElfBoard)技术贴|如何在RK3506开发板上实现UART功能复用
大数据·linux·人工智能·驱动开发·单片机·嵌入式硬件·物联网
踏着七彩祥云的小丑17 小时前
嵌入式——认识电子元器件——二极管系列
单片机·嵌入式硬件
Jack_022017 小时前
基于51单片机的智能电动窗帘控制OLED显示设计
单片机·嵌入式硬件·51单片机·智能家居·oled显示·电动窗帘
芯希望20 小时前
芯伯乐XOPA340/XOPA2340/XOPA4340系列11MHz低噪声CMOS运放,高性能与低功耗的理想平衡
单片机·嵌入式硬件·dc-dc·工业控制·国产替代·电源管理·xblw芯伯乐
LCMICRO-1331084774620 小时前
长芯微LCMDC8588完全P2P替代ADS8588,是一款16位、8通道同步采样的逐次逼近型(SAR)模数转换器
stm32·单片机·嵌入式硬件·fpga开发·硬件工程·模数转换器
誰能久伴不乏20 小时前
SPI总线通信协议基础与ICM20607传感器驱动开发指南
arm开发·c++·驱动开发·嵌入式硬件·arm
进击的小头21 小时前
第17篇:嵌入式通用串行外设:UART_SPI_I2C接口原理与外设扩展应用
单片机·嵌入式硬件
LCG元21 小时前
STM32实战:基于FreeRTOS的LVGL嵌入式GUI移植(智能手表界面)
stm32·嵌入式硬件·智能手表