ISR之不能做什么
2018-03-10 16:59
267 查看
问题:
1.ISR 不能有返回值。为什么?
2.ISR 不能传递参数。为什么?
裸奔的系统:
硬件中断响应程序的插入时机是随机的,程序中不存在这样的调用语句:“value=interrupter( )”, 返回值也不知返回给谁。 同理,如果中断函数有形参,但因没有调用者,也就没有实参对形参赋值。所以,不可能有参数传递。
裸奔系统中,中断程序由硬件触发执行。这意味着中断函数没有具体的调用者,所以,中断函数无法将值返回给任何对象
非裸奔系统:
操作系统执行各种调度安排,所以接管了中断的出入口;另外,还增加了许多软件中断。这些中断函数的运行插入时机不再是随机。一个中断申请发生后,其运行时机取决于操作系统的调用。也就是说,有了调用者,所以可以有返回值和参数传递。
总结:
中断是嵌入式系统中重要组成部分,很多编译器开发商都让标准c支持中断,并引入关键字_interrupt.但是:
1、ISR不应该有返回值;
2、ISR不应该传递参数;
3、ISR应该是短而高效的,ISR中的浮点运算是不明智的;
4、ISR中不应该有性能上的问题,因此不应该使用pintf()函数。
另:http://blog.csdn.net/pointfish/article/details/6530177
1.ISR 不能有返回值。为什么?
2.ISR 不能传递参数。为什么?
裸奔的系统:
硬件中断响应程序的插入时机是随机的,程序中不存在这样的调用语句:“value=interrupter( )”, 返回值也不知返回给谁。 同理,如果中断函数有形参,但因没有调用者,也就没有实参对形参赋值。所以,不可能有参数传递。
裸奔系统中,中断程序由硬件触发执行。这意味着中断函数没有具体的调用者,所以,中断函数无法将值返回给任何对象
非裸奔系统:
操作系统执行各种调度安排,所以接管了中断的出入口;另外,还增加了许多软件中断。这些中断函数的运行插入时机不再是随机。一个中断申请发生后,其运行时机取决于操作系统的调用。也就是说,有了调用者,所以可以有返回值和参数传递。
总结:
中断是嵌入式系统中重要组成部分,很多编译器开发商都让标准c支持中断,并引入关键字_interrupt.但是:
1、ISR不应该有返回值;
2、ISR不应该传递参数;
3、ISR应该是短而高效的,ISR中的浮点运算是不明智的;
4、ISR中不应该有性能上的问题,因此不应该使用pintf()函数。
另:http://blog.csdn.net/pointfish/article/details/6530177
相关文章推荐
- ISR之不能做什么
- ISR之不能做什么
- ISR之不能做什么
- ISR之不能做什么
- 技术不能做什么
- 在开发iMatrix平台项目时不能看到注册小窗体按钮的原因是什么呢?
- 如果电脑不能上网 我们能干点什么
- 变态题大串烧:微软面试问题 -- 三.难题:这类题有一定难度,如果得不到答案,也不能说明什么
- 修改用户所在组,修改文件的所有者,明明是自己的文件什么不能解压?
- Tuxedo不能全部处理并发的客户端,请求是什么原因?
- Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
- WCF技术剖析之九:服务代理不能得到及时关闭会有什么后果?
- java什么集合的 元素不能重复的
- 为会什么不能上传图片
- eclipse 启动后,啥也不干,就一直在loading descriptor for XXX (XXX为工程名),,其他什么操作都不能操作。 如下图所示,保存文件也无法保存。 这个怎么办?一年好几天,什么都干不了!!!!!
- 请教:blog上的搜索功能是不是不能用啊?我怎么什么都搜不出来?
- 什么函数不能声明为虚函数
- 生活有进有退 输什么也不能输了心情
- 【js学习笔记-078】-----js不能做什么
- mysql using() 能用于三张表查询吗,如果不能那用什么