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

  • 相关阅读:
    (转)Android 判断用户2G/3G/4G移动数据网络
    Android Studio导入第三方类库的方法
    jxbrowser java代码直接调用js代码
    jxbrowser 实现java 和 js互相调用
    jxbrowser 实现自定义右键菜单
    jxbrowser 监听所有网络请求 jxbrowser 系列教程2
    JxBrowser开启调试模式,JxBrowser debug
    MySQL查看数据库表容量大小
    thinkphp5使用PHPMailler发送邮件
    phpstorm psr2样式.xml
  • 原文地址:https://www.cnblogs.com/yinsedeyinse/p/15754843.html
Copyright © 2011-2022 走看看