如果这个问题已经被回答,请原谅我,但是无论是在此页面还是在更广泛的Internet上我都找不到答案。
我是一位经验丰富的开发人员,在底层编程方面拥有丰富的知识,但是对于嵌入式开发而言却相对较新。我一直在自学使用ST-NUCLEO144板进行嵌入式系统开发,该板具有STM32F746ZG MCU。在我看来似乎不是显而易见的一个问题是,为什么寄存器中与逻辑相关的位字段可能位于不同的位置。
一个例子是USART_CR1
STM32746ZG上的寄存器。的M0
和M1
位字段一起控制USART TX / RX的字长,的组合的2比特值0b00
指定8位,0b01
指定9个比特,等等,这是所有相当简单的,不同之处在于M0
在第12位和M1
在比特28 ...为什么呢?
是否出于遗留设计的原因,例如将新功能插入到先前保留的空间中?是出于与芯片设计相关的原因而我没有考虑,还是出于更大的目的而没有看到?
显然,使用位屏蔽可以克服这个问题,但是我很好奇。