Можно использовать макроопределение такого вида (и пример применения):
Код
#define ALIAS_PTR(VarPtr, BitNum) \
*((__IO uint32_t *) (((uint32_t) &(VarPtr) & 0xf0000000) | 0x02000000 \
+ (((uint32_t) &(VarPtr) & 0xfffff)<<5) | (BitNum<<2)))
ALIAS_PTR(GPIOC->ODR, 8) = ~ALIAS_PTR(GPIOC->ODR, 8);
Но лучше задать атрибут для структуры из битовых полей, и Keil сам будет обращаться к битам через bit-band
Код
typedef struct {
int HelpEna : 1;
int Lang : 2;
int Vect : 1;
int Wide : 1;
int Scale : 2;
int dummy : 1;
} DPY_t __attribute__((bitband));