This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28027:使用.bit、.all 访问寄存器中的位字段

Guru**** 2964790 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/895674/tms320f28027-accessing-bit-field-in-registers-using-bit-all

器件型号:TMS320F28027

您好!

我对编码不熟悉。 IAM 在理解使用联合体和结构组合访问寄存器中位字段的方式时遇到问题。

STRUUT SCICCR_Bits{//位说明
UINT16 SCICHAR:3;// 2:0字符长度控制
UINT16 ADDRIDLE_MODE:1;// 3 ADDR/IDLE 模式控制
UINT16 LOOPPBKENA:1;// 4环回启用
UINT16 PARITYENA:1;// 5奇偶校验使能
UINT16
:1;甚至6:1奇偶校验位 // 7停止位数
uint16 rsvd1:8;// 15:8保留
}; 


UNION SCICCR_REG{
         uint16全部;
         struct SCICCR_Bits bit;
    };

在上面的代码中、如何准确地写入特定字段(字段表示特定位)? 它如何知道射野位置(如何屏蔽寄存器中的其他射野)? 我的疑问是、寄存器中的每个字段定义为 UINT16。 这意味着每个字段占用16位。 如果为真、对单个字段的写入将占用完整的寄存器。  

请在这方面提供帮助。

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    C 联合体中的所有成员共享相同的存储器位置、联合体的大小等于其最大成员的大小。 您可以在 C 语言中引用位字段和联合体以更好地理解它。

    谢谢

    Vasudha

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    [引用 USER="Mahesh Babu yadla"]寄存器中定义为 UINT16的每个字段。 这意味着每个字段占用16位[/引用]

    此假设不正确。 例如 、uint16 SCICHAR:3 字段占用3位。  请参阅位字段语法以更好地了解它。

    谢谢

    Vasudha