zoukankan      html  css  js  c++  java
  • 六.蜂鸣器驱动

    今天按照点亮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的基础,这个蜂鸣器试验轻松搞定!

  • 相关阅读:
    Windows Phone 31 日谈——第18日:WebBrowser控件
    Windows Phone 31 日谈——第19日:推送通知
    使用bat文件启动服务
    绝代反向指标——丘吉尔 炒股第二天就崩盘
    插入数据库返回自增长序号
    大并发服务器开发
    在这个不相信爱情的时代里,巴菲特的故事似乎让我又相信爱情了
    mysql操作语句
    马云三历高考才进大学 第一次高考数学考1分
    俞敏洪的屌丝逆袭 大学考了三次进北大
  • 原文地址:https://www.cnblogs.com/yinsedeyinse/p/15754843.html
Copyright © 2011-2022 走看看