TQ2440外接GPIO蜂鸣器驱动程序

       本文通过TQ2440开发板上可外接的GPIO口GPG14连接蜂鸣器,通过控制GPG14引脚的高低电平的输出和高低电平输出之间的时间间隔来使蜂鸣器发出不同的声音。

       1.打开S3C2440的底板原理图找到GPIO,如下图所示:

        

        使用万用表先找到VDD5V那个引脚,然后对照图找到GPG14,将蜂鸣器的正极连上GPG14,负极连上GND接地。

        2.蜂鸣器驱动程序源代码My_Beep.c:

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <asm/irq.h>
#include <mach/regs-gpio.h> //定义s3c2410的GPIO
#include <mach/hardware.h> //定义操作s3c2410的GPIO的函数  
#include <linux/device.h> //自动创建设备文件应该包含的头文件 

#define DEVICE_NAME  "My_Beep" //加载模块后执行cat/proc/devices中看到的设备名称
#define Beep_MAJOR        104        //主设备号
#define Beep_High        1
#define Beep_Low      0

static int My_Beep_open(struct inode *inode,struct file *file)
{
    s3c2410_gpio_cfgpin(S3C2410_GPG14,S3C2410_GPG14_OUTP);//配置GPG14为输出功能   
    printk("My_Beep  open\n");
    return 0;
}

static int My_Beep_ioctl(struct inode * inode, struct file * file,unsigned int cmd)
{
    switch(cmd)
    {
       case Beep_High:
            s3c2410_gpio_setpin(S3C2410_GPG14, 1);//设置GPG14引脚为输出电平为1
            return 0;
       case Beep_Low:
            s3c2410_gpio_setpin(S3C2410_GPG14, 0);//设置GPG14引脚为输出电平为0
            return 0;
    default:
    return  -1;
    }
}

//定义文件操作 file_operations
static struct file_operations My_Beep_fops =
{
  .owner = THIS_MODULE,
  .open = My_Beep_open,
  .ioctl = My_Beep_ioctl,
};


static struct class *Beep_class;

static int __init My_Beep_init(v
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值