关于寄存器赋值写法问题

2019-07-14 13:37发布


pSciRegs->SCICCR.all = 0x0007; // 1 stop bit,  No loopback
    // No parity,8 char bits,
    // async mode, idle-line protocol
对这个寄存器这样写入之后,我的理解不就是SCICCR除了最后一位,其它位都是1,但是这个注释似乎解释的不是这样子,求大家指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
Lewisnx
1楼-- · 2019-07-14 15:39
这个地方后面用了共用体的结构all来对寄存器整体赋值,前面为何直接赋值
CCompton
2楼-- · 2019-07-14 16:37
是不是BAUD只对应一种配置
Richardd
3楼-- · 2019-07-14 17:28

siccr对应有几个配置 可以.xx 单个配置 也可以. all同时配置 而baud只对应一个选项 它应该没有下级结构体 当然不用. all这种方法
Mattheww
4楼-- · 2019-07-14 22:05
它们都是寄存器啊,不是都有八位吗
Erichk
5楼-- · 2019-07-14 23:31
struct  SCI_REGS {
   union SCICCR_REG     SCICCR;     // Communications control register
   union SCICTL1_REG    SCICTL1;    // Control register 1
   Uint16               SCIHBAUD;   // Baud rate (high) register
   Uint16               SCILBAUD;   // Baud rate (low) register
   union SCICTL2_REG    SCICTL2;    // Control register 2
   union SCIRXST_REG    SCIRXST;    // Recieve status register
   Uint16               SCIRXEMU;   // Recieve emulation buffer register
   union SCIRXBUF_REG   SCIRXBUF;   // Recieve data buffer
   Uint16               rsvd1;      // reserved
   Uint16               SCITXBUF;   // Transmit data buffer
   union SCIFFTX_REG    SCIFFTX;    // FIFO transmit register
   union SCIFFRX_REG    SCIFFRX;    // FIFO recieve register
   union SCIFFCT_REG    SCIFFCT;    // FIFO control register
   Uint16               rsvd2;      // reserved
   Uint16               rsvd3;      // reserved
   union SCIPRI_REG     SCIPRI;     // FIFO Priority control
};


一个是Uint16 另一个是union 当然赋值方式不一样
Thorald
6楼-- · 2019-07-15 03:50
应该是可以用相同的表述方式吧

一周热门 更多>