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