和上一节同样的,我们也采用了 led 作为系统的辅助输出设备来显示主程序和中断的
执行状态。系统的主程序是通过 led 0, led 1, led 2 的交替闪烁来标识执行状态,其中
timer 会每隔一定长的时间(约1秒)触发一次中断,在中断处理中,我们安装了一个简单的
timer_irq_hooker 函数,对 led 3 做一次闪烁来标识中断程序的执行。
void timer_irq_hooker( void )
{
// we add a hooker of timer interrupt ( just let led_3 to blink one time )
led_one_light(3);
led_delay( 10 );
led_one_dark(3);
}
int timer_ioctl( unsigned int cmd, unsigned long arg )
{
switch( cmd )
{
// set interrupt counter
case TIMER_SET_COUNTER:
TDATA0 = *(unsigned int *)arg;
break;
// Enable interrupt request and Unmask timer_0 interrupt
case TIMER_ENABLE_INTERRUPT:
INTMSK &= ~((1 << 21) | (1 <<10) );
break;