2016 - 2024

感恩一路有你

中断函数可以传参吗 中断函数注意点?

浏览量:3123 时间:2021-03-14 14:00:23 作者:admin

中断函数注意点?

1. 中断处理函数的返回值和形式参数

中断处理函数不能有返回值和形式参数,因为中断处理函数是由硬件(或触发器)调用的,没有程序向其传递参数,也没有程序接收其返回值,其参数通过全局变量传递。

但是,请注意,如果要检测的其他函数的全局变量值在中断服务函数中发生更改,则volatile关键字将用于定义全局变量。因为主程序可能会将变量读入寄存器,然后每次只使用寄存器中的变量副本。如果此时不使用volatile关键字,则在中断服务函数中修改变量的操作将被短路。

2. 浮点运算是在中断处理函数中执行的

由于浮点运算通常是由特殊的硬件执行的,因此硬件设备会涉及类似全局变量的内容(如硬件端口或存储在硬件设备中的数据)。如果浮点运算过程中断,其他函数也可能使用浮点运算,这将破坏设备中当前的硬件数据。可以理解,浮点运算通常是不可重入的,因此浮点运算不能用于中断服务函数。

在满足精度要求的前提下,浮点运算可以多次扩展为整数运算。

3. 在中断处理函数中使用printf函数

这个原理类似于在上面的中断服务函数中使用浮点数,因为printf函数使用硬件资源,并且这些资源应该是互斥的(在多线程和多处理中),这使得printf函数不可重入且不能被重入用于中断。

此外,malloc和free等函数使用全局内存分配表,因此它们也是不可重入的,不能在中断中使用。

请注意,许多标准库函数是不可重入的,在中断服务函数中应谨慎使用。

中断服务功能应简短有效。

中断函数可以传参吗 函数返回值怎么理解 中断函数的返回值类型为

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。