资源简介
4412 GPIO驱动程序、蜂鸣器实现音乐播放、按键中断驱动代码

代码片段和文件信息
#include
#include
#include
#include
/*驱动注册的头文件,包含驱动的结构体和注册和卸载的函数*/
#include
/*注册杂项设备头文件*/
#include
/*注册设备节点的文件结构体*/
#include
#include
/*Linux中申请GPIO的头文件*/
#include
/*三星平台的GPIO配置函数头文件*/
/*三星平台EXYNOS系列平台,GPIO配置参数宏定义头文件*/
#include
#include
/*三星平台4412平台,GPIO宏定义头文件*/
#include
#include
#include
/*
#define DRIVER_NAME “hello_ctl“
#define DEVICE_NAME “hello_ctl“
*/
MODULE_LICENSE(“Dual BSD/GPL“);
MODULE_AUTHOR(“TOPEET“);
//GPIO 驱动程序的宏定义
#ifndef __S5PC100__LED_HHHH
#define __S5PC100__LED_HHHH
//need arg = 0/1/2/3/4/5
#define PWM_ON _IO(‘K‘ 0)
#define PWM_OFF _IO(‘K‘ 1)
#define SET_PRE _IOW(‘K‘ 2 int)
#define SET_CNT _IOW(‘K‘ 3 int)
#define LED_ON _IOW(‘K‘ 4 int)
#define LED_OFF _IOW(‘K‘ 5 int)
#define TCFG0 0x00 //配置寄存器0
#define TCFG1 0X04 //配置寄存器1
#define TCON 0x08
#define TCNTB0 0x0C
#define TCMPB0 0x10
#define GPDCON 0x114000A0
#define TIMER_base 0x139D0000
#define FS4412_GPL2CON 0x11000100
#define FS4412_GPL2DAT 0x11000104
#define FS4412_GPK1CON 0x11000060
#define FS4412_GPK1DAT 0x11000064
#endif
void fs4412_led_off(int);
void fs4412_led_on(int);
int number_of_device = 1;
static int *gpl2con;
static int *gpl2dat;
static int *gpk1con;
static int *gpk1dat;
//_____________________________________________________
struct fs4412_gpio
{
unsigned int *gpdcon;
void __iomem *timer_base;
struct cdev cdev;
};
static struct fs4412_gpio *gpik;
//_____________________________________________________
static long fs4412_gpio_ioctl( struct file *files unsigned int cmd unsigned long arg){
int data;
if (_IOC_TYPE(cmd) != ‘K‘)
return -ENOTTY;
if (_IOC_NR(cmd) > 5)
return -ENOTTY;
if (_IOC_DIR(cmd) == _IOC_WRITE)
if (copy_from_user(&data (void *)arg sizeof(data)))
return -EFAULT;
switch(cmd)
{
case LED_ON:
fs4412_led_on(data);
break;
case LED_OFF:
fs4412_led_off(data);
break;
case PWM_ON:
writel((readl(gpik->timer_base + TCON) & ~0x1f) | 0x9 gpik->timer_base + TCON);
break;
case PWM_OFF:
writel(readl(gpik->timer_base + TCON) & ~0x1f gpik->timer_base + TCON);
break;
case SET_PRE:
writel(readl(gpik->timer_base + TCON) & ~0x1f gpik->timer_base + TCON);
writel((readl(gpik->timer_base + TCFG0) | 0xff) | (data & 0xff) gpik->timer_base + TCFG0);
writel((readl(gpik->timer_base + TCON) & ~0x1f) | 0x9 gpik->timer_base + TCON);
break;
case SET_CNT:
writel(data gpik->timer_base + TCNTB0);
writel(data >> 1 gpik->timer_base + TCMPB0);
break;
default:
printk(“Invalid argument“);
return -EINVAL;
}
return 0;
}
static int fs4412_gpio_rlease(struct inode *inode struct file *file){ //release操作,熄灭所
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-11-12 10:47 driver\
目录 0 2018-11-12 10:47 driver\GPIO_LED_BEEP\
文件 9424 2018-11-10 19:47 driver\GPIO_LED_BEEP\gpio_drv.c
文件 642 2018-11-09 15:33 driver\GPIO_LED_BEEP\gpio_drv.h
文件 6534 2018-11-10 19:10 driver\GPIO_LED_BEEP\GPIO_LED_BEEP.zip
文件 1602 2018-11-10 18:57 driver\GPIO_LED_BEEP\gpio_test.c
文件 755 2018-11-09 12:28 driver\GPIO_LED_BEEP\Makefile
文件 4576 2018-11-10 18:58 driver\GPIO_LED_BEEP\pwm_music.h
文件 763 2018-11-09 20:06 driver\GPIO_LED_BEEP\test.c
目录 0 2018-11-12 10:48 driver\KEY_irp\
文件 3193 2018-11-12 15:54 driver\KEY_irp\fs4412_key.c
相关资源
- IAR For ARM 7.3最新注册机
- 郭天祥ARM9视频教程
- IAR ARM 7.8破解
- IAR For ARM V5.5 注册机
- IAR for ARM 7.40 破解
- IAR For ARM 7.4 破解
- arm触摸屏与LCD校准程序三点校准法
- ARM嵌入式项目实战
- 基于ARM蓝牙传输源程序
- USB 驱动 让电脑与arm进行通信
- arm flash 烧写程序源码
- 基于LW IP的嵌入式串口服务器的设计与
- Studies In Vitro and In Vivo of Pharmacologica
- Research on pharmacological effects of lycorin
- ARM64 完整指令集,学习必备
- WINCC报表(OLE-DB Tag and Alarm Export_V8.x
- ARM9指令cache的verilog代码
- 基于ARM7处理器的CAN总线网络设计
- 基于ARM和GPRS的无线通信系统设计
- 关于proteus仿真arm7出现错误的问题
- 基于ARM7的LCD显示电压示波系统的设计
- 基于ARM7和DSP的逆变电源设计电路
- 基于ARM开发板的车辆检测系统控制单
- ARM7TDMI-S在嵌入式系统中的Bootloader代码
- ARM汇编指令集PDF
- 基于ARM7 PWM定时器的图像传感器时序信
- 基于ARM7的分布式远程测控系统设计
- LPC2100系列ARM7微控制器加密ARM芯片
- ARM7内核的中断屏蔽方法
- 基于ARM7TDMI微处理器的矿用电子皮带秤
评论
共有 条评论