资源简介
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
相关资源
- arm交通灯控制系统
- ARM linux 和上位机windows10进行TCP/IP网络
- 嵌入式视频教程.txt
- 8.11.1版本IAR+破解文件
- 人脸识别在arm板上的实现
- SSP作SPI从机实验.rar
- 基于ARM和GPRS的无线数据传输模块的设
- exynos4412裸机系列教程源码之心跳灯实
- exynos4412裸机系列教程源码之蜂鸣器
- PyCharm汉化后设置界面打不开完美解决
-
mpla
yer在S3C2410上的移植 - Low conversion-loss fourth subharmonic mixers
- GarminUnlockerAlternativev8.0.1
- 用Qt控制开发板led和蜂鸣器
- ARM&Thumb; opcode
- IAR for ARM 7.6 安装文件+和谐文件
- 3个ARM嵌入式编程的,我的结课作业,
- IAR5.4环境下调试ARM S3C2440的完整工程
- 华清远见uboot和linux内核移植实验手册
- 智能小车QT远程客户端
- threadx 在arm9 上的移植指导
- 基于ARM的时钟显示程序
- 音乐简谱转换为16进制数据
- IAR for ARM 7701 7702 7801-7804-12495
- ucos移植ARM9移植过程及心得
- arm9上移植ucos教程及源码大全
- 嵌入式ARM ,Linux,GPS导航
- ARM9(S3C2440PCB)
- LPC2119(ARM7)源代码
- ARM汇编指令集全面,分类详细
评论
共有 条评论