int0.c

来自「S3C4510(ARM7)开发板bootloader实现及板载硬件测试代码」· C语言 代码 · 共 68 行

C
68
字号
#include "int0.h"

static void delay(int x)
{
	int i;
	while (x--)
	{
		for (i = 65536  ; i > 0; i--);		
	}	
}

void int0_init(void)
{
	// set gpio's direction: set IOPMOD register mode bit to 0 = input
	IOPMOD = IOPMOD & (~0x00000100);
	
	// unmask the switch interrupt ...........	
	INTMSK &= ~((1<<21) | (1<<0));   
	
	// set int0 interrupt edge detect
	IOPCON	|= INT0_IO_RISING_EDGE;	
	
		// enable int0 interrupt
	IOPCON 	|= INT0_IO_ENABLE; 
	
}

void int0_irq_handler( void)
{
	int i;
	
	for (i = 0; i < LED_NUM; i++)
	{
		led(i, 1);			
	}
	delay( 50 );	
	for (i = 0; i < LED_NUM; i++)
	{
		led(i, 0);
	}
	delay( 50 );		

	INTPND |= INT0_MASK;
}

void int0demo(void)
{
	int i;

	uart_get = -INT_MAX;
	int0_init();
	uart_init(UART0_BASE, BAUD_19200);
	puts("press int0 button(target) to generate int0 irq, press 'Enter' to end demo\r\n");

	for (; ;)	
	{
		for (i = 0; i < 3; i++)
		{
			led(i, 1);
			delay( 30 );
			led(i, 0);
		}
		if (uart_get == '\r' || uart_get == '\n')
			break;
	}
	 
	return;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?