TQ2440在linux下控制AD实验总结OK_第1页
TQ2440在linux下控制AD实验总结OK_第2页
TQ2440在linux下控制AD实验总结OK_第3页
TQ2440在linux下控制AD实验总结OK_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、TQ2440在linux下控制 AD实验总结myadc.c:#include #include Vinux/delay .h#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include vola

2、tile unsigned long *adccon = NULL; /adc 控制寄存器volatile unsigned long *adctsc = NULL; /adc触摸屏控制寄存器volatile unsigned long *adcdly = NULL; /adc起始延迟寄存器volatile unsigned long *adcdatO = NULL; /adc转换数据寄存器volatile unsigned long *adcdat1 = NULL; /adc转换数据寄存器volatile unsigned long *intmsk = NULL;#define MYADC_

3、MAJOR 150/*预设的 globalmem 的主设备号 */static int myadc_major = MYADC_MAJOR; struct cdev* adc_cdev;ssize_t drive_read(struct file *file, char *buf, size_t count, loff_t *f_ops)int val;printk(drive read okn);*adccon |= (1 14) | (0xff 6) | (2 ops = &drive_ops;cdev_init (&adc_cdev, &drive_ops);cdev_add(&adc_

4、cdev, dev, 1);adccon = (volatile unsigned long *)ioremap(0x58000000, 16); adctsc = (volatile unsigned long *)ioremap(0x58000004, 8); adcdly = (volatile unsigned long *)ioremap(0x58000008, 16); adcdat0 = (volatile unsigned long *)ioremap(0x5800000c, 16); adcdat1 = (volatile unsigned long *)ioremap(0x

5、58000010, 16); intmsk = (volatile unsigned long *)ioremap(0x4a000008, 32); printk(drive button init okn);return 0;static void _exit exit_drive(void)dev_t dev;dev = MKDEV(myadc_major, 0);cdev_del(&adc_cdev);unregister_chrdev_region(dev, 1);printk(drive button exit okn);module_init(init_drive); module

6、_exit(exit_drive);MODULE LICENSE(GPL);Makefile :ifneq ($(KERNELRELEASE),)obj-m :=myadc.oelseKERNELDIR ?= /home/book/opt/EmbedSky/linux-2.6.30.4/PWD := $(shell pwd)default:$(MAKE) -C $(KERNELDIR) M=$(PWD) modulesclean:rm -rf *.o * core .depend .*cmd *ko *mod.cendiftest.c:#include #include #include #i

7、nclude #include int main(int argc, char *argv)int fd, ret;int val;fd = open(/dev/myadc, O_RDWR);if(fd = -1)printf(cant open device mknod %s c zhu ci n, /dev/myadc); return 0;whileread(fd,&val,sizeof(val);printf(appn);printf(val=%dn,val);sleep(3);ret = close(fd);if (ret = -1)printf(app close error!n);return 0;return 0;实验现象:拨动可调电阻改变电压,发现数值会随之发生变化。rootEmbedSky /# insmod myadc.kodrive button init okrootEmbedSky /# ls -l /dev/myadccrw-rw-1 root root10, 55 Feb 24 11:38 /dev/myadcrootEmbedSky /# cat /proc/devicesCharacter devices:7 vcs10 misc13 inputrootEmbedSky/# ./testdrive read okdrive val=5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论