您好,
我的问题是,当我打印寄存器 Pend_5的值时,我会得到0x1000和0x800 (有时都是0x1800)
Pend 寄存器用于160到191的中断,这些中断在 hw_ints.h 中定义如下:
//***************************************************************************** // // hw_ints.h - Macros that define the interrupt assignment on CC3200. // //***************************************************************************** #ifndef __HW_INTS_H__ #define __HW_INTS_H__ //***************************************************************************** // // The following are defines for the fault assignments. // //***************************************************************************** #define FAULT_NMI 2 // NMI fault #define FAULT_HARD 3 // Hard fault #define FAULT_MPU 4 // MPU fault #define FAULT_BUS 5 // Bus fault #define FAULT_USAGE 6 // Usage fault #define FAULT_SVCALL 11 // SVCall #define FAULT_DEBUG 12 // Debug monitor #define FAULT_PENDSV 14 // PendSV #define FAULT_SYSTICK 15 // System Tick //***************************************************************************** // // The following are defines for the interrupt assignments. // //***************************************************************************** #define INT_GPIOA0 16 // GPIO Port S0 #define INT_GPIOA1 17 // GPIO Port S1 #define INT_GPIOA2 18 // GPIO Port S2 #define INT_GPIOA3 19 // GPIO Port S3 #define INT_UARTA0 21 // UART0 Rx and Tx #define INT_UARTA1 22 // UART1 Rx and Tx #define INT_I2CA0 24 // I2C controller #define INT_ADCCH0 30 // ADC Sequence 0 #define INT_ADCCH1 31 // ADC Sequence 1 #define INT_ADCCH2 32 // ADC Sequence 2 #define INT_ADCCH3 33 // ADC Sequence 3 #define INT_WDT 34 // Watchdog Timer0 #define INT_TIMERA0A 35 // Timer 0 subtimer A #define INT_TIMERA0B 36 // Timer 0 subtimer B #define INT_TIMERA1A 37 // Timer 1 subtimer A #define INT_TIMERA1B 38 // Timer 1 subtimer B #define INT_TIMERA2A 39 // Timer 2 subtimer A #define INT_TIMERA2B 40 // Timer 2 subtimer B #define INT_FLASH 45 // FLASH Control #define INT_TIMERA3A 51 // Timer 3 subtimer A #define INT_TIMERA3B 52 // Timer 3 subtimer B #define INT_UDMA 62 // uDMA controller #define INT_UDMAERR 63 // uDMA Error #define INT_SHA 164 // SHA #define INT_AES 167 // AES #define INT_DES 169 // DES #define INT_MMCHS 175 // SDIO #define INT_I2S 177 // McAPS #define INT_CAMERA 179 // Camera #define INT_NWPIC 187 // Interprocessor communication #define INT_PRCM 188 // Power, Reset and Clock Module #define INT_SSPI 191 // Shared SPI #define INT_GSPI 192 // Generic SPI #define INT_LSPI 193 // Link SPI //***************************************************************************** // // The following are defines for the total number of interrupts. // //***************************************************************************** #define NUM_INTERRUPTS 195 //The above number plus 2? //***************************************************************************** // // The following are defines for the total number of priority levels. // //***************************************************************************** #define NUM_PRIORITY 8 #define NUM_PRIORITY_BITS 3
并且数据表中的 Pend5位0对应于中断160,位31对应于中断191,因此对于0x1000 (即位12),它对应于中断号172,对于0x800 (即位11),它对应于中断号171, 但在.h 文件中,我没有这些中断
我做了一些关于 Pend_x 寄存器位标志的研究,在技术参考手册(链接)的第60页中,我找到了这份中断列表,在.h 文件中发现了这种情况(顺便说一下,标题来自示例) (我注意到数字被偏移16)因此对于中断171,它是网络中断,但中断号172仍然不存在。
这就是为什么我在寻找 Pend 0到5寄存器中每个位的正确位标识,特别是 Pend 5 (中断172)中的位12,或者至少是 Pend 5寄存器的值为0x1000的原因?
此致。