이 질문에 이미 답변이 되었더라도이 페이지 나 더 넓은 인터넷에서 답변을 찾지 못했습니다.
저수준 프로그래밍에 대한 지식이 풍부한 숙련 된 개발자이지만 임베디드 개발에 비교적 익숙하지 않습니다. 저는 STM32F746ZG MCU가 장착 된 ST-NUCLEO144 보드를 사용하여 임베디드 시스템 개발을 가르치고 있습니다. 나에게 명백하지 않은 한 가지 질문은 레지스터의 논리적으로 관련된 비트 필드가 다른 위치에있을 수 있다는 것입니다.
한 가지 예는 USART_CR1
STM32746ZG 의 레지스터입니다. M0
및 M1
비트 필드들은 함께 USART TX / RX 단어 길이의 결합 된 2 비트의 값을 제어하는 0b00
지정 8 비트, 0b01
즉 제외한 지정 9 비트 등이 모두 매우 간단를 M0
비트 12에 있고, M1
비트에있을 28 ... 왜 그렇습니까?
이전에 예약 된 공간에 새로운 기능이 삽입 된 것과 같은 레거시 디자인상의 이유 때문입니까? 칩 디자인과 관련하여 내가 고려하지 않은 이유입니까, 아니면 내가 보지 못하는 더 큰 목적이 있습니까?
분명히 이것은 비트 마스킹으로 극복하기에는 사소한 것이지만, 나는 단지 궁금합니다.