07. 蜂鸣器
- 硬件原理分析
- 代码编写
硬件原理分析
此处为PNP型三极管,BEEP为低的时候三极管才会导通,也就是BEEP=0时,蜂鸣器会叫。BEEP是通过SNVS_TAMPER1这个IO控制的
代码编写
将前面的bsp、imx6ul、obj和project拷贝过来
- 初始化SNVS_TAMPER1这个IO复用为GPIO5_IO01
- 设置SNVS_TAMPER1这个IO的电气属性
- 初始化GPIO
- 控制GPIO输出高电平
bsp_beep.h
#pragma once
#include "imx6ul.h"
void beep_init();
void beep_switch(int status);
bsp_beep.c
#include "bsp_beep.h"
// BEEP初始化
void beep_init()
{
IOMUXC_SetPinMux(IOMUXC_SNVS_SNVS_TAMPER1_GPIO5_IO01,0);
IOMUXC_SetPinConfig(IOMUXC_SNVS_SNVS_TAMPER1_GPIO5_IO01,0x10b0);
GPIO5->GDIR|=(1<<1); // 第一个比特位设置为输出
GPIO5->DR&=~(1<<1); // 将这个位置输出0,表示默认蜂鸣器关闭
}
// 蜂鸣器控制函数
void beep_switch(int sattus)
{
if(status==ON)
GPIO5->DR&=~(1<<1);// 低电平时蜂鸣器响
else if(status==OFF)
GPIO5->DR|=(1<<1);
}
main.c
int main()
{
clk_enable();
led_init();
beep_init();
while(1)
{
led_switch(LED0,ON);
beep_switch(ON);
delay(500);
led_switch(LED0,OFF);
beep_switch(OFF);
delay(500);
}
return 0;
}
makefile文件中只需要添加bsp/beep
路径,然后target ?= beep
即可