假设有一个 32 位寄存器定义为内存 (DDRAM) 中的TIMER
32 位地址TIMER_ADDR
。
uint32_t TIMER_ADDR; // 32 bits address declared as uint32_t
TIMER的布局定义为:
struct timer {
uint32_t start:1;
uint32_t mode: 3;
uint32_t init: 4;
uint32_t value:24
}
后来我将本地 var loc_timer 定义为:
struct timer loc_timer;
如何将此寄存器读取到程序中的本地寄存器,以便修改内容
loc_timer.mode = 4;
loc_timer.init = 10;
并将其写回寄存器TIMER
?
就像是
(*(uint32_t *))&loc_timer = (*((uint32_t *)(TIMER_ADDR))); // read
(*((uint32_t *)(TIMER_ADDR))) = (*(uint32_t *))&loc_timer; // write
但它不起作用:-(