INTC
简要说明
INTC(Interrupt Controller)中断控制器,将外围设备的合并到系统处理器的中断输出。用于管理外围设备中断的开启关闭、挂起、唤醒、优先级配置、系统中断源读取等。
接口描述
csi_intc_init
void csi_intc_init(void);
功能描述:
- 初始化中断控制器。
参数:
- 无
返回值:
- 无
csi_intc_enable_irq
void csi_intc_enable_irq(int32_t IRQn);
- 功能描述:
- 在INTC内使能特定设备的中断。
- 参数:
- IRQn: 中断向量号。
- 返回值:
- 无
csi_intc_disable_irq
void csi_intc_disable_irq(int32_t IRQn);
- 功能描述:
- 在INTC内关闭特定设备的中断。
- 参数:
- IRQn: 中断向量号。
- 返回值:
- 无
csi_intc_get_pending_irq
uint32_t csi_intc_get_pending_irq(int32_t IRQn);
- 功能描述:
- 读取INTC的挂起寄存器,并返回指定中断的挂起位。
- 参数:
- IRQn: 中断向量号。
- 返回值:
- 0:当前中断没有挂起
- 1:当前中断被挂起
csi_intc_set_pending_irq
void csi_intc_set_pending_irq(int32_t IRQn);
- 功能描述:
- 设置外部中断的挂起位。
- 参数:
- IRQn: 中断向量号。
- 返回值:
- 无
csi_intc_clear_pending_irq
void csi_intc_clear_pending_irq(int32_t IRQn);
- 功能描述:
- 清除指定外部中断的挂起位。
- 参数:
- IRQn: 中断向量号。
- 返回值:
- 无
csi_intc_get_wakeup_irq
uint32_t csi_intc_get_wakeup_irq(int32_t IRQn);
- 功能描述:
- 读取INTC中的唤醒寄存器,并返回指定中断的挂起位。
- 参数:
- IRQn: 中断向量号。
- 返回值:
- 0:没有设置唤醒中断
- 1:已设置唤醒唤醒中断
csi_intc_set_wakeup_irq
void csi_intc_set_wakeup_irq(int32_t IRQn);
- 功能描述:
- 设置外部中断的中断唤醒位。
- 参数:
- IRQn: 中断向量号。
- 返回值:
- 无
csi_intc_clear_wakeup_irq
void csi_intc_clear_wakeup_irq(int32_t IRQn);
- 功能描述:
- 清除外部中断的中断唤醒位。
- 参数:
- IRQn: 中断向量号。
- 返回值:
- 无
csi_intc_get_active
uint32_t csi_intc_get_active(int32_t IRQn);
- 功能描述:
- 读取指定中断的活跃状态。
- 参数:
- IRQn: 中断向量号。
- 返回值:
- 0:中断未激活
- 1:中断已激活
csi_intc_set_threshold
void csi_intc_set_threshold(uint32_t VectThreshold, uint32_t PrioThreshold);
- 功能描述:
- 设置INTC的中断矢量阈值和中断优先级阈值。
- 参数:
- VectThreshold: 中断向量阈值,中断向量号最大值。
- PrioThreshold:中断优先级阈值,中断优先级最大数值。
- 返回值:
- 无
csi_intc_set_prio
void csi_intc_set_prio(int32_t IRQn, uint32_t priority);
- 功能描述:
- 设置外部中断的中断优先级。(部分核心中断的优先级不能设置)
- 参数:
- IRQn: 中断向量号。
- priority:中断优先级。
- 返回值:
- 无
csi_intc_get_prio
uint32_t csi_intc_get_prio(int32_t IRQn);
- 功能描述:
- 读取指定中断向量的中断优先级。中断号可以是正数来指定外部(特定于设备的)中断,也可以是负数来指定内部(核心)中断。
- 参数:
- IRQn: 中断向量号。
- 返回值:
- 中断优先级
csi_intc_ack_irq
int csi_intc_ack_irq(int32_t IRQn);
- 功能描述:
- 用于系统应答中断,该函数由中断系统内部调用。
- 参数:
- IRQn: 中断向量号。
- 返回值:
- 0:应答成功
- 1:应答失败
csi_intc_set_attribute
int csi_intc_set_attribute(int32_t IRQn, uint32_t priority, int_trigger_mode_t trigger_mode)
- 功能描述:
- 设置中断属性。
- 参数:
- IRQn: 中断向量号。
- priority:中断优先级
- trigger_mode:中断触发模式,参见trigger_mode定义。
- 返回值:
- 0:设置成功
- 1:设置失败
trigger_mode:
名字 | 定义 | 备注 |
---|---|---|
INT_MODE_LOW_LEVEL | 低电平触发 | |
INT_MODE_HIGH_LEVEL | 高电平触发 | |
INT_MODE_RISING_EDGE | 上升沿触发 | |
INT_MODE_FALLING_EDGE | 下降沿触发 | |
INT_MODE_DOUBLE_EDGE | 任意边沿触发 |
csi_intc_set_vector
void csi_intc_set_vector(int32_t IRQn, uint32_t handler);
- 功能描述:
- 设置中断处理函数。
- 参数:
- IRQn: 中断向量号。
- handler:中断处理函数的地址。
- 返回值:
- 无
csi_intc_get_vector
uint32_t csi_intc_get_vector(int32_t IRQn);
- 功能描述:
- 读取中断向量对应的中断处理函数。
- 参数:
- IRQn: 中断向量号。
- 返回值:
- 中断向量对应的处理函数地址。