按键控制LED灯
GPIO_MemMapPtr const PORT_BASE_PTR[] = {GPIOA_BASE_PTR,GPIOB_BASE_PTR};
void GPIO_WriteBit(GPIO_TypeDef port,int pin,BIT_TypeDef bit)
{
if(bit == BIT_RESET)
{
PORT_BASE_PTR[port]->GPDAT &= ~(pin);
}
else
{
PORT_BASE_PTR[port]->GPDAT |= (pin);
}
}
#include "s3c2451_key.h"
#include "s3c2451_gpio.h"
void KEY_Init()
{
//GPF[6:0]
GPFCON &= (~(3<<(2*1))) & (~(3<<(2*2))) & (~(3<<(2*3))) & (~(3<<(2*4)));
}
void key_ctr_led()
{
while(1)
{
//key1
if(!(GPFDAT&0x01))
{
GPIO_WriteBit(GPIOB,GPIO_PIN5,BIT_RESET);
}
else
{
GPIO_WriteBit(GPIOB,GPIO_PIN5,BIT_SET);
}
//key2
if(!(GPFDAT&0x02))
{
GPIO_WriteBit(GPIOB,GPIO_PIN6,BIT_RESET);
}
else
{
GPIO_WriteBit(GPIOB,GPIO_PIN6,BIT_SET);
}
//key3
if(!(GPFDAT&0x04))
{
GPIO_WriteBit(GPIOA,GPIO_PIN25,BIT_RESET);
}
else
{
GPIO_WriteBit(GPIOA,GPIO_PIN25,BIT_SET);
}
//key4
if(!(GPFDAT&0x08))
{
GPIO_WriteBit(GPIOA,GPIO_PIN26,BIT_RESET);
}
else
{
GPIO_WriteBit(GPIOA,GPIO_PIN26,BIT_SET);
}
}
}
IO控制buzzer蜂鸣器
#ifndef S3C2451_BUZZER_H_
#define S3C2451_BUZZER_H_
#include "typedef.h"
#define GPBCON (*(volatile unsigned *)0x56000010)
#define GPBDAT (*(volatile unsigned *)0x56000014)
#define GPBUP (*(volatile unsigned *)0x56000018)
typedef enum
{
BUR_RESET = 0,
BUR_SET = 1
}BUZZER_TypeDef;
extern void buzzer_on_off(BUZZER_TypeDef bur);
#endif
#include "s3c2451_buzzer.h"
void buzzer_on_off(BUZZER_TypeDef bur)
{
if(bur == BUR_SET)
{
GPBDAT |= 0x01;
}
else if(bur == BUR_RESET)
{
GPBDAT &= 0x0;
}
}
#include "main.h"
#include "s3c2451_key.h"
#include "s3c2451_buzzer.h"
void delay(volatile int count)
{
while (count--);
}
void Main(void)
{
while(1)
{
buzzer_on_off(BUR_RESET);
delay(2000000);
buzzer_on_off(BUR_SET);
delay(2000000);
}
}