펌웨어 엔지니어로 정규직으로 일하고 있습니다. 최근 GPIO 구성을 검토하고 필요에 따라 설정을 변경하는 작업이있었습니다. 자연스럽게 잘못 구성 된 몇 개의 핀을 찾았으므로 다시 구성했지만 잘못된 순서로 수행했다고 들었습니다. 내가 말하고있는 것은 다음과 같습니다.
이전 :
GPIO1.direction = INPUT;이후 :
GPIO1.direction = OUTPUT;
GPIO1.value = 0;
그러나 코드 검토 중에 초기화 순서를 다음과 같이 변경해야한다고 들었습니다.
GPIO1.value = 0;
GPIO1.direction = 출력;
즉, 먼저 값을 설정 한 다음 핀의 방향을 설정하십시오. 나는 이것이 현대 프로세서에 있어야하는 방법이라고 들었습니다. 입력과 출력에 각각 하나씩 두 개의 레지스터를 사용하기 때문입니다. 그러나 오래된 프로세서는 하나의 레지스터 만 사용하므로 작업 순서는 중요하지 않습니다.
(참고 : Modern = ARM Cortex M3 이상, Old = Intel 8051)
직장에서 더 나은 설명을 요청했지만 좋은 답변을 얻을 수 없었습니다. 그렇기 때문에 여기에 물어보기로했습니다
내 질문은 다음과 같습니다.
- 새 프로세서에서 초기화 순서가 중요한 이유는 무엇입니까?
- 이전 프로세서에서 초기화 순서가 중요하지 않은 이유는 무엇입니까?
- 현대 프로세서에서 어떤 두 레지스터에 대해 이야기하고 있습니까?
- 이전 프로세서에서 어떤 단일 레지스터에 대해 이야기하고 있습니까?
누군가가 일종의 다이어그램을 제공 할 수 있다면 더 좋습니다.