请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP432P401R 工具/软件:Code Composer Studio
朋友们、您好!
现在、我在获取 MSP432中 ADC 端口的正确读数时遇到一些问题。 我使用万用表来获得正确流程的可行性。 我使用 CCS 7.0和 CMSIS 模式编写代码。 我的问题... 测量结果是否稳定是正常的? 我正在使用 P5.5引脚端口(A0)、并且该引脚具有不同的电压值、或者随时更改该值。 这是正常的吗? 我保留代码以获取 ADC 的读数。
#include "msp.h"
/*像整数一样定义 VAR */
volatile int value_adc;
void adc_Initialize (void){
/*配置 LED 输出*/P1->out
&&~BIT0; /*CLEAR LEAD OUTPUT */
P1->DIR |= BIT0;/*设置方向输出*/*ADC
配置*/
P5->SEL1 &=~BIT4; /*为 ADC*/
P5->SEL0 |= BIT5配置 P5.5 (A0);
/*启用全局中断*/
__ENABLE_IRQ();
NVIC->ISER[0]= 1 <<(ADC14_IRQn)& 31); /*在 NVIC 模块中启用 ADC 中断*/ADC14->CTL0
&=~ADC14_CTL0_ENC;
/*配置 ADC14*/
ADC14->CTL0 = ADC14_CTL0_SHT0_2 | ADC14_CTL0_SHP | ADC14_CTL0_ON; /*ADC14开启| S&H = 16 |采样时间*/
ADC14->CTL1 = ADC14_CTL1_RES_3; /*使用采样时间,14位的转换结果*/
ADC14->MCTL[0]|= ADC14_MCTLN_INCH_0; /*A0 ADC 输入选择 Vref=AVCC*/
ADC14->IER0 |= ADC14_IER0_IE0; /*启用 ADC 转换完成中断*/
SCB->SCR &=~SCB_SCR_SLEEPONEXIT_MSK;
}
void ADC_Task (void){
volatile unsigned int I;
//P1->OUT ^= BIT0;
对于(i = 200000;i > 0;i---); /*延迟周期*/
ADC14->CTL0 |= ADC14_CTL0_ENC | ADC14_CTL0_SC; /*启用转换|采样转换*/
_SLEEP();
__NO_OPERATION ();
}
void ADC14_IRQHandler (void){
// if (ADC14->MEM[0]>= 0x7FF){
/*转换变量中转换的符号*/
value_adc = ADC14->MEM[0];
printf (value_adc);
/*验证输入引脚是否设置为*/
//while (ADC14->CTL0 & ADC14_CTL0_BUSY);
/*电压计算*/
//value_vol =(value_adc * vref_1)/digitalValue_1;
// sprintf (adcData、"%2.2f"、value_vol);
// LCD_SetText (adcData,6,0);
// temp = value_vol/gradeTemp;
// sprintf (TEMP_C、"%2.2f"、temp);
// LCD_SetText (TEMP_C、0、0);
//LCD_SetText (TEMP_C、0、0);
/*当前*/
// UART_Task (adcData、TEMP_C);
/* if (value_adc > newValue_adc){
P1->OUT |= BIT0;
}否则{
P1->OUT &=~BIT0;
}*/
//}否则{
// LCD_SetText ("error"、6、0);
//}
}