Contiki 3.x
|
Driver for the cc2538 NVIC controller. More...
Files | |
file | nvic.c |
Driver for the cc2538 NVIC All interrupt-related functionality is implemented here. | |
file | nvic.h |
Header file for the ARM Nested Vectored Interrupt Controller. | |
Functions | |
void | nvic_init () |
Initialises the NVIC driver. | |
void | nvic_interrupt_enable (uint32_t intr) |
Enables interrupt intr. More... | |
void | nvic_interrupt_disable (uint32_t intr) |
Disables interrupt intr. More... | |
void | nvic_interrupt_en_restore (uint32_t intr, uint8_t v) |
Enables interrupt intr if v > 0. More... | |
uint8_t | nvic_interrupt_en_save (uint32_t intr) |
Checks the interrupt enabled status for intr. More... | |
void | nvic_interrupt_pend (uint32_t intr) |
Sets intr to pending. More... | |
void | nvic_interrupt_unpend (uint32_t intr) |
Sets intr to no longer pending. More... | |
NVIC Interrupt assignments | |
#define | NVIC_INT_GPIO_PORT_A 0 |
GPIO port A. | |
#define | NVIC_INT_GPIO_PORT_B 1 |
GPIO port B. | |
#define | NVIC_INT_GPIO_PORT_C 2 |
GPIO port C. | |
#define | NVIC_INT_GPIO_PORT_D 3 |
GPIO port D. | |
#define | NVIC_INT_UART0 5 |
UART0. | |
#define | NVIC_INT_UART1 6 |
UART1. | |
#define | NVIC_INT_SSI0 7 |
SSI0. | |
#define | NVIC_INT_I2C 8 |
I2C. | |
#define | NVIC_INT_ADC 14 |
ADC. | |
#define | NVIC_INT_WDT 18 |
Watchdog Timer. | |
#define | NVIC_INT_GPTIMER_0A 19 |
GPTimer 0A. | |
#define | NVIC_INT_GPTIMER_0B 20 |
GPTimer 0B. | |
#define | NVIC_INT_GPTIMER_1A 21 |
GPTimer 1A. | |
#define | NVIC_INT_GPTIMER_1B 22 |
GPTimer 1B. | |
#define | NVIC_INT_GPTIMER_2A 23 |
GPTimer 2A. | |
#define | NVIC_INT_GPTIMER_2B 24 |
GPTimer 2B. | |
#define | NVIC_INT_ADC_CMP 25 |
Analog Comparator. | |
#define | NVIC_INT_RF_RXTX_ALT 26 |
RF TX/RX (Alternate) | |
#define | NVIC_INT_RF_ERR_ALT 27 |
RF Error (Alternate) | |
#define | NVIC_INT_SYS_CTRL 28 |
System Control. | |
#define | NVIC_INT_FLASH_CTRL 29 |
Flash memory control. | |
#define | NVIC_INT_AES_ALT 30 |
AES (Alternate) | |
#define | NVIC_INT_PKA_ALT 31 |
PKA (Alternate) | |
#define | NVIC_INT_SM_TIMER_ALT 32 |
SM Timer (Alternate) | |
#define | NVIC_INT_MAC_TIMER_ALT 33 |
MAC Timer (Alternate) | |
#define | NVIC_INT_SSI1 34 |
SSI1. | |
#define | NVIC_INT_GPTIMER_3A 35 |
GPTimer 3A. | |
#define | NVIC_INT_GPTIMER_3B 36 |
GPTimer 3B. | |
#define | NVIC_INT_UDMA 46 |
uDMA software | |
#define | NVIC_INT_UDMA_ERR 47 |
uDMA error | |
#define | NVIC_INT_USB 140 |
USB. | |
#define | NVIC_INT_RF_RXTX 141 |
RF Core Rx/Tx. | |
#define | NVIC_INT_RF_ERR 142 |
RF Core Error. | |
#define | NVIC_INT_AES 143 |
AES. | |
#define | NVIC_INT_PKA 144 |
PKA. | |
#define | NVIC_INT_SM_TIMER 145 |
SM Timer. | |
#define | NVIC_INT_MACTIMER 146 |
MAC Timer. | |
NVIC Register Declarations | |
#define | NVIC_EN0 0xE000E100 |
Interrupt 0-31 Set Enable. | |
#define | NVIC_EN1 0xE000E104 |
Interrupt 32-54 Set Enable. | |
#define | NVIC_EN2 0xE000E108 |
Interrupt 64-95 Set Enable. | |
#define | NVIC_EN3 0xE000E10C |
Interrupt 96-127 Set Enable. | |
#define | NVIC_EN4 0xE000E110 |
Interrupt 128-131 Set Enable. | |
#define | NVIC_DIS0 0xE000E180 |
Interrupt 0-31 Clear Enable. | |
#define | NVIC_DIS1 0xE000E184 |
Interrupt 32-54 Clear Enable. | |
#define | NVIC_DIS2 0xE000E188 |
Interrupt 64-95 Clear Enable. | |
#define | NVIC_DIS3 0xE000E18C |
Interrupt 96-127 Clear Enable. | |
#define | NVIC_DIS4 0xE000E190 |
Interrupt 128-131 Clear Enable. | |
#define | NVIC_PEND0 0xE000E200 |
Interrupt 0-31 Set Pending. | |
#define | NVIC_PEND1 0xE000E204 |
Interrupt 32-54 Set Pending. | |
#define | NVIC_PEND2 0xE000E208 |
Interrupt 64-95 Set Pending. | |
#define | NVIC_PEND3 0xE000E20C |
Interrupt 96-127 Set Pending. | |
#define | NVIC_PEND4 0xE000E210 |
Interrupt 128-131 Set Pending. | |
#define | NVIC_UNPEND0 0xE000E280 |
Interrupt 0-31 Clear Pending. | |
#define | NVIC_UNPEND1 0xE000E284 |
Interrupt 32-54 Clear Pending. | |
#define | NVIC_UNPEND2 0xE000E288 |
Interrupt 64-95 Clear Pending. | |
#define | NVIC_UNPEND3 0xE000E28C |
Interrupt 96-127 Clear Pending. | |
#define | NVIC_UNPEND4 0xE000E290 |
Interrupt 128-131 Clear Pending. | |
#define | NVIC_ACTIVE0 0xE000E300 |
Interrupt 0-31 Active Bit. | |
#define | NVIC_ACTIVE1 0xE000E304 |
Interrupt 32-54 Active Bit. | |
#define | NVIC_ACTIVE2 0xE000E308 |
Interrupt 64-95 Active Bit. | |
#define | NVIC_ACTIVE3 0xE000E30C |
Interrupt 96-127 Active Bit. | |
#define | NVIC_ACTIVE4 0xE000E310 |
Interrupt 128-131 Active Bit. | |
#define | NVIC_PRI0 0xE000E400 |
Interrupt 0-3 Priority. | |
#define | NVIC_PRI1 0xE000E404 |
Interrupt 4-7 Priority. | |
#define | NVIC_PRI2 0xE000E408 |
Interrupt 8-11 Priority. | |
#define | NVIC_PRI3 0xE000E40C |
Interrupt 12-15 Priority. | |
#define | NVIC_PRI4 0xE000E410 |
Interrupt 16-19 Priority. | |
#define | NVIC_PRI5 0xE000E414 |
Interrupt 20-23 Priority. | |
#define | NVIC_PRI6 0xE000E418 |
Interrupt 24-27 Priority. | |
#define | NVIC_PRI7 0xE000E41C |
Interrupt 28-31 Priority. | |
#define | NVIC_PRI8 0xE000E420 |
Interrupt 32-35 Priority. | |
#define | NVIC_PRI9 0xE000E424 |
Interrupt 36-39 Priority. | |
#define | NVIC_PRI10 0xE000E428 |
Interrupt 40-43 Priority. | |
#define | NVIC_PRI11 0xE000E42C |
Interrupt 44-47 Priority. | |
#define | NVIC_PRI12 0xE000E430 |
Interrupt 48-51 Priority. | |
#define | NVIC_PRI13 0xE000E434 |
Interrupt 52-53 Priority. | |
#define | NVIC_PRI14 0xE000E438 |
Interrupt 56-59 Priority. | |
#define | NVIC_PRI15 0xE000E43C |
Interrupt 60-63 Priority. | |
#define | NVIC_PRI16 0xE000E440 |
Interrupt 64-67 Priority. | |
#define | NVIC_PRI17 0xE000E444 |
Interrupt 68-71 Priority. | |
#define | NVIC_PRI18 0xE000E448 |
Interrupt 72-75 Priority. | |
#define | NVIC_PRI19 0xE000E44C |
Interrupt 76-79 Priority. | |
#define | NVIC_PRI20 0xE000E450 |
Interrupt 80-83 Priority. | |
#define | NVIC_PRI21 0xE000E454 |
Interrupt 84-87 Priority. | |
#define | NVIC_PRI22 0xE000E458 |
Interrupt 88-91 Priority. | |
#define | NVIC_PRI23 0xE000E45C |
Interrupt 92-95 Priority. | |
#define | NVIC_PRI24 0xE000E460 |
Interrupt 96-99 Priority. | |
#define | NVIC_PRI25 0xE000E464 |
Interrupt 100-103 Priority. | |
#define | NVIC_PRI26 0xE000E468 |
Interrupt 104-107 Priority. | |
#define | NVIC_PRI27 0xE000E46C |
Interrupt 108-111 Priority. | |
#define | NVIC_PRI28 0xE000E470 |
Interrupt 112-115 Priority. | |
#define | NVIC_PRI29 0xE000E474 |
Interrupt 116-119 Priority. | |
#define | NVIC_PRI30 0xE000E478 |
Interrupt 120-123 Priority. | |
#define | NVIC_PRI31 0xE000E47C |
Interrupt 124-127 Priority. | |
#define | NVIC_PRI32 0xE000E480 |
Interrupt 128-131 Priority. | |
#define | NVIC_PRI33 0xE000E480 |
Interrupt 132-135 Priority. | |
#define | NVIC_PRI34 0xE000E484 |
Interrupt 136-139 Priority. | |
#define | NVIC_PRI35 0xE000E488 |
Interrupt 140-143 Priority. | |
#define | NVIC_PRI36 0xE000E48c |
Interrupt 144-147 Priority. | |
Driver for the cc2538 NVIC controller.
void nvic_interrupt_disable | ( | uint32_t | intr | ) |
Disables interrupt intr.
intr | The interrupt number (NOT the vector number). For example, GPIO Port A interrupt is 0, not 16. |
Possible values for the intr param are defined as NVIC_INT_xyz. For instance, to disable the GPIO Port A interrupt, pass NVIC_INT_GPIO_PORT_A
Definition at line 71 of file nvic.c.
Referenced by nvic_interrupt_en_save(), and rtimer_isr().
void nvic_interrupt_en_restore | ( | uint32_t | intr, |
uint8_t | v | ||
) |
Enables interrupt intr if v > 0.
intr | The interrupt number (NOT the vector number). For example, GPIO Port A interrupt is 0, not 16. |
v | 0: No effect, 1: Enables the interrupt |
This function is useful to restore an interrupt to a state previously saved by nvic_interrupt_en_save. Thus, if when nvic_interrupt_en_save was called the interrupt was enabled, this function will re-enabled it. Possible values for the intr param are defined as NVIC_INT_xyz. For instance, to disable the GPIO Port A interrupt, pass NVIC_INT_GPIO_PORT_A
uint8_t nvic_interrupt_en_save | ( | uint32_t | intr | ) |
Checks the interrupt enabled status for intr.
intr | The interrupt number (NOT the vector number). For example, GPIO Port A interrupt is 0, not 16. |
Possible values for the intr param are defined as NVIC_INT_xyz. For instance, to disable the GPIO Port A interrupt, pass NVIC_INT_GPIO_PORT_A
Definition at line 88 of file nvic.c.
References nvic_interrupt_disable().
void nvic_interrupt_enable | ( | uint32_t | intr | ) |
Enables interrupt intr.
intr | The interrupt number (NOT the vector number). For example, GPIO Port A interrupt is 0, not 16. |
Possible values for the intr param are defined as NVIC_INT_xyz. For instance, to enable the GPIO Port A interrupt, pass NVIC_INT_GPIO_PORT_A
Definition at line 64 of file nvic.c.
Referenced by rtimer_arch_schedule(), uart_init(), and udma_init().
void nvic_interrupt_pend | ( | uint32_t | intr | ) |
Sets intr to pending.
intr | The interrupt number (NOT the vector number). For example, GPIO Port A interrupt is 0, not 16. |
Possible values for the intr param are defined as NVIC_INT_xyz. For instance, to enable the GPIO Port A interrupt, pass NVIC_INT_GPIO_PORT_A
void nvic_interrupt_unpend | ( | uint32_t | intr | ) |
Sets intr to no longer pending.
intr | The interrupt number (NOT the vector number). For example, GPIO Port A interrupt is 0, not 16. |
Possible values for the intr param are defined as NVIC_INT_xyz. For instance, to disable the GPIO Port A interrupt, pass NVIC_INT_GPIO_PORT_A
Definition at line 106 of file nvic.c.
Referenced by rtimer_isr().