下周我正在学习测试,我们正在学习微控制器。我们只是用中断编写了一个示例代码,当我们按下一个按钮(中断)时,它告诉他们F和C的温度。如何从两者访问C和F 主要和IRQ()函数?
答案 0 :(得分:2)
在任何裸机系统上的IRQ处理程序和主线程之间共享变量的最简单方法:
确保变量类型为一 CPU可以自动读取和写入的内容。
将变量设为全局变量并声明为volatile
,以便
生成的机器代码无法优化对以下内容的访问
共享变量。
要读取值,请使用const atomic_type local_copy = shared_variable;
之类的东西并使用该本地副本。像shared_variable * shared_variable
这样的表达式可能对shared_variable
使用不同的值。
确保只有一个IRQ处理程序(该处理程序只能运行一次) 同时),或者只有主线程写入共享变量。
代码的所有其他部分仅允许读取共享 变量。
如果要在IRQ处理程序和主线程之间通信的数据不适合原子类型,请尝试使用复杂的锁定协议。