interrupts.h

nds interrupt support. [詳細]

#include <nds/ndstypes.h>

ソースコードを見る。

構成

struct  IntTable

マクロ定義

#define IRQ_TIMER(n)   (1 << ((n) + 3))
#define MAX_INTERRUPTS   25
#define REG_IE   (*(vuint32*)0x04000210)
 Interrupt Enable Register.
#define REG_AUXIE   (*(vuint32*)0x04000218)
#define REG_IF   (*(vuint32*)0x04000214)
 Interrupt Flag Register.
#define REG_AUXIF   (*(vuint32*)0x0400021C)
#define REG_IME   (*(vuint32*)0x04000208)
 Interrupt Master Enable Register.
#define INTR_WAIT_FLAGS   *(__irq_flags)
#define INTR_WAIT_FLAGSAUX   *(__irq_flagsaux)
#define IRQ_HANDLER   *(__irq_vector)

型定義

typedef enum IRQ_MASKS IRQ_MASK

列挙型

enum  IRQ_MASKS {
  IRQ_VBLANK = BIT(0),
  IRQ_HBLANK = BIT(1),
  IRQ_VCOUNT = BIT(2),
  IRQ_TIMER0 = BIT(3),
  IRQ_TIMER1 = BIT(4),
  IRQ_TIMER2 = BIT(5),
  IRQ_TIMER3 = BIT(6),
  IRQ_NETWORK = BIT(7),
  IRQ_DMA0 = BIT(8),
  IRQ_DMA1 = BIT(9),
  IRQ_DMA2 = BIT(10),
  IRQ_DMA3 = BIT(11),
  IRQ_KEYS = BIT(12),
  IRQ_CART = BIT(13),
  IRQ_IPC_SYNC = BIT(16),
  IRQ_FIFO_EMPTY = BIT(17),
  IRQ_FIFO_NOT_EMPTY = BIT(18),
  IRQ_CARD = BIT(19),
  IRQ_CARD_LINE = BIT(20),
  IRQ_GEOMETRY_FIFO = BIT(21),
  IRQ_LID = BIT(22),
  IRQ_SPI = BIT(23),
  IRQ_WIFI = BIT(24),
  IRQ_ALL = (~0)
}
 

values allowed for REG_IE and REG_IF

[詳細]
enum  IRQ_MASKSAUX { IRQ_POWER = BIT(6) }
 

values allowed for REG_AUXIE and REG_AUXIF

[詳細]
enum  IME_VALUE {
  IME_DISABLE = 0,
  IME_ENABLE = 1
}
 

values allowed for REG_IME

[詳細]

関数

void irqInit ()
 Initialise the libnds interrupt system.
void irqSet (u32 irq, VoidFn handler)
 Add a handler for the given interrupt mask.
void irqSetAUX (u32 irq, VoidFn handler)
void irqClear (u32 irq)
 remove the handler associated with the interrupt mask irq.
void irqClearAUX (u32 irq)
void irqInitHandler (VoidFn handler)
 Install a user interrupt dispatcher.
void irqEnable (u32 irq)
 Allow the given interrupt to occur.
void irqEnableAUX (u32 irq)
void irqDisable (u32 irq)
 Prevent the given interrupt from occuring.
void irqDisableAUX (u32 irq)
void swiIntrWait (u32 waitForSet, uint32 flags)
 wait for interrupt(s) to occur
void swiWaitForVBlank (void)
 Wait for vblank interrupt.

変数

VoidFn __irq_vector []
vuint32 __irq_flags []
vuint32 __irq_flagsaux []

説明

nds interrupt support.


マクロ定義

#define REG_IE   (*(vuint32*)0x04000210)

Interrupt Enable Register.

This is the activation mask for the internal interrupts. Unless the corresponding bit is set, the IRQ will be masked out.

#define REG_IF   (*(vuint32*)0x04000214)

Interrupt Flag Register.

Since there is only one hardware interrupt vector, the IF register contains flags to indicate when a particular of interrupt has occured. To acknowledge processing interrupts, set IF to the value of the interrupt handled.

#define REG_IME   (*(vuint32*)0x04000208)

Interrupt Master Enable Register.

When bit 0 is clear, all interrupts are masked. When it is 1, interrupts will occur if not masked out in REG_IE.


列挙型

enum IME_VALUE

values allowed for REG_IME

列挙型の値:
IME_DISABLE 

Disable all interrupts.

IME_ENABLE 

Enable all interrupts not masked out in REG_IE

enum IRQ_MASKS

values allowed for REG_IE and REG_IF

列挙型の値:
IRQ_VBLANK 

vertical blank interrupt mask

IRQ_HBLANK 

horizontal blank interrupt mask

IRQ_VCOUNT 

vcount match interrupt mask

IRQ_TIMER0 

timer 0 interrupt mask

IRQ_TIMER1 

timer 1 interrupt mask

IRQ_TIMER2 

timer 2 interrupt mask

IRQ_TIMER3 

timer 3 interrupt mask

IRQ_NETWORK 

serial interrupt mask

IRQ_DMA0 

DMA 0 interrupt mask

IRQ_DMA1 

DMA 1 interrupt mask

IRQ_DMA2 

DMA 2 interrupt mask

IRQ_DMA3 

DMA 3 interrupt mask

IRQ_KEYS 

Keypad interrupt mask

IRQ_CART 

GBA cartridge interrupt mask

IRQ_IPC_SYNC 

IPC sync interrupt mask

IRQ_FIFO_EMPTY 

Send FIFO empty interrupt mask

IRQ_FIFO_NOT_EMPTY 

Receive FIFO not empty interrupt mask

IRQ_CARD 

interrupt mask DS Card Slot

IRQ_CARD_LINE 

interrupt mask

IRQ_GEOMETRY_FIFO 

geometry FIFO interrupt mask

IRQ_LID 

interrupt mask DS hinge

IRQ_SPI 

SPI interrupt mask

IRQ_WIFI 

WIFI interrupt mask (ARM7)

values allowed for REG_AUXIE and REG_AUXIF

列挙型の値:
IRQ_POWER 

Power Button interrupt mask (DSi ARM7)


関数

irqClear ( u32  irq  ) 

remove the handler associated with the interrupt mask irq.

引数:
irq Mask associated with the interrupt.
irqDisable ( u32  irq  ) 

Prevent the given interrupt from occuring.

引数:
irq The set of interrupt masks to disable.
覚え書き:
Specify multiple interrupts to disable by ORing several IRQ_MASKS.
irqEnable ( u32  irq  ) 

Allow the given interrupt to occur.

引数:
irq The set of interrupt masks to enable.
覚え書き:
Specify multiple interrupts to enable by ORing several IRQ_MASKS.
irqInit (  ) 

Initialise the libnds interrupt system.

This function is called internally (prior to main()) to set up irqs on the ARM9. It must be called on the ARM7 prior to installing irq handlers.

irqInitHandler ( VoidFn  handler  ) 

Install a user interrupt dispatcher.

This function installs the main interrupt function, all interrupts are serviced through this routine. For most purposes the libnds interrupt dispacther should be used in preference to user code unless you know *exactly* what you're doing.

引数:
handler Address of the function to use as an interrupt dispatcher
覚え書き:
the function *must* be ARM code
irqSet ( u32  irq,
VoidFn  handler 
)

Add a handler for the given interrupt mask.

Specify the handler to use for the given interrupt. This only works with the default interrupt handler, do not mix the use of this routine with a user-installed IRQ handler.

引数:
irq Mask associated with the interrupt.
handler Address of the function to use as an interrupt service routine
覚え書き:
When any handler specifies using IRQ_VBLANK or IRQ_HBLANK, DISP_SR is automatically updated to include the corresponding DISP_VBLANK_IRQ or DISP_HBLANK_IRQ.
警告:
Only one IRQ_MASK can be specified with this function.
例:
hello_world/source/main.cpp.
swiIntrWait ( u32  waitForSet,
uint32  flags 
)

wait for interrupt(s) to occur

引数:
waitForSet 0: Return if the interrupt has already occured 1: Wait until the interrupt has been set since the call
flags interrupt mask to wait for
swiWaitForVBlank ( void   ) 

Wait for vblank interrupt.

Waits for a vertical blank interrupt

覚え書き:
Identical to calling swiIntrWait(1, 1)
例:
audio/micrecord/source/micrecord.c, Graphics/3D/3D_Both_Screens/source/template.c, Graphics/3D/nehe/lesson01/source/nehe1.cpp, Graphics/3D/nehe/lesson02/source/nehe2.cpp, Graphics/3D/nehe/lesson03/source/nehe3.cpp, Graphics/3D/nehe/lesson04/source/nehe4.cpp, Graphics/3D/nehe/lesson05/source/nehe5.cpp, Graphics/3D/nehe/lesson06/source/nehe6.cpp, Graphics/3D/nehe/lesson07/source/nehe7.cpp, Graphics/3D/nehe/lesson08/source/nehe8.cpp, Graphics/3D/nehe/lesson09/source/nehe9.cpp, Graphics/3D/nehe/lesson10/source/nehe10.cpp, Graphics/3D/nehe/lesson10b/source/nehe10b.cpp, Graphics/3D/nehe/lesson11/source/nehe11.cpp, Graphics/Backgrounds/16bit_color_bmp/source/template.cpp, Graphics/Backgrounds/all_in_one/source/advanced.cpp, Graphics/Backgrounds/all_in_one/source/scrolling.cpp, Graphics/Printing/ansi_console/source/main.c, Graphics/Printing/console_windows/source/main.c, Graphics/Printing/custom_font/source/main.c, Graphics/Printing/print_both_screens/source/template.c, Graphics/Printing/rotscale_text/source/main.c, Graphics/Sprites/allocation_test/source/main.c, Graphics/Sprites/animate_simple/source/template.c, Graphics/Sprites/bitmap_sprites/source/main.cpp, Graphics/Sprites/fire_and_sprites/source/main.cpp, Graphics/Sprites/simple/source/template.c, hello_world/source/main.cpp, input/keyboard/keyboard_async/source/template.c, input/keyboard/keyboard_stdin/source/keymain.c, input/Touch_Pad/touch_area/source/template.c, input/Touch_Pad/touch_test/source/main.c, と RealTimeClock/Watch/source/main.cpp.
 全て クラス ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義
libndsに対してMon Apr 26 23:39:50 2010に生成されました。  doxygen 1.6.3