ARM裸机开发:蜂鸣器实验

ARM裸机开发:蜂鸣器实验

一、硬件平台:

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

_533488159_IMG_20210803_235508_1628006109000_xg_0

二、原理图分析

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

驱动电路

20211030151245

控制引脚

20211030151942

20211030151932

对应的引脚是 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

修改完成,进行构建

20211030154511

四、实验现象

蜂鸣器周期性的响起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Top嵌入式

投喂个鸡腿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值