当前位置: 首页 > 工具软件 > Buzzer > 使用案例 >

ARM 按键控制LED灯+IO控制buzzer蜂鸣器

干弘深
2023-12-01


按键控制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);
	}
}


 类似资料: