4.16

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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);



}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值