发新帖

第一个驱动代码-点亮led

[复制链接]
1663 0

本文包含源代码、原理图、PCB、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
linux环境下编译通过
部分代码如下:
static int ledopen(struct inode *inode, struct file *file)
{
*gpfcon &= ~(0x3<<(pin*2));
*gpfcon |= (0x1<<(pin*2));
return 0;
}
static ssize_t ledwrite(struct file *file, const char __user *buf, size_t count, loff_t * ppos)
{
int val,ret;
ret = copy_from_user(&val, buf, count);
if (val == 1)
{
  *gpfdat &= ~(1<<pin); Makefile.txt (216 Bytes, 下载次数: 0)


}
else
{
  *gpfdat |= (1<<pin);
}
return 0;
}
static struct file_operations ledops = {
    .owner  =   THIS_MODULE,   
    .open   =   ledopen,      
    .write  = ledwrite,   
};
static struct miscdevice ledmisc = {
MISC_DYNAMIC_MINOR,
"platled",
&ledops,
};
static int ledprobe(struct platform_device *pdev)
{
struct resource *res;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
gpfcon = ioremap(res->start, res->end - res->start + 1);
gpfdat = gpfcon + 1;
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
pin = res->start;
misc_register(&ledmisc);
return 0;
}
static int ledremove(struct platform_device *pdev)
{
iounmap(gpfcon);
misc_deregister(&ledmisc);
return 0;
}
struct platform_driver leddri = {
.probe  = ledprobe,
.remove  = ledremove,
.driver  = {
  .name = "myled",
}
};
static int led_init(void)
{
platform_driver_register(&leddri);
return 0;
}
static void led_exit(void)
{
platform_driver_unregister(&leddri);
}
module_init(led_init);
module_exit(led_exit);
MODULE_LICENSE("GPL");
如需获取其他代码,请下载附件

leddev.c.txt

938 Bytes, 下载次数: 0, 下载积分: 下载币 -1

leddev.c

leddri.txt

1.7 KB, 下载次数: 0, 下载积分: 下载币 -1

测试代码

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

更多

客服中心

微信扫描二维码 服务时间:周一至周日 8:30-22:00
快速回复 返回顶部 返回列表