我有一个全职的固件工程师职位。最近,我接到了一项任务,以检查GPIO配置并根据需要更改设置。我发现一些引脚配置错误,因此自然而然地我重新配置了它们,但是我被告知我按错误的顺序进行了配置。这是我在说的:
之前:
GPIO1.direction = INPUT;之后:
GPIO1.direction = OUTPUT;
GPIO1.value = 0;
但是,在代码审查期间,我被告知我需要将初始化顺序更改为以下内容:
GPIO1.value = 0;
GPIO1.direction =输出;
换句话说,先设置值,然后再设置引脚的方向。我还被告知,这是现代处理器上的方式,因为它们使用两个寄存器,一个用于输入,一个用于输出,但是旧处理器仅使用一个寄存器,因此操作顺序无关紧要。
(注意:现代= ARM Cortex M3及更高版本,老= Intel 8051)
我要求在工作中提供更好的解释,但没有得到很好的答案。这就是为什么我决定在这里问。
所以这是我的问题:
- 为什么初始化顺序在新处理器上很重要?
- 为什么在旧处理器上初始化的顺序无关紧要?
- 他们在现代处理器中谈论什么两个寄存器?
- 他们在旧处理器上谈论什么单一寄存器?
如果有人可以提供某种图表,那会更好。