中断函数注意点
问题描述
- 精选答案
-
1. 中断处理函数的返回值和形参
中断处理函数不能有返回值和形参,因为中断处理函数都是硬件调用(或者叫触发),没有程序给它传递参数,也没有程序接收它的返回值,其参数的传递通过全局变量的方式。
但是要注意,如果在中断服务函数中改变了供其他函数检测的全局变量的值,要使用volatile关键字定义该全局变量。因为主程序可能将该变量读取到寄存器中,以后每次只使用寄存器中的变量副本,这时候吐过不使用volatile关键字,会导致中断服务函数中修改该变量的操作被短路。
2. 中断处理函数中进行浮点数运算
由于浮点运算一般都是由专门的硬件来完成的,硬件设备会牵扯到一些类似全局变量的东西(比如硬件端口,或者硬件设备本身存放的数据),如果浮点运算的过程被中断,而其他函数也可能使用浮点数运算,这就会破坏当前硬件设备中的数据。可以理解为浮点运算一般是不可重入的,因此不能在中断服务函数中使用浮点运算。
可以在满足精度的前提下,将浮点运算扩大若干倍,变成整型运算。
3. 中断处理函数中使用printf函数
这个原理跟上面的在中断服务函数中使用浮点数类似,因为printf函数使用硬件资源,而这些资源本身就应该互斥访问(在多线程和多进程中),而这些导致printf函数不可重入,不能在中断中使用。
另外像malloc,free这些函数会使用全局的内存分配表,因此也是不可重入的,不能在中断中使用。
要注意,标准库函数中中很多都是不可重入的,在中断服务函数中要慎重使用它们。
中断服务函数应该是短而有效的。
猜你喜欢内容
-
简单网:构建全网教育数据枢纽,让知识检索化繁为...
简单网:构建全网教育数据枢纽,让知识检索化繁为“简”回答数有0条优质答案参考
-
去三亚有什么好玩的地方
去三亚有什么好玩的地方回答数有1条优质答案参考
-
石狮一日游必去景点推荐
石狮一日游必去景点推荐回答数有1条优质答案参考
-
电气工程师的证书考取条件是什么
电气工程师的证书考取条件是什么回答数有1条优质答案参考
-
房地产估价师的具体报考条件有啥
房地产估价师的具体报考条件有啥回答数有1条优质答案参考
-
房产经纪人的工作内容具体包含什么
房产经纪人的工作内容具体包含什么回答数有1条优质答案参考
-
学习小提琴都有哪些难点
学习小提琴都有哪些难点回答数有1条优质答案参考
-
企业行政管理证书的含金量怎么样
企业行政管理证书的含金量怎么样回答数有1条优质答案参考
-
初学者要怎么入门小提琴
初学者要怎么入门小提琴回答数有1条优质答案参考
-
报考珠宝鉴定师要啥条件
报考珠宝鉴定师要啥条件回答数有1条优质答案参考
















