工具与软件:
我遇到了如何在 TI 库中实现 ADC12_a_disableConversions ()的问题(使用 v2.91.13.01)
请参见下图。 似乎"否则" 总是会被证明为真。
根据用户手册、只有当 ADC12CONSEQx = 00时(例如、单通道、单次转换)、'else if '才应变为真。 由于应用程序中的这个错误、我们可能会看到 WDT 重新启动。
谢谢!
Pradeep Patolia
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.
工具与软件:
我遇到了如何在 TI 库中实现 ADC12_a_disableConversions ()的问题(使用 v2.91.13.01)
请参见下图。 似乎"否则" 总是会被证明为真。
根据用户手册、只有当 ADC12CONSEQx = 00时(例如、单通道、单次转换)、'else if '才应变为真。 由于应用程序中的这个错误、我们可能会看到 WDT 重新启动。
谢谢!
Pradeep Patolia
您可能会将 ADC12CONSEQ_3与其他内容相混淆。
#define ADC12CONSEQ_0 (0x0000) /* ADC12 Conversion Sequence Selec t: 0 */ #define ADC12CONSEQ_1 (0x0002) /* ADC12 Conversion Sequence Selec t: 1 */ #define ADC12CONSEQ_2 (0x0004) /* ADC12 Conversion Sequence Selec t: 2 */ #define ADC12CONSEQ_3 (0x0006) /* ADC12 Conversion Sequence Select: 3 */
感谢 David 的快速回复。
我想说-'else if'中的条件始终评估为 true、因此编译器甚至不会费心生成相应的汇编代码。 该"else if"被编译器视为"else"。
~(HWREG8 (baseAddress + OFS_ADC12CTL1_L)& ADC12CONSEQ_3) --> 在这里、由于 ADC12CONSEQ_3定义 为0x06、因此该表达式始终求值为二进制1111xx1 (例如始终为非零值)、因此"else if"中的条件始终为 true。
不应该像这样
否则、如果((HWREG8 (baseAddress + OFS_ADC12CTL1_L)& ADC12CONSEQ_3)= ADC12CONSEQ_0)
{
//为了防止单通道单次转换的优先选项、我们必须这样做
等待 ADC 内核完成转换
while (adc12_a_isBusy(baseAddress ));
}