Hãy tha thứ cho tôi nếu câu hỏi này đã được trả lời, nhưng tôi không thể tìm thấy câu trả lời trên trang này hoặc trên Internet rộng hơn.
Tôi là một nhà phát triển có kinh nghiệm với kiến thức tốt về lập trình cấp thấp, nhưng tương đối mới đối với phát triển nhúng. Tôi đã tự dạy mình phát triển hệ thống nhúng bằng bảng ST-NUCLEO144, có MCU STM32F746ZG. Một câu hỏi dường như không rõ ràng đối với tôi là tại sao các trường bit liên quan đến logic trong một thanh ghi có thể ở các vị trí khác nhau.
Một ví dụ là USART_CR1
đăng ký trên STM32746ZG. Các trường M0
và M1
bit cùng nhau kiểm soát độ dài từ trong USART TX / RX, giá trị 2 bit kết hợp của 0b00
chỉ định 8 bit, 0b01
chỉ định 9 bit, v.v ... Điều này hoàn toàn đơn giản, ngoại trừ đó M0
là ở bit 12 và M1
là bit 28 ... tại sao lại thế này?
Đây có phải là lý do thiết kế cũ, chẳng hạn như một tính năng mới đã được chèn vào không gian dành riêng trước đó? Có phải vì lý do liên quan đến thiết kế chip, mà tôi không xem xét, hoặc có mục đích lớn hơn cho điều này mà tôi không thấy?
Rõ ràng điều này là khá nhỏ để khắc phục với mặt nạ bit, nhưng tôi chỉ tò mò.