ZHDU116G January 2018 – June 2024 CC1312PSIP , CC1312R , CC1352P , CC1352R , CC2642R , CC2642R-Q1 , CC2652P , CC2652PSIP , CC2652R , CC2652RB , CC2652RSIP , CC2662R-Q1
两个系统级中断 RF_CPE0 和 RF_CPE1 可由 CPE 产生的许多低级中断生成。这些低级中断中的每一个都可使用 RFCPEISL 寄存器映射到 RF_CPE0 或 RF_CPE1。此外,可以使用 RFCPEIEN 寄存器打开和关闭系统级中断生成。
如果一个事件触发低电平中断,RFCPEIFG 寄存器中的相应位将设置为 1。每当 RFCPEIFG 中的某个位和 RFCPEIEN 中的相应位都为 1 时,RFCPEISL 中选择的系统级中断就会升高。这意味着中断服务例程 (ISR) 必须清除 RFCPEIFG 中与已经处理的低级中断相对应的位。
节 26.11.2 中 RFCPEIFG 的寄存器描述提供了可用中断的列表。
通过向这些位写入 0 来清除 RFCPEIFG 中的位,而写入 1 的任何位都保持不变。
当清除 RFCPEIFG 寄存器中的位时,如果执行读-修改-写操作,中断可能会丢失,因为在读和写操作之间变为活动的中断标志可能会丢失。因此,应按以下方式清除中断标志:
HWREG(RFC_DBELL_BASE + RFC_DBELL_O_RFCPEIFG) = ~(1 << irq_no);而不是以下方式:
HWREG(RFC_DBELL_BASE + RFC_DBELL_O_RFCPEIFG) &= ~(1 << irq_no); // wrong