#include
#include
#include
#include "mmu.h"
#include "typedef.h"
#include "S3C2451_gpio.h"
#include "S3C2451_uart.h"
#include "S3C2451_irq.h"
#include "S3C2451_vector.h"
//#include "S3C2451_eint.h"
void delay(unsigned int count)
{
int j = 1000;
int i = 0;
while(--j)
for(i =count; i > 0; i --);
}
void uart0_irq(void)
{
U8 recv;
if(IRQ1_GetSUBPND(SUB_INT_TXD0) == BIT_SET)
{
IRQ1_ClearSUBPND(SUB_INT_RXD0);
recv = UART_ReceiveData(UART0);
delay(1000);
UART_SendData(UART0, recv);
}
if(IRQ1_GetSUBPND(SUB_INT_TXD0) == BIT_SET)
{
IRQ1_ClearSUBPND(SUB_INT_ERR0);
//´òÓ¡³ö´í
}
IRQ1_ClearPND(INT_UART0);
}
void eint_irq(void)
{
if(IRQ1_GetPND(INT_EINT0) == BIT_SET)
{
IRQ1_ClearPND(INT_EINT0);
//Çå³ýÖжϱêÖ¾
GPIO_WriteBit(GPIOB, GPIO_PIN(0), BIT_SET);
//¶ÔIO¿Ú½øÐÐд²Ù×÷
·äÃùÆ÷Ïì
delay(12000);
GPIO_WriteBit(GPIOB, GPIO_PIN(0), BIT_RESET);
//¶ÔIO¿Ú½øÐÐд²Ù×÷
·äÃùÆ÷²»Ïì
}
if(IRQ1_GetPND(INT_EINT0) == BIT_SET)
{
IRQ1_ClearPND(INT_EINT0);
//´òÓ¡³ö´í
}
IRQ1_ClearPND(INT_EINT0);
}
void Main()
{
GPIO_Init_Typedef gpio_init_struct, gpio_init_struct_key;
UART_Init_Typedef uart_init_struct;
//
char recv = 0;
//MMU³õʼ»¯£ºÔÚ³ÌÐò×ʼµÄʱºòµ÷ÓÃ
MMU_Init();
//gpio
//led
gpio_init_struct.pinx = GPIO_PIN(5) | GPIO_PIN(6);
gpio_init_struct.mode = GPIO_MODE_OUT;
gpio_init_struct.udp = GPIO_UDP_DISABLE;
//°´¼ü
gpio_init_struct_key.pinx = GPIO_PIN(0);
gpio_init_struct_key.mode = GPIO_MODE_ALT;
//µÚÈýÖÖ¹¦ÄÜ
gpio_init_struct_key.udp =
GPIO_UDP_PULLDOWN;
//³õʼ»¯
GPIO_Init(GPIOB, gpio_init_struct);
//led
GPIO_Init(GPIOF, gpio_init_struct_key);
//°´¼ü
//uart
uart_init_struct.baudrate = 115200;
uart_init_struct.mode = UART_Mode_TX | UART_Mode_RX;
uart_init_struct.parity = Parity_No;
uart_init_struct.stop = STOP_1Bit;
uart_init_struct.wordwidth = WordWidth_8BIT;
UART_Init(UART0, uart_init_struct);
UART_IRQService_Init(UART0, (U32)uart0_irq);
//×¢²áÖжϷþÎñ³ÌÐò, led
pISR_EINT0 = (U32)eint_irq;
//×¢²áÖжϷþÎñ³ÌÐò, °´¼ü
IRQ1_INTMask_Init(INT_UART0, ENABLE);
IRQ1_INTSUBMask_Init(SUB_INT_RXD0, ENABLE);
IRQ1_INTSUBMask_Init(SUB_INT_ERR0, ENABLE);
IRQ1_INTMask_Init(INT_EINT0, ENABLE);
//ÀÕ¢
UART_SendString(UART0, (U8 *)"Hello World!\n\r");
while(1){
//
if(UART_IsRecved(UART0))
//ͨ¹ýUTRSTATÅжÏÊÇ·ñÓÐÓÐЧÊý¾Ý
0ΪûÓÐ 1ΪÓÐ
//
{
//
recv = UART_ReceiveData(UART0);
//
UART_SendData(UART0, recv);
//
}
GPIO_WriteBit(GPIOB, GPIO_PIN(5), BIT_RESET);
GPIO_WriteBit(GPIOB, GPIO_PIN(6), BIT_RESET);
delay(60000);
GPIO_WriteBit(GPIOB, GPIO_PIN(5), BIT_SET);
GPIO_WriteBit(GPIOB, GPIO_PIN(6), BIT_SET);
delay(60000);
}
}