Buzzer封装:
蜂鸣器是GPIO的一个典型应用,下面我们利用C++语言的继承机制完成对Buzzer类的封装,Buzzer类继承自CGpio类,CGpio类的具体实现参考:ch1 gpio封装
亮一张蜂鸣器的电路吧O(∩_∩)O!
Buzzer调用效果:
int main()
{
CBsp bsp;
bsp.Init();
Buzzer buzzer(PORT_A,PIN_0);
buzzer.ON();
if(buzzer.isOn()){
printf("buzzer is on");
} else {
printf("buzzer is off");
}
return 0;
}
具体实现:
#ifndef _BUZZER_H_
#define _BUZZER_H_
#include "gpio.h"
#include "buzzer.h"
class Buzzer:public CGpio{
public:
Buzzer(PORT port,PIN pin);
void ON(void);
void OFF(void);
bool isOn(void)const; //提供获得蜂鸣器是开还是关的方法;
private:
uint16_t Pin;
GPIO_TypeDef *Gpio;
bool onState;
};
#endif
#include "buzzer.h"
Buzzer::Buzzer(PORT port,PIN pin):
CGpio(port,pin,
GPIO_Mode_OUT,
GPIO_Speed_40MHz,
GPIO_OType_PP,
GPIO_PuPd_DOWN){
onState = true;
OFF();
}
void Buzzer::ON(void){
if(onState == false){
this->setBit(1);
}
}
void Buzzer::OFF(void){
if(onState == true){
this->setBit(0);
}
}
bool Buzzer::isOn(void)const{
return onState;
}