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