如何从main()和IRQ()函数访问变量?

时间:2018-12-04 20:26:50

标签: microcontroller interrupt

下周我正在学习测试,我们正在学习微控制器。我们只是用中断编写了一个示例代码,当我们按下一个按钮(中断)时,它告诉他们F和C的温度。如何从两者访问C和F 主要和IRQ()函数?

1 个答案:

答案 0 :(得分:2)

在任何裸机系统上的IRQ处理程序和主线程之间共享变量的最简单方法:

  • 确保变量类型为一 CPU可以自动读取和写入的内容。

  • 将变量设为全局变量并声明为volatile,以便 生成的机器代码无法优化对以下内容的访问 共享变量。

    要读取值,请使用const atomic_type local_copy = shared_variable;之类的东西并使用该本地副本。像shared_variable * shared_variable这样的表达式可能对shared_variable使用不同的值。

  • 确保只有一个IRQ处理程序(该处理程序只能运行一次) 同时),或者只有主线程写入共享变量。

    代码的所有其他部分仅允许读取共享 变量。

如果要在IRQ处理程序和主线程之间通信的数据不适合原子类型,请尝试使用复杂的锁定协议。