请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430FR6989 主题中讨论的其他部件:MSP-EXP430FR6989
我需要获得液晶屏上的电压,但它不起作用。
#include <MSP430-h>
#include <string.h>
#include <stdlib.h>
#include "driverlib.h"
#include "hal_lcd.h"
#define startup模式 0
volatile unsigned char mode = startup模式;
// rezultate ADC - matrice cu 10 masuratori
int ADC_results [10][4];//
index ADC în matricea ADC_resums;initializare cu 0
volatile unsigned short usitton1 = 0;
unsigned int index_adc = 0;
int index_adc;int int ind_adc;
char disp_adc;char_5;sample_adc [50]
char sample3_adc [5];
char sample4_adc [5];
int value=0;
int vol1;
int main(void){
int j,k;
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
(j= 0;j<10;j++)
(k=0;j<4;j++)
ADC_Results [j][k]= 0;
GPIO_setAsInputPinWithPullUpResister( GPIO端口P1,GPIO PIN1 );
ADC12_B_initParam initParam ={0};
initParam.sampleHoldSignalSourceSelect = ADC12_B_SAMPLEHOLDSOURCE_SC;
initParam.clockSourceSelect = ADC12_B_CLOCKSOURCE_ADC12OSC;
initParam.clockSourceDivider = ADC12_B_CLOCKDIVIDER_1;
initParam.clockSourcePrediver= ADC12_B_CLOCKPREDIER__1;
initParam.internalChannelMap = ADC12_B_NOINTCH;
ADC12_B_INIT(ADC12_B_base,&initParam);
ADC12_B_setupSamplingTimer(ADC12_B_base,
ADC12_B_CYCLEHOLD_64_CYCLES,
ADC12_B_CYCLEHOLD_64_CYCLES,
ADC12_B_MULTIPLESAMPLESENABLE);
//启用ADC12 B模块
ADC12_B_ENABLE (ADC12_B_BASE);
ADC12_B_enableInterrupt (ADC12_B_BASE,ADC12_B_IE0,0,0);
ADC12_B_enableInterrupt (ADC12_B_BASE,ADC12_B_IE1,0,0);
ADC12_B_enableInterrupt (ADC12_B_BASE,ADC12_B_IE2,0,0);
ADC12_B_enableInterrupt (ADC12_B_BASE,ADC12_B_IE3,0,0);
ADC12_B_configureMemoryParam配置MemoryParam ={0};
configureMemoryParam.memoryBufferControlIndex = ADC12_B_memory_0;
configureMemoryParam.inputSourceSelect = ADC12_B_INPUT_A4;
配置内存Param.refVoltageSourceSelect = ADC12_B_VREFPOS_AVCC_VREFNEG_VSS;
configureMemoryParam.endOfSequence = ADC12_B_NOTENDOFENCE;
配置内存Param.windowComparatorSelect = ADC12_B_window_Comparer_disable;
配置内存Param.DifferalModeSelect = ADC12_B_Different_mode_disable;
ADC12_B_configureMemory (ADC12_B_BASE,&configureMemoryParam);
配置内存Param.MemoryBufferControlIndex = ADC12_B_MEMORY_1;
configureMemoryParam.inputSourceSelect = ADC12_B_INPUT_A5;
配置内存Param.refVoltageSourceSelect = ADC12_B_VREFPOS_AVCC_VREFNEG_VSS;
configureMemoryParam.endOfSequence = ADC12_B_NOTENDOFENCE;
配置内存Param.windowComparatorSelect = ADC12_B_window_Comparer_disable;
配置内存Param.DifferalModeSelect = ADC12_B_Different_mode_disable;
ADC12_B_configureMemory (ADC12_B_BASE,&configureMemoryParam);
配置内存Param.MemoryBufferControlIndex = ADC12_B_MEMORY_2;
configureMemoryParam.inputSourceSelect = ADC12_B_Input_A6;
配置内存Param.refVoltageSourceSelect = ADC12_B_VREFPOS_AVCC_VREFNEG_VSS;
configureMemoryParam.endOfSequence = ADC12_B_NOTENDOFENCE;
配置内存Param.windowComparatorSelect = ADC12_B_window_Comparer_disable;
配置内存Param.DifferalModeSelect = ADC12_B_Different_mode_disable;
ADC12_B_configureMemory (ADC12_B_BASE,&configureMemoryParam);
configureMemoryParam.memoryBufferControlIndex = ADC12_B_memory_3;
configureMemoryParam.inputSourceSelect = ADC12_B_INPUT_A7;
配置内存Param.refVoltageSourceSelect = ADC12_B_VREFPOS_AVCC_VREFNEG_VSS;
configureMemoryParam.endOfSequence = ADC12_B_NOTENDOFENCE;
配置内存Param.windowComparatorSelect = ADC12_B_window_Comparer_disable;
配置内存Param.DifferalModeSelect = ADC12_B_Different_mode_disable;
ADC12_B_configureMemory (ADC12_B_BASE,&configureMemoryParam);
ADC12_B_startConversion(ADC12_B_base,
ADC12_B_MEMORY_0,
ADC12_B_REALITED_SEQOFCHANNELS);
Init_LCD ();
pm_unlockLPM5 ();
__BIC_SR_REGISTER (GIE);
__bis_sr_register (GIE);
同时(1)
{
__BIC_SR_REGISTER (GIE);
IF (index_adc == 0)
IND_ADC= 9;
否则
IND_ADC= index_ADC-1;
ltoa (((long) ADC_results[ind_ADC][0],sample1_ADC);
ltoa (((long) ADC_results[ind_ADC][1],sample2_ADC);
ltoa (((long) ADC_results[ind_ADC][2],sample3_adc);
ltoa (((long) ADC_results[ind_ADC][3],sample4_adc);
usiButton1 = gPIO_getInputPinValue ( gPIO_PORT_P1, gPIO_PIN1);
如果( usibutton1 == gPIO_INT_PIN_LOW ){
Value=Value+1;}
IF (Value==1){
strcpy (disp_adc,"1");
strcat (disp_adc,sample1_adc);
DisplayScrollText(disp_adc);
}
IF (Value==2){
strcpy (disp_adc,"2 ");
strcat (disp_adc,sample2_adc);
DisplayScrollText(disp_adc);
}
IF (Value=3){
strcpy (disp_adc,"3");
strcat (disp_adc,sample3_adc);
DisplayScrollText(disp_adc);
}
IF (Value=4){
strcpy (disp_adc,"4 ");
strcat (disp_adc,sample4_adc);
displayScrollText(disp_adc);
}
IF (value=4)
value=0;
__bis_sr_register(GIE);
}
}//
中上行器pt ADC12MEM0 (ADC12_B_MEMORY_0) pana la ADC12MEM3
// cela 4 locatii de mem ociate canalelor ADC 4,5,6,7
#if defined(__TI_Compiler_version__)||defined(___IAR_systems_icc_ prag_
vector =12
void Isr_g_
#endif
{
switch (__偶 数_in_range (ADC12IV,ADC12IV_ADC12RDYIFG))
{
案例ADC12IV_NONE: 中断; //矢量0:无中断
CASE ADC12IV_ADC12OVIFG:中断; //矢量2:ADC12MEMx溢出
CASE ADC12IV_ADC12TOVIFG:中断; //矢量4:转换时间溢出
CASE ADC12IV_ADC12HIIFG:中断; //向量6:ADC12BHI
CASE ADC12IV_ADC12LOIFG:中断; //矢量8:ADC12BLO
CASE ADC12IV_ADC12INIFG:中断; //矢量10:ADC12BIN
Case ADC12IV_ADC12IFG0: //向量12:ADC12MEM0中断
ADC12_B_clearInterrupt (ADC12_B_BASE,0,ADC12_B_IFG0);
index_adc++;
IF (index_adc == 10) //
index_adc=0;
内部电压;
VOLT=(FLOC)(ADC12MEM0*4096)*1000;<xmt-block0>1000 3.3
ADC_Results [index_ADC][0]= volt;
// __BIC_SR_REGISTER_ON_EXIT (LPM0_bits); //退出活动CPU
中断; //从0 (SR)清除CPUOFF位
CASE ADC12IV_ADC12IFG1: //矢量14:ADC12MEM1
ADC12_B_clearInterrupt (ADC12_B_BASE,0,ADC12_B_IFG1);
ADC_Results [index_ADC][1]= ADC12MEM1;
中断;
CASE ADC12IV_ADC12IFG2: //矢量16:ADC12MEM2
ADC12_B_clearInterrupt (ADC12_B_BASE,0,ADC12_B_IFG2);
ADC_Results [index_ADC][2]= ADC12MEM2;
中断;
Case ADC12IV_ADC12IFG3: //向量18:ADC12MEM3
ADC12_B_clearInterrupt (ADC12_B_BASE,0,ADC12_B_IFG3);
ADC_Results [index_ADC][3]= ADC12MEM3;
中断;
默认值:break;
}
}