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.

[参考译文] CCS/MSP430F5529:有关F5529示例代码以提高PMMCORE级别的问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/661721/ccs-msp430f5529-question-about-f5529-sample-code-to-increase-pmmcore-levels

部件号:MSP430F5529

工具/软件:Code Composer Studio

大家好,

我对5529用户指南中详细介绍的用于提高PMMCORE级别的算法有疑问。

SVSMHCTL = SVSHE + SVSHRVL0 *级别+ SVMHE + SVSMHRRL0 *级别; 

根据用户指南,SVSHRVL和SVSMHRRL的重置值为0h。 PMMCOREV和所有主管/监视器也是如此。

如果我们要一次增加一个SVS和SVM级别,变量级别将从1 (unsigned int)开始。

在msp430.h文档中,SVSHRVL0 是组成SVSHRVL的2位中的第一位。 将0乘以无符号int值1,如何得到1? 或者,这与CCS在后台执行的一些抽象有关,CCS知道其目的是设置位。

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

    Fld您好!

    是的,在数据表中,SVSHRVL0和SVSMHRRL0是寄存器字段中的'0'位。 但在CCS中,MSP430已定义了这些位中的每个位。 因此在CCS中,SVSHRVL0的计算结果为0x0100,因为它实际上是您可以操作的位的掩码。 在这种表示法中,您实际上并不是在读取寄存器中的特定位并从它们执行操作。 您只需使用掩码来填写关联的寄存器。

    典型的MSP430定义以这种方式定义每个位。 此外,它们通常具有一个关联的定义,允许您选择不同的选项。 这用下划线表示。 请参阅下面的示例,了解如何执行此操作。

    示例:
    SVSHRVL0 ==位0 (0x0100)
    SVSHRVL1 ==位1 (0x0200)

    SVSHRVL_0 ==选项0 (0x0000)
    SVSHRVL_1 ==选项1 (0x0100)
    SVSHRVL_2 ==选项2 (0x0200)
    SVSHRVL_3 ==选项3 (0x0300)

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

    感谢您的回复,这很有意义。