完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
RT 之前在裸机上使用的是定时器中断的方式 现在要在linux上实现 但是查资料后发现好多人说linux上无法产生1ms或更低的定时器中断 我之前尝试mod_tiMER 的确最低只能精确到10ms 求各位大神帮忙啊 真的无法实现吗 驱动里可不可以像裸机那样设置寄存器啊 或者有没有其他的方法?
|
|
相关推荐
4个回答
|
|
今天没啥时间了,明天再搞 网上看到说用void ndelay(unsigned long nsecs);这个延时函数 能精确到ns 真的准吗- -? 求大佬解答
|
|
|
|
学习学习,谢谢分享!
|
|
|
|
在别的地方找到方法了 之前在别的帖子看有人还说linux嵌入式上无法实现1Khz以上的准确波形输出。。。。
关键代码贴下吧 和裸机操作寄存器有些像 static irqreturn_t timer_interrupt(void) { //此处略去若干行 return IRQ_HANDLED; } unsigned long Ftclk,Fpclk=50000000; //s3c2440a+--?+Fpclk+?0MHz unsigned int tcfg0,tcfg1,tcon; s3c2410_gpio_cfgpin(S3C2410_GPB(1), S3C2410_GPIO_OUTPUT); s3c2410_gpio_setpin(S3C2410_GPB(1), 0); tcfg0 = inl(S3C2410_TCFG0); tcfg1 = inl(S3C2410_TCFG1); tcon = inl(S3C2410_TCON); |
|
|
|
outl((tcfg0 &= ~0xff) ,S3C2410_TCFG0);
outl((tcfg1 &= ~0xf) ,S3C2410_TCFG1); Ftclk=Fpclk/2; //?++datasheet+?+ outl(434,S3C2410_TCNTB(0)); outl(0,S3C2410_TCMPB(0)); outl(tcon | S3C2410_TCON_T0MANUALUPD,S3C2410_TCON); tcon = inl(S3C2410_TCON) & ~S3C2410_TCON_T0MANUALUPD; outl(tcon | (S3C2410_TCON_T0START|S3C2410_TCON_T0RELOAD),S3C2410_TCON); ret=request_irq(timer_irq,&timer_interrupt, IRQF_DISABLED, DEVICE_NAME,NULL); if(ret<0){ printk("Register IRQ_TIMER0 failed!n"); return ret; } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
FacenetPytorch人脸识别方案--基于米尔全志T527开发板
206 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-CAN编程示例之开发板测试
1046 浏览 0 评论
该问题是用APP给芯海科技的CST92F25芯片发指令是出现的
3494 浏览 1 评论
877 浏览 0 评论
1745 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 04:21 , Processed in 0.717137 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号