资讯详情

ARM裸机开发:蜂鸣器实验

ARM裸机开发:蜂鸣器实验

一、硬件平台:

正点原子I.MX6U阿尔法开发板

_533488159_IMG_20210803_235508_1628006109000_xg_0

二、原理图分析

我们首先看到开发板上的开发板 BEEP 驱动电路,找到控制引脚原理图

驱动电路

控制引脚

相应的引脚是 GPIO5_IO01 ,该 IO 通过简单的电平控制三极管的开关,实现有源蜂鸣器的开关,有利于保护引脚,防止蜂鸣器工作时电路损坏 IO 口,控制模式,高电平蜂鸣器打开,低电平蜂鸣器关闭

三、配置代码

代码基于上一节BSP工程代码进行修改,添加 bsp_beep 文件夹及其模块文件

bsp_beep.c文件

#include "bsp_beep.h"   void BSP_BEEP_INIT(void) { 
             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); } 

bsp_beep.h文件

#ifndef __BSP_BEEP_H #define __BSP_BEEP_H  #include "fsl_iomuxc.h" #include "MCIMX6Y2.h"  #define BEEP_ON() GPIO5->DR &=~(1<<1) #define BEEP_OFF() GPIO5->DR |= (1<<1)  void BSP_BEEP_INIT(void); #endif 

主函数进行调用

#include "bsp_led.h"
#include "bsp_clk.h"
#include "bsp_delay.h"
#include "bsp_beep.h"

int main(void)
{ 
        
    CLK_INIT();
    LED_INIT();
    while (1)
    { 
        
        /* code */
        LED_ON();
        BEEP_ON();
        delay(1000);
        LED_OFF();
        BEEP_OFF();
        delay(1000);
    }
    return 0;
}

修改一下 Makefile 文件进行构建,主要就是增加加构建路径

INCDIRS 		:= imx6ul \
				   bsp/bsp_clk \
				   bsp/bsp_led \
				   bsp/bsp_delay\				 
				   bsp/bsp_beep		
                   
SRCDIRS			:= project \
				   bsp/bsp_clk \
				   bsp/bsp_led \
				   bsp/bsp_delay\
				   bsp/bsp_beep

以及改变目标文件名称

TARGET		  	?= beep

修改完成,进行构建

四、实验现象

蜂鸣器周期性的响起

标签: bsp62三极管

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台