1-35、讯为驱动-ioremap控制GPIO寄存器

1.利用拨码开关来实现GPIO的输入
    先看一下原理图
    KP_COL0→GPL2_0 
    datasheet:GPL2CON,GPL2DAT,GPL2PUD
    Add = Base Address+Offset
    GPL2CON = 0x1100_0000 + 0x0100 = 0x11000000 + 0x0100
        s3c_gpio_cfgpin
    GPL2DAT = 0x1100_0000 + 0x0104 = 0x11000000 + 0x0104
        gpio_set_value
    GPL2PUD = 0x1100_0000 + 0x0108 = 0x11000000 + 0x0108
    
    
    寄存器不一定都是32位的,也有16和8位的
    写寄存器的时候需要注意
    
2.驱动
    只使用module_init和module_exit,注册设备以及注册驱动都不弄了,简化
    加载驱动的时候,小灯亮。卸载的时候小灯灭
3.Makefile文件简单修改
4.测试   

 程序源码

#include <linux/init.h>
#include <linux/module.h>
#include <asm/io.h>

MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("TOPEET");

//用于存放虚拟地址和物理地址
volatile unsigned long virt_addr,phys_addr;
//用户存放三个寄存器的地址
volatile uns

猜你喜欢

转载自blog.csdn.net/poor_guy_liu/article/details/103699532