ARM 按键控制LED灯+IO控制buzzer蜂鸣器
2017-05-12 13:06
513 查看
按键控制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);
}
}
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);
}
}
相关文章推荐
- 【ARM】按键·查询式控制led灯·fs2410
- ARM4412裸板驱动LED灯.按键,蜂鸣器的驱动
- 【嵌入式】——arm裸机开发 step by step 之 按键控制 LED 和 蜂鸣器
- 【ARM】s3c2440之gpio按键控制
- 51单片机STC89C52 按键控制蜂鸣器
- C语言按键控制led灯和蜂鸣器
- 51proteus仿真:按键控制led灯
- break、continue和return的用法(附:2IO口控制4按键程序)
- ARM按键控制LED
- 基于fl2440开发板的按键以及蜂鸣器控制
- [置顶] ARM开发(6) 基于STM32的矩阵键盘按键触发外部中断引起蜂鸣器鸣叫
- STM32学习笔记之按键查询方式控制led灯的亮灭
- 【ARM】2440裸机系列-gpio按键控制
- 4.0 IO口控制LED灯闪烁
- ARM裸机——FS2410按键控制LED(中断方式)
- [置顶] ARM开发(10)基于STM32的通用定时器中断控制蜂鸣器响
- 《tiny6410裸机程序》第九章:tiny6410按键控制蜂鸣器程序
- 4412驱动-fifth_fasyn 控制led 蜂鸣器 按键
- mini2440按键中断控制led灯遇到的问题
- ARM裸机——FS2410按键控制LED灯(查询方式)