ยกโทษให้ฉันถ้าคำถามนี้ได้รับคำตอบแล้ว แต่ฉันไม่สามารถหาคำตอบได้ในหน้านี้หรือในอินเทอร์เน็ตที่กว้างขึ้น
ฉันเป็นนักพัฒนาที่มีประสบการณ์และมีความรู้ที่ดีเกี่ยวกับการเขียนโปรแกรมระดับต่ำ แต่ค่อนข้างใหม่ในการพัฒนาแบบฝัง ฉันสอนการพัฒนาระบบสมองกลฝังตัวด้วยบอร์ด ST-NUCLEO144 ซึ่งมี STM32F746ZG MCU คำถามหนึ่งที่ดูเหมือนไม่ชัดเจนสำหรับฉันคือว่าทำไมฟิลด์บิตที่เกี่ยวข้องอย่างมีเหตุผลในรีจิสเตอร์อาจอยู่ในตำแหน่งที่ตั้งอื่น
ตัวอย่างหนึ่งคือการUSART_CR1
ลงทะเบียนใน STM32746ZG M0
และM1
บิตเขตร่วมกันควบคุมความยาวของคำใน USART TX / RX, รวมมูลค่า 2 บิต0b00
ระบุ 8 บิต0b01
ระบุ 9 บิต ฯลฯ นี่คือทั้งหมดที่ค่อนข้างตรงไปตรงมายกเว้นว่าM0
ที่บิตที่ 12 และM1
ที่บิต 28 ... ทำไมเป็นอย่างนี้?
นี่คือเหตุผลการออกแบบที่สืบทอดมาเช่นมีการแทรกคุณลักษณะใหม่ลงในพื้นที่ที่สงวนไว้ก่อนหน้านี้หรือไม่ สำหรับเหตุผลที่เกี่ยวข้องกับการออกแบบชิปที่ฉันไม่ได้พิจารณาหรือมีจุดประสงค์ที่ยิ่งใหญ่กว่านี้สำหรับสิ่งที่ฉันไม่เห็นหรือไม่?
เห็นได้ชัดว่านี่เป็นเรื่องเล็กน้อยที่จะเอาชนะด้วยการหลอกลวงเล็กน้อย แต่ฉันแค่อยากรู้