Estoy escribiendo registrar mapas en C para TI BRAZO de la Micro-controlador de la junta. Aquí está el enlace a la hoja de datos.
Estoy utilizando las siguientes pautas sobre cómo Registrar los mapas deben ser escritos en C: Registrar Mapas. Estas pautas son similares a las Armas CMSIS (Corteza Microcontrolador de la Interfaz de Software Estándar) para escribir código C.
Yo soy el problema que enfrentan con el Sistema de escritura de Registro de Control de mapas(consulte la sección 5.5 de la página 237 adelante en la hoja de datos) usando C struct. Todos los registros son de tamaño de 32 bits
- La dirección base es 0x400F.E000.
- Registro de 1: Identificación de Dispositivo 0(DID0), desplazamiento 0x000
- Registro de 2: Identificación de Dispositivo 1 (DID1), desplazamiento 0x004
- Registro de 3: Brown-Out Reset Control (PBORCTL), desplazamiento 0x030
- Registro de 4: Raw de Estado de Interrupción (RIS), desplazamiento 0x050
- etc..
Si me escribe ahora una estructura como esta:
typedef struct
{
uint32_t DID0; // offset 0x000. distance: 0
uint32_t DID1; // offset 0x004. distance: 4
uint32_t PBORCTL; // **HOW to place this at offset 0x030 ?**
uint32_t RIS; // **HOW to place this at offset 0x050 ?**
// ...and so on
}PER_REG_MAP_T;
#define PERIPH_BASE ((uint32_t)0x400FE000)
#define MY_PERIPH_A ((PER_REG_MAP_T*)PERIPH_BASE)
void Reset(PER_REG_MAP_T* PERIPH_A)
{
PERIPH_A->DID0 = 0;
PERIPH_A->DID1= 0;
PERIPH_A->PBORCTL= 1;
PERIPH_A->RIS= 0;
// .. and so on
}
El principal problema al que me estoy enfrentando es cómo colocar PBORCTL y RIS dentro de la estructura como son en el desplazamiento 0x030 y 0x050 con respecto a la dirección de la base de la estructura. No he hecho demasiado poco-nivel C-programación de antes, así que esta pregunta podría ser demasiado simple, pero yo nose sabe cómo hacerlo.