registrar el acceso de bits usando combinaciones de unión de estructura

0

Tengo una estructura como esta en el archivo de encabezado del dispositivo:

 typedef struct {     
  union {
__IOM uint32_t DR;                          
    struct {
      __IOM uint32_t D0      : 1;     
      __IOM uint32_t D1      : 1;         
      __IOM uint32_t D2      : 1;           
      __IOM uint32_t D3      : 1;           
    } DR_b;
  } ;
  } GPIO_PRT4_Type; 

#define GPIO_PRT4                   ((GPIO_PRT4_Type*)         GPIO_PRT4_BASE)

Para cambiar el bit D0 del registro DR, estoy usando la línea de abajo en el código de la aplicación

GPIO_PRT4->DR_b.D0 = 1;

Al usar la línea anterior, MCU entra en un manejador de fallas.

El código del ensamblador para la línea anterior es:

0x01a0  ldr r3, [pc, #16]   ; (0x1b4 <main+52>)
0x01a2  ldrb    r2, [r3, #0]
0x01a4  movs    r1, #1
0x01a6  orrs    r2, r1
0x01a8  strb    r2, [r3, #0]

0x01aa  b.n 0x196 <main+22>

¿Alguna idea, qué está mal aquí?

MCU: ARM Cortex CM0plus

    
pregunta anandamu16

0 respuestas

Lea otras preguntas en las etiquetas