07. 蜂鸣器

07. 蜂鸣器

  • 硬件原理分析
  • 代码编写

硬件原理分析

07. 蜂鸣器_第1张图片

此处为PNP型三极管,BEEP为低的时候三极管才会导通,也就是BEEP=0时,蜂鸣器会叫。BEEP是通过SNVS_TAMPER1这个IO控制的

代码编写

将前面的bsp、imx6ul、obj和project拷贝过来

  1. 初始化SNVS_TAMPER1这个IO复用为GPIO5_IO01
  2. 设置SNVS_TAMPER1这个IO的电气属性
  3. 初始化GPIO
  4. 控制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即可

你可能感兴趣的:(嵌入式裸机ARM驱动开发,嵌入式硬件)