首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

关于linux LED驱动的有关问题

2012-06-12 
关于linux LED驱动的问题我想直接在驱动中实现LED闪烁的功能,在延时这个问题纠结了很久,不想用ioctl的方法

关于linux LED驱动的问题
我想直接在驱动中实现LED闪烁的功能,在延时这个问题纠结了很久,不想用ioctl的方法,最好是打开led就可以直接实现闪烁的功能,试过udelay,
也试过采用循环进行延时,但是就是不成功
static volatile unsigned int num = 10000000;

void wait(unsigned int n)
{
  unsigned int i;  

  for(i = 0; i < n; i++)
  ;
}

wait(num);

求解答。。。

[解决办法]
你好:
看了你的wait函数:unsigned int 取值范围 0---65535。
你取值太大了。宁愿用两个for循环,内嵌一个。

还有就是blink的功能其实很多芯片都有定义的。只要设置延时还有gpio dir就可以。

谢谢
[解决办法]
HI:

设置LED的寄存器没有中断的概念。当然你要中断有联系也是可以的。关键看你怎么做。

针对以上的你的代码我先分析一下,看看对你是不是有用。
1,你是在boot中还是kernel中。
2,单独的执行一个ledoff的操作是不是灯就会熄灭。同样on的话就是点亮。
3,延时函数是不是太短了,闪烁的频率太高,所以没有观察到。

针对1,其实做一个module.ko就可以。自己写一个,然后编译。insmod。关键是使用什么接口去控制。ioctl还是sysfs?我以前做的ioctl,copyfromuser把命令带到内核模块。然后再对相应的GPIO设置。

针对2,设置GPIO的时候一点要注意dir这个寄存器。我记得非常清楚。当时也是搞了半天,万用表就是没有测试到3.3V的电平。方向一定要设置为out的。

热点排行