No veo cómo el manual de referencia no está claro, por lo que mi respuesta es básicamente una cita:
El área de usuario en la memoria Flash puede protegerse contra escritura no deseada
operaciones Se pueden definir dos áreas protegidas contra escritura (WRP), con página
(2 KByte) granularidad. El área está definida por un desplazamiento de página de inicio y
un desplazamiento de página final relacionado con la dirección base de la memoria Flash física.
Estas compensaciones se definen en los registros de direcciones WRP: área de Flash WRP
Un registro de direcciones (FLASH_WRP1AR), registro de direcciones del área B de Flash WRP
(FLASH_WRP1BR).
El área "y" de WRP (y = A, B) se define a partir de la dirección:
Dirección base de la memoria flash + [WRP1y_STRT x 0x800] (incluida) a la
dirección: memoria flash dirección base + [(WRP1y_END + 1) x 0x800]
(excluido).
Por ejemplo, para proteger por WRP de la dirección 0x0806
2800 (incluido) a la dirección 0x0807 07FF (incluido):
• si arranca
Flash está seleccionado, el registro FLASH_WRP1AR debe programarse con:
- WRP1A_STRT = 0xC5.
- WRP1A_END = 0xE0.
En su lugar, se pueden usar WRP1B_STRT y WRP1B_END en FLASH_WRP1BR (área "B" en la memoria Flash).
Así se incluye la página final. Para su ejemplo:
Dirección de inicio = 0x800 0000 + 0 * 0x800 = 0x800 0000
Dirección final = 0x800 0000 + (4 + 1) * 0x800 = 0x800 2800
Entonces, el flash de 0x800 0000 a 0x800 27FF estará protegido.
Tal vez lo que es confuso es la palabra "excluido" lo que se excluye es la dirección final, ya que sería el byte al comienzo de la página siguiente. Así que su fórmula probablemente debería leer algo como:
El flash está protegido de: Dirección base de la memoria flash + [WRP1y_STRT x 0x800] a la dirección: Dirección base de la memoria flash + [(WRP1y_END + 1) x 0x800 - 1]
(incluido).
¿Eso sería más claro? No lo sé.