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.
工具/软件: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)