在 C2000中、某些寄存器受 EALLOW 保护。 使用 EALLOW 的代码是否需要资源锁定? 如果没有资源锁定、在以下情况下 EALLOW 保护的寄存器写入可能会失败:有两个线程分别执行 EALLOW、EALLOW 保护的寄存器写入和 EDIS、但按如下顺序排列:
1) 1)螺纹1 EALLOW
2) 2)螺纹2 EALLOW、
3) 3)线程2 EALLOW 保护寄存器写入
4)螺纹2 EDIS
5) 5)线程1 EALLOW 保护寄存器写入
6) 6)线程1 EDIS 将导致线程1 EALLOW 保护寄存器写入失败。
在这种情况下、#5线程1 EALLOW 保护寄存器写入将失败、因为 EALLOW 被#4线程2 EDIS 禁用。 资源锁定会阻止这种情况发生。 但是、我没有在示例/库代码中遇到 EALLOW 资源锁定或在文档中提到过。
-Joseph