GPS Device
Loading...
Searching...
No Matches
Cortex-M4 NVIC API

Public API for enabling and disabling NVIC interrupt lines. More...

Collaboration diagram for Cortex-M4 NVIC API:

Functions

void nvic_set_interrupt (IRQn_te interrupt_line, EN_STATUS_te en_status)
 Enables or disables an interrupt line in the NVIC.

Detailed Description

Public API for enabling and disabling NVIC interrupt lines.

Function Documentation

◆ nvic_set_interrupt()

void nvic_set_interrupt ( IRQn_te interrupt_line,
EN_STATUS_te en_status )

Enables or disables an interrupt line in the NVIC.

Writes to the appropriate NVIC_ISER register bit to enable the interrupt, or to the NVIC_ICER register bit to disable it. The correct register word is selected automatically based on the interrupt line number.

Supports interrupt lines 0–287 (register words 0–7).

Parameters
[in]interrupt_lineThe interrupt line number to configure (IRQn_te).
[in]en_statusENABLE to enable the interrupt line, DISABLE to disable it.
Note
Writing 0 to ISER or ICER bits has no effect; only setting bits takes action, so no read-modify-write is required.
See also
nvic_set_interrupt

Definition at line 23 of file arm_cortex_m4_nvic.c.

23 {
24 if(en_status == ENABLE) {
25 if(interrupt_line < 32)
26 NVIC_ISER->NVIC_ISER_[0] |= 1u << interrupt_line;
27 else if(interrupt_line < 64)
28 NVIC_ISER->NVIC_ISER_[1] |= 1u << (interrupt_line % 32);
29 else if(interrupt_line < 96)
30 NVIC_ISER->NVIC_ISER_[2] |= 1u << (interrupt_line % 32);
31 else if(interrupt_line < 128)
32 NVIC_ISER->NVIC_ISER_[3] |= 1u << (interrupt_line % 32);
33 else if(interrupt_line < 160)
34 NVIC_ISER->NVIC_ISER_[3] |= 1u << (interrupt_line % 32);
35 else if(interrupt_line < 192)
36 NVIC_ISER->NVIC_ISER_[4] |= 1u << (interrupt_line % 32);
37 else if(interrupt_line < 224)
38 NVIC_ISER->NVIC_ISER_[5] |= 1u << (interrupt_line % 32);
39 else if(interrupt_line < 256)
40 NVIC_ISER->NVIC_ISER_[6] |= 1u << (interrupt_line % 32);
41 else if(interrupt_line < 288)
42 NVIC_ISER->NVIC_ISER_[7] |= 1u << (interrupt_line % 32);
43 }
44 else if(en_status == DISABLE) {
45 if(interrupt_line < 32)
46 NVIC_ICER->NVIC_ICER_[0] |= 1u << interrupt_line;
47 else if(interrupt_line < 64)
48 NVIC_ICER->NVIC_ICER_[1] |= 1u << (interrupt_line % 32);
49 else if(interrupt_line < 96)
50 NVIC_ICER->NVIC_ICER_[2] |= 1u << (interrupt_line % 32);
51 else if(interrupt_line < 128)
52 NVIC_ICER->NVIC_ICER_[3] |= 1u << (interrupt_line % 32);
53 else if(interrupt_line < 160)
54 NVIC_ICER->NVIC_ICER_[3] |= 1u << (interrupt_line % 32);
55 else if(interrupt_line < 192)
56 NVIC_ICER->NVIC_ICER_[4] |= 1u << (interrupt_line % 32);
57 else if(interrupt_line < 224)
58 NVIC_ICER->NVIC_ICER_[5] |= 1u << (interrupt_line % 32);
59 else if(interrupt_line < 256)
60 NVIC_ICER->NVIC_ICER_[6] |= 1u << (interrupt_line % 32);
61 else if(interrupt_line < 288)
62 NVIC_ICER->NVIC_ICER_[7] |= 1u << (interrupt_line % 32);
63 }
64}
@ ENABLE
Definition common.h:100
@ DISABLE
Definition common.h:97
Here is the caller graph for this function: