历史上的今天

今天是:2024年10月12日(星期六)

正在发生

2018年10月12日 | Tiny210驱动之LED测试

发布者:RadiantExplorer 来源: eefocus关键字:Tiny210驱动  LED测试 手机看文章 扫描二维码
随时随地手机看文章

first_drv.c驱动源码:

#include "linux/device.h"

#include "linux/module.h"

#include "linux/kernel.h"

#include "linux/fs.h"

#include "linux/init.h"

#include "linux/delay.h"

#include "asm/uaccess.h"

#include "asm/irq.h"

#include "asm/io.h"

static struct class *firstdrv_class;

volatile unsigned long *gpj2con = NULL;

volatile unsigned long *gpj2dat = NULL;

static int first_drv_open(struct inode *inode, struct file *file)

{

    // 配置GPJ2_0,GPJ2_1,GPJ2_2,GPJ2_3为输出 

    *gpj2con &= ~((0xf<<(0*4)) | (0xf<<(1*4)) | (0xf<<(2*4)) | (0xf<<(3*4)));

    *gpj2con |= ((0x1<<(0*4)) | (0x1<<(1*4)) | (0x1<<(2*4)) | (0x1<<(3*4)));

    return 0;

}

static ssize_t first_drv_write(struct file *file, const char __user *buf, size_t count, loff_t * ppos)

{

    int val;

    copy_from_user(&val, buf, count); //    copy_to_user();

    if (val == 1)

    {

        // 点灯

        *gpj2dat &= ~((1<<0) | (1<<1) | (1<<2) | (1<<3));

    }

    else

    {

        // 灭灯

        *gpj2dat |= (1<<0) | (1<<1) | (1<<2) | (1<<3);

    }

    

    return 0;

}

static struct file_operations first_drv_fops = {

    .owner  = THIS_MODULE,    // 这是一个宏,推向编译模块时自动创建的__this_module变量 

    .open   = first_drv_open,     

    .write  = first_drv_write,       

};

int major;

static int first_drv_init(void)

{

    major = register_chrdev(0, "first_drv", &first_drv_fops); // 注册, 告诉内核

    firstdrv_class = class_create(THIS_MODULE, "firstdrv");

    device_create(firstdrv_class, NULL, MKDEV(major, 0), NULL, "xyz"); // /dev/xyz 

    gpj2con = (volatile unsigned long *)ioremap(0xE0200280, 16);

    gpj2dat = gpj2con + 1;

    return 0;

}

static void first_drv_exit(void)

{

    unregister_chrdev(major, "first_drv"); // 卸载

    device_destroy(firstdrv_class, MKDEV(major, 0));

    class_destroy(firstdrv_class);

    iounmap(gpj2con);

}

module_init(first_drv_init);

module_exit(first_drv_exit);

MODULE_LICENSE("GPL");

====================================================================

firstdrvtest.c测试程序:

#include "sys/types.h"

#include "sys/stat.h"

#include "fcntl.h"

#include "stdio.h"

// firstdrvtest on

// firstdrvtest off

int main(int argc, char **argv)

{

    int fd;

    int val = 1;

    fd = open("/dev/xyz", O_RDWR);

    if (fd < 0)

    {

        printf("can't open!\n");

    }

    if (argc != 2)

    {

        printf("Usage :\n");

        printf("%s 《on|off》\n", argv[0]); //实际为"<"

        return 0;

    }

    if (strcmp(argv[1], "on") == 0)

    {

        val  = 1;

    }

    else

    {

        val = 0;

    }

    

    write(fd, &val, 4);

    return 0;

}


关键字:Tiny210驱动  LED测试 引用地址:Tiny210驱动之LED测试

上一篇:Tiny210驱动之KEY测试
下一篇:S3C2440和S5PV210的声卡对比

推荐阅读

在10月11日召开的纪念集成电路发明60周年学术会议上,中科院院士、中国科学院上海微系统与信息技术研究所所长王曦表示,传感器是未来智能感知时代的重要基础,根据调研机构Yole数据,传感器市场已经超过400亿美元,到2020年则接近600亿美元。目前,我国传感器芯片市场国有化率不足10%,进口依赖问题较集成电路整体情况更为严重。 王曦表示,智能传感器是人...
人生易老天难老,岁岁重阳,今又重阳。九九重阳这一属于家庭的节日,伴着国庆长假最后一天,成为无数子女离开老人的日子。由于老龄化速度加快,家庭年轻成员与老年成员的比例不断下降,子女与父母同一屋檐下照护的养老模式已成为过去。当衣食住行变成“医”食住行,人力短缺加剧陪护压力,如何兼顾工作与父母的养老问题?未来,谁又给我们自己养老?在人工...
动态数码管显示DS18B20测温显示,折腾好几天了,终于搞定了,开始要么不能正常显示温度,要么乱跳动。究其原因是DS18B20读写的时序太严格了,程序中动态数码管显示需要开定时中断扫描显示,折腾多天的问题就是这个定时中断打断了正常的读写时序。单片机源程序如下:/*********测试DS18B20测温数码管动态显示**********/#include<STC90C52.h>#include"ds18b20...
近日,在世界经济论坛(WEF)发布新一期全球制造业领域“灯塔工厂”名单中,三一重工桩机工厂入选。世界最大的混凝土机械制造商、亚洲最大的智能制造车间、中国最聪明的工厂……三一重工拥有许多令人艳羡的“头衔”。“世界第一高楼”阿联酋迪拜塔、“中国第一高楼”上海中心大厦、“中国第一高塔”广州小蛮腰等超高层建筑,皆有三一重工的身影。随着新一...

史海拾趣

问答坊 | AI 解惑

散热器材料的选择

散热片的制造材料是影响效能的重要因素,选择时必须加以注意!目前加工散热片所采用的金属材料与常见金属材料的热传导系数:   金        317 W/mK   银             429 W/mK ...…

查看全部问答∨

基于SA4828的三相组合式逆变器设计

电源设备是一种量大面广、通用性很强的电子产品。几乎在现代通讯、电子仪器、计算机、工业自动化、电力工程、国防等部门都要使用电源,在其它各个行业及日常生活中,电源也得到了广泛应用。随着科学技术的发展,对电源设备也提出了更高的要求。为了 ...…

查看全部问答∨

寻求电容、电阻、毫伏等信号采集单片机开发工程师长期技术合作

寻求电容、电阻、毫伏等信号采集单片机开发工程师长期技术合作,有意者请发邮件至LUKEBS@126.COM…

查看全部问答∨

WINCE 5 不启动explorer.exe则不能使用activesync?

WINCE 5 for ARM,为了开机自动运行自己的app,修改了HKEY_LOCAL_MACHINE\\init 去掉explorer的launch,改为开机自动运行自己的app,发现app是自动运行了,但是和winxp的sync功能不能使用了! 这个是怎么回事?…

查看全部问答∨

stm8s +pdiusbd12 无法读ID,请指教

我读的总是错,我参考的是圈圈的代码, void main(){  CS_CLR;  //CS_N=0;   PG4 SUSP_CLR; // SUSP=0; PG5 REST_SET;//RST=1;  PG1 EOT_SET;//EOT=1; PG0 DMACK_SET;  //DMACK=1; PG3 ...…

查看全部问答∨

德州仪器新型LED驱动芯片瞄准大屏幕彩显领域

想知道TI在LED领域的新产品吗?快来看啧个哦~…

查看全部问答∨

09年全国电子竞赛优秀论文

本帖最后由 paulhyde 于 2014-9-15 03:18 编辑  不错的资料  …

查看全部问答∨

Zigbee通信不稳定,求教

自己做的Zigbee模块,建立连接什么的都没问题,但是连接建立十多分钟后,模块就开始不稳定了,请问是为什么呢…

查看全部问答∨

请教:MSP430F5438A并口仿真器的使用问题

本人新学MSP430,用的是并口仿真器,按网上所说并口模式改为EPP+ECP,并将Debugger-》Driver设置成Fet-Debugger,Fet debugger ->setup设置为LPT-IF,但是没有办法下载程序,总是报错: Fatal error: Failed to initialize.  Check if ...…

查看全部问答∨

430开发板板级支持包BSP430

MSPGCC的维护者Peter(pabigot) 最近完成了MSP430板级支持包的发布, 一般BSP都是一些比较高端或者复杂些的板子才会有,MSP430板级支持包的发布, 说明430的开发环境越来越成熟,越来越丰富了。 既来之则用之,哈哈! 目前主要支持MSP430的官方 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved