共2条 1/1
1
跳转至
页
2410里的ADC怎么用阿?
这个驱动怎么没有file_operations,没有open操作?初始化的时候也没有注册设备? 编译以及insmod都没问题。我的板子是s3c2410,系统是mizi的armlinux。 应用程序怎么用这个驱动啊? #include #include #include #include #include #include #include #include #include #undef DEBUG #ifdef DEBUG #define DPRINTK(x...) {printk(__FUNCTION__"(%d): ",__LINE__);printk(##x);} #else #define DPRINTK(x...) (void)(0) #endif #define START_ADC_AIN(x) \ { \ ADCCON = PRESCALE_EN | PRSCVL(255) | ADC_INPUT((x)) ; \ ADCCON |= ADC_START; \ } static struct semaphore adc_lock; static wait_queue_head_t *adc_wait; static void adcdone_int_handler(int irq, void *dev_id, struct pt_regs *reg) { wake_up(adc_wait); } int s3c2410_adc_read(int ain, wait_queue_head_t *wait) { int ret = 0; if (down_interruptible(&adc_lock)) return -ERESTARTSYS; adc_wait = wait; START_ADC_AIN(ain); sleep_on_timeout(adc_wait, HZ/100); /* 10ms */ #if 0 if (signal_pending(current)) { up(&adc_lock); return -ERESTARTSYS; } #endif ret = ADCDAT0 ; up(&adc_lock); adc_wait = NULL; DPRINTK("AIN[%d] = 0x%04x, %d\n", ain, ret, ADCCON & 0x80 ? 1:0); return (ret & 0x3ff); } int __init s3c2410_adc_init(void) { init_MUTEX(&adc_lock); /* normal ADC */ ADCTSC = 0; //XP_PST(NOP_MODE); if (request_irq(IRQ_ADC_DONE, adcdone_int_handler, SA_INTERRUPT, "ADC", NULL) < 0) goto irq_err; return 0; irq_err: return 1; } module_init(s3c2410_adc_init); #ifdef MODULE void __exit s3c2410_adc_exit(void) { free_irq(IRQ_ADC_DONE, NULL); } module_exit(s3c2410_adc_exit); MODULE_LICENSE("GPL"); #endif
关键词: 2410里 怎么 用阿
共2条 1/1
1
跳转至
页
回复
有奖活动 | |
---|---|
5月直播——【探索边缘智能的未来——直播盛宴即将开启!】 | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
【有奖活动】智能可穿戴设备AR/VR如何引领科技新潮流! | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 |