SYSLAB blog
PC版 SYSLAB blog http://syslab.asablo.jp/blog/......
<<前
次>>
Raisonance Ride7 & ARM Tools (17) LPC2xxx の Startup (2)
2012-09-25
void Timer0Handler(void); #define TIMER0_INT 4 #define HIGHEST_PRIORITY 0x01 #define LOWEST_PRIORITY 0x0F #define VECT_ADDR_INDEX 0x100 #define VECT_PRIO_INDEX 0x200 volatile unsigned long timer0_counter = 0; __attribute__ ((interrupt("IRQ"))) void Timer0Handler(void) { T0IR = 1; /* clear interrupt flag */ FIO1PIN2 ^= 0x04; timer0_counter++; VICVectAddr = 0; /* Acknowledge Interrupt */ } int main(void) { unsigned long *vect_addr, *vect_prio; SCS |= 1; FIO1DIR = 1 << 18; T0CTCR = 0; T0MR0 = 500000 - 1; T0MCR = 0x3; *(unsigned long *)(VIC_BASE_ADDR + VECT_ADDR_INDEX + TIMER0_INT*4) = (unsigned long)Timer0Handler; *(unsigned long *)(VIC_BASE_ADDR + VECT_PRIO_INDEX + TIMER0_INT*4) = HIGHEST_PRIORITY; VICIntEnable |= (1 << TIMER0_INT); /* Enable Interrupt */ T0TCR = 1; while(1); }
ベクターテーブルからいきなり VICVectAddr を参照する。
見たところCの方法がすっきりして無駄がないように見える。
後試してみたいのは SWI_Handler だがどのようにして試そうか思案中だ。
環境:CQ-FRK-NXP-ARM
+ Ride7 version 7.30.10.0169
+ RKit-ARM version 1.30.10.0356
+ GCC Sourcery CodeBench Lite 2012.03-56
戻る
[ARM]
[マイコン]
コメント(全0件)
セ
コメントをする
<<前
次>>
トップ
上へ
下へ
セ
記事を書く
powered by ASAHIネット
セコメントをする