三星 SMDKC210 开发板的最简单的LED驱动

本文介绍了如何在三星SMDKC210开发板上实现简单的LED驱动,包括查找LED对应的GPIO端口、添加头文件、构建模块框架、编写LED开关函数及制作Makefile。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请注明出处:http://blog.youkuaiyun.com/lihaoweiV   李浩炜的优快云博客


三星 SMDKC210 开发板上 简单的LED驱动

步骤:

1. 因为LED灯的亮和灭是受GPIO控制的, 从SMDKC210板的schematics图中查出,LED4 对应的GPIO端口是 GPX1_4,这个详细可以看我另一篇LED驱动的文章《I/O Ports中的GPFCON和GPFDAT寄存器

2. 添加必要的头文件

3. 实现模块的框架,比如init, exit, LICENSE等

4. 写led_on, led_off函数

    4.1 申请GPX1_4端口

    4.2 将GPX1CON[4] 设为OUTPUT, 以上两步这里用一个函数gpio_request_one完成

    4.3 将GPX1DAT[4] 设为 0 (亮)  1(灭)

5. 写Makefile


****************************************** led_test.c **********************************************************************

     

  #include <linux/init.h>
  #include <linux/module.h>
  #include <linux/delay.h>           // 将GPX端口设置数值的时候,需要等待一段时间让输出稳定,故用到mdelay函数
  #include <linux/gpio.h>             // 申请GPIO端口的函数, 三星定义的GPIO端口的地址等

  
  
  static int led_on(void)
  {
         int err;
         err = gpio_request_one(EXYNOS4_GPX1(4), GPIOF_OUT_INIT_HIGH, "GPX1");
         if(err){
                 printk(KERN_ALERT "failed to request GPX1 for led control\n");
                 return err;
         }
         mdelay(100);
 
         gpio_set_value(EXYNOS4_GPX1(4), 0);
         mdelay(100);
         gpio_free(EXYNOS4_GPX1(4));
 
         return 0;
 }
 
 static int led_off(void)
 {
 
         int err;
         err = gpio_request_one(EXYNOS4_GPX1(4), GPIOF_OUT_INIT_HIGH, "GPX1");
         if(err){
                 printk(KERN_ALERT "failed to request GPX1 for led control\n");
                 return err;
         }
         mdelay(100);
 
         gpio_set_value(EXYNOS4_GPX1(4), 1);
         mdelay(100);
         gpio_free(EXYNOS4_GPX1(4));
 
         return 0;
 }
 
 static int led_init(void)
 {
         printk(KERN_ALERT "led is on\n");
         led_on();             //让LED4 亮
         return 0;
 }
 

 static void led_exit(void)

 {

         printk(KERN_ALERT "led is off\n");
         led_off();             //让LED4灭
 }
  
 module_init(led_init);
 module_exit(led_exit);
 
 MODULE_AUTHOR("Alvin Lee");
 MODULE_LICENSE("GPL");
                                                                                                          

****************************************** Makefile **********************************************************************

  obj-m   := led_test.o
  
          KDIR    := /home2/alvinlee/v310_2/android-kernel-samsung-dev
          PWD     := $(shell pwd)
  
  default:
          $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
  
  clean:
          rm -rf *.ko
          rm -rf *.mod.*
          rm -rf .*.cmd
          rm -rf *.o       
                           

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值