7.13. INTERRUPT
Overview
提供系统中断应用示例、常用相关 API 介绍和常见问题。
7.13.1. 应用示例
示例演示:
example: 进入 apps/demo/demo_DevKitBoard/include/demo_config.h
,开启宏 USE_INTERRUPT_TEST_DEMO
。
Note
1.通常安装中断使用request_irq,优先级为1-7, 越大优先级越高,cpu_id为安装到哪一个核去响应中断
2.SDK库内部已经安装好中断, 如果用户需要修改中断的优先级和安装核, 可以在app_main.c的irq_info_table强行修改对应的中断号,例如:
/*中断列表 */ const struct irq_info irq_info_table[] = { { IRQ_TIMER4_IDX, 2, 1 }, //此中断强制配置为优先级为2,并且安装到cpu1
3.当用户想统一某些中断注册到核1,某些中断注册到核0,可以在app_main.c的irq_info_table配置,例如:
const struct irq_info irq_info_table[] = { { IRQ_SOFT5_IDX, 7, 0 }, //此中断强制注册到cpu0 { IRQ_SOFT4_IDX, 7, 1 }, //此中断强制注册到cpu1 { -2, -2, -2 },//如果加入了该行, 那么只有该行之前的中断注册到对应核, 其他所有中断强制注册到CPU0
7.13.2. 常见问题
7.13.3. API Reference
IRQ select
-
IRQ_SDTAP_IDX
-
IRQ_EXCEPTION_IDX
-
IRQ_SYSCALL_IDX
-
IRQ_TICK_TMR_IDX
-
IRQ_TIMER0_IDX
-
IRQ_TIMER1_IDX
-
IRQ_TIMER2_IDX
-
IRQ_TIMER3_IDX
-
IRQ_USB_SOF_IDX
-
IRQ_USB_CTRL_IDX
-
IRQ_RTC_WDT_IDX
-
IRQ_ALNK_IDX
-
IRQ_ALNK1_IDX
-
IRQ_AUDIO_IDX
-
IRQ_PORT_IDX
-
IRQ_SPI0_IDX
-
IRQ_SPI1_IDX
-
IRQ_SD0_IDX
-
IRQ_SD1_IDX
-
IRQ_UART0_IDX
-
IRQ_UART1_IDX
-
IRQ_UART2_IDX
-
IRQ_PAP_IDX
-
IRQ_IIC_IDX
-
IRQ_SARADC_IDX
-
IRQ_SPI3_IDX
-
IRQ_GPC_IDX
-
IRQ_EMI_IDX
-
IRQ_OSA_IDX
-
IRQ_BLE_RX_IDX
-
IRQ_NFC_IDX
-
IRQ_AES_IDX
-
IRQ_RDEC_IDX
-
IRQ_MCTMRX_IDX
-
IRQ_CHX_PWM_IDX
-
IRQ_SPDETX
-
IRQ_CTM_IDX
-
IRQ_SPI2_IDX
-
IRQ_PLNK_IDX
-
IRQ_PLNK1_IDX
-
IRQ_BREDR_IDX
-
IRQ_BT_CLKN_IDX
-
IRQ_BT_DBG_IDX
-
IRQ_WL_LOFC_IDX
-
IRQ_LRCT_IDX
-
IRQ_BLE_EVENT_IDX
-
IRQ_SBC_IDX
-
IRQ_SS_IDX
-
IRQ_DMA_COPY_IDX
-
IRQ_PMU_PND0_IDX
-
IRQ_PMU_PND1_IDX
-
IRQ_LDMA_IDX
-
IRQ_WF_IDX
-
IRQ_USB1_SOF_IDX
-
IRQ_USB1_CTRL_IDX
-
IRQ_JPG_IDX
-
IRQ_SHA_IDX
-
IRQ_FFT_IDX
-
IRQ_SRC_IDX
-
IRQ_ISC0_IDX
-
IRQ_EQ_IDX
-
IRQ_WF_RSVD_IDX
-
IRQ_TIMER4_IDX
-
IRQ_TIMER5_IDX
-
IRQ_ISC1_IDX
-
IRQ_IMD_IDX
-
IRQ_SOFT0_IDX
-
IRQ_SOFT1_IDX
-
IRQ_SOFT2_IDX
-
IRQ_SOFT3_IDX
-
IRQ_SOFT4_IDX
-
IRQ_SOFT5_IDX
-
IRQ_SOFT6_IDX
-
IRQ_SOFT7_IDX
-
ISR_ENTRY
-
void request_irq(unsigned char index, unsigned char priority, void (*handler)(void), unsigned char cpu_id)
request_irq, 中断注册
- Parameters
index – : 使用的中断号,例如IRQ_TIMER0_IDX 等
priority – : 中断优先级0~7,越大优先级越高
handler – : 中断函数
cpu_id – : 中断注册到的cpu, 0是注册到cpu0,1是注册到cpu1,cpuid为0xff时注册到当前CPU。
-
void unrequest_irq(u8 index, u8 cpu_id)
unrequest_irq, 解除中断注册
- Parameters
index – : 使用的中断号,例如IRQ_TIMER0_IDX 等
cpu_id – : 中断注册到的cpu, 0是注册到cpu0,1是注册到cpu1