ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

六.蜂鸣器驱动

2022-01-01 11:35:05  阅读:161  来源: 互联网

标签:蜂鸣器 GPIO5 void bsp SNVS beep 驱动


今天按照点亮LED的流程,来试下蜂鸣器的驱动编写。

硬件简介

查底板原理图

 

开发板的蜂鸣器是有源的,这个有源指的是振荡源,这种蜂鸣器只需要给个激励源就可以发声,而对应的无源是需要给个方波来驱动的。蜂鸣器接在PNP三极管集电极上,三极管作为开关使用时有个简单的方法判定其是否打开:看三极管上箭头所在方向的二极管,只要二极管正向导通,那么三极管上下就能导通。对于这个电路,也就是当BEEP为0时,蜂鸣器会工作,反之停止。

然后就要查看BEEP对应的是哪个IO脚了,还是在底板原理图上搜索关键字BEEP,看看哪个脚

 

 就是这个SNVS_TAMPER1。在手册里搜一下!

 

 这个管脚和GPIO5_IO1是复用的。

软件编写

 蜂鸣器的驱动就在bsp文件夹内新建个beep文件夹,里面还是两个文件

#ifndef __BSP_BEEP_H
#include "imx6ul.h"

void beep_init(void);
void beep_switch(int status);
#endif
bsp_beep.h
// SNVS_TAMPER1复用为GPIO5_IO1

#include "bsp_beep.h"

void beep_init(void)
{   //GPIO复用初始化,复用为GPIO5_IO01
    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);
}
// 蜂鸣器控制

void beep_switch(int status)
{
    if(status == ON)
    {   //IO设置为0
        GPIO5->DR &=~(1<<1);
    }
    else
    {   //IO设置为1
        GPIO5->DR |=(1<<1);
    }
}
bsp_beep.c

整个过程还是初始化复用、电气属性初始化、IO方向等初始化。定义了个切换开关的函数,在主函数里导入头文件,就可以调用这个函数了

 

 

当然在编译的时候要在Makefile里 添加这个新文件夹的路径(bsp/beep)。

 

执行make命令,烧录程序。有了前面LED的基础,这个蜂鸣器试验轻松搞定!

标签:蜂鸣器,GPIO5,void,bsp,SNVS,beep,驱动
来源: https://www.cnblogs.com/yinsedeyinse/p/15754843.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有