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

2019-07-13 08:50发布


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