(驱动)简单定时器编写练习(2014/8/23)

/*定时点亮LED然后定时熄灭*/

#include <linux/init.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/delay.h>
#include <linux/jiffies.h>
#include <linux/timer.h>

#include <asm/uaccess.h>
#include <asm/io.h>

volatile unsigned long virt,phys = 0xe0200280;
volatile unsigned long *GPJ2CON,*GPJ2DAT;
struct timer_list time1;
struct timer_list time2;

static void init(void)
{
	virt = (unsigned long)ioremap(phys,0x8);
	GPJ2CON = (unsigned long *)(virt + 0x00);
	GPJ2DAT = (unsigned long *)(virt + 0x04);
	
	*GPJ2CON &= 0xffff0000;
	*GPJ2CON |= 0x00001111;
	
	*GPJ2DAT |= 0x0f;
}

static void led1(unsigned long data)	//点亮LED
{
	 *GPJ2DAT &= 0xf0;	
}

static void led2(unsigned long data)//熄灭LED
{
	*GPJ2DAT |= 0x0f;
}

static __init int test_init(void)
{
	init();
	setup_timer(&time1,led1,NULL);
	time1.expires = jiffies + 1000;
	add_timer(&time1);  //定时器启动,等待触发。

	setup_timer(&time2,led2,NULL);
        time2.expires = jiffies + 2000;
        add_timer(&time2);

	return 0;
}

static __exit void test_exit(void)
{

}

module_init(test_init); 
module_exit(test_exit);  
MODULE_LICENSE("GPL");
MODULE_AUTHOR("henry");
MODULE_DESCRIPTION("This is test demo");


在kernel/drivers/char下的Kconfig里面添加

config LED_TIME 
        tristate "LED TIME"
        default y


kernel/drivers/char下的Makefile里面添加

obj-m       += led-time.o


在kernel下编译:$ make menuconfig

                           $ make modules


把 led-time.ko下载到开发板上:

    $  tftp  -g  -r  led-time.ko 192.168.x.x

装载模块:$  insmod  led-time.ko

卸载模块:$  rmmod  led-time.ko



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值