汎用レジスタを3つの別々のレジスタに分割したい。 2つの8ビットレジスタ& 1つの16ビットレジスタ。これは私が使っているアプローチですが、間違っていると思います。可変サイズのバイトで32ビットレジスタを分割する
typedef struct {
volatile uint8_t reg_0;
volatile uint8_t reg_1;
volatile uint16_t reg_2;
} reg_split;
#define REG_BASE (0xA040000C)
#define REG ((reg_split *)REG_BASE)
そして、これは私がレジスタにアクセスしていますがどのようである:
REG->reg_0 = 0xFF;
は、これは間違ったアプローチですか自分クリーナーソリューションですか?
アプローチは、okです。これはとにかくプラットフォームに依存します。例えばたとえば、ARM AAPCSがそうです。ただし、単一のフィールドを「揮発性」にしないでください。 'struct'またはキャストを修飾します。 – Olaf
回答がすべてのコメントのある人によって削除されたように見えます。要するに、私が現在使っている解決策は十分ですか? – homeGrown