arm什么时候用中断

有这么几种情况:1,key按键驱动2,adc转换驱动3,wdt看门狗驱动4,蜂鸣器驱动5,led驱动6,i2c驱动………在什么情况下才要使用驱动?为什么?逻辑有点乱,希望... 有这么几种情况: 1,key按键驱动 2,adc转换驱动 3,wdt看门狗驱动 4, 蜂鸣器驱动 5,led驱动 6,i2c驱动 ………
在什么情况下才要使用驱动?为什么?
逻辑有点乱,希望能从一个高度上给分析一下,多谢多谢了!
说错了,是什么情况下使用中断。
展开
 我来答
一往情深0418
2013-11-15 · 超过13用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:20.3万
展开全部
中断有几种分类,硬件中断与软件中断,或者可屏蔽中断与不可屏蔽中断,...。中断的使用通常先配置其中断产生条件与使能,并且配置优先级与中断入口函数。你说的这6种,有的可能使用了中断,有的可能没有使用中断。
为什么使用中断?简单来说,就是让CPU忙别的事情先,等中断产生条件成立了,通知CPU过来看一下。
什么情况使用中断?比如你说的第一种,按键驱动也可以用中断做,也可以不用中断做,不用中断做CPU就忙一点,严重的时候实时性就很差。
拿ADC来说,我们可以在程序中配置为测量完成后产生中断,那么芯片在此路AD转换完成后产生中断让CPU知道,然后PC指针跳到指定的中断函数中,这时候可以自己写程序读ADC的数据寄存器,进而转换成你想要得到的数值。如果多个中断同时产生,CPU会通过优先级决定响应哪个中断。
弄明白哪些工作是CPU自动完成的,哪些工作是自己要写程序完成,不管ARM还是其他的单片机,都应该是这个过程。ARM的中断是异常的一种。每款芯片的中断系统不尽相同。中断处理涉及现场保存与恢复,寄存器或资源的访问权限,编程的时候还要考虑函数的可重入。总之中断弄明白了,单片机就拿下了。然后在C语言上下功夫。进而可以考虑移植一个简单的多任务内核如ucos,高档的芯片可以引导下linux之类的。本人浅见,请指教。加群164908355讨论。
追问
如果按键驱动不用中断做,是不是就只相当于一个类似于手电筒的开关,系统不知道啊?
可是它也调用了相应的寄存器了。
按键用中断有什么效果,若是通知系统做出相应的效果,是不是就必须用到中断了?比如在显示器上显示出哪个按键被按下
追答
当然得让CPU知道。
不用中断是这样做的,CPU时刻检查按键的管脚是否有电平变化。如果你按下按键接着松开(一般来说,按键吸和的时间大约为30毫秒),这时候电平会有30ms的变化,如果这30ms内CPU正好执行到检查按键管脚这一步,那么CPU就知道电平变化了,即按键被按下了。如果这30ms期间CPU正在执行其他的程序,那么CPU就没有检查到按键被按下,结果上来看就是按了一下没反应。
如果使用中断,可以认为中断控制器与CPU之间是独立的两个单位,中断控制器别的不做,就是一直判断是否有按键按下,如果有按键按下,不管CPU在干什么,中断控制器就通知CPU这里发生了按键被按下了。至于你CPU如何处理,反正中断控制器已经发出通知了。CPU要是把PC指针跳过来确定一下是不是按键被按下了,就是中断被响应了(你想一下这样的实时性肯定要好吧!),如果CPU没有过来看,就是中断被屏蔽了,这时候要考虑按键的中断是否配置的不合适。
单片机这种基于前后台的程序一般是一个while(1)死循环,CPU按部就班的一步步执行。与之对应的是中断,中断就是异步事件,说不定什么时候就来一下。按键就是说不定什么时候就按一下,这样在设计的时候就得把按键归结到异步事件中,那么异步事件的驱动实现最好的方法就是中断。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式