工具/软件:Code Composer Studio
大家好,我需要一些代码方面的帮助,我已经配置了ADC和TA1模块,以便ADC转换由TA1触发,但这似乎是错误的,TA1中断工作正常,但ADC未被触发。
对于ADC:
//Configuro引脚para ADC
GPIO _setAsPeripheralModuleFunctionOutputPin (GPIO端口P1,GPIO PIN2,GPIO三元模块功能);
//参数配置
ADC12_B_initParam initParam ={0};
initParam.sampleHoldSignalSourceSelect = ADC12_B_SAMPLEHOLDSOURCE_4;//dediso POR计时器A1 CCR1
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);
//Activo ADC_12 para iniciizacion
ADC12_B_ENABLE (ADC12_B_BASE);
ADC12_B_setupSamplingTimer (ADC12_B_BASE,ADC12_B_CYCLEHOLD_16_CYCLES,ADC12_B_CYCLEHOLD_4_CYCLES,ADC12_B_MULTIPLESAMPLESDISABLE);
//配置ADCMEM
ADC12_B_configureMemoryParam配置MemoryParam ={0};
configureMemoryParam.memoryBufferControlIndex = ADC12_B_memory_0;
configureMemoryParam.inputSourceSelect = ADC12_B_Input_A2;
配置内存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_clearInterrupt (ADC12_B_B_BASE,0,ADC12_B_IFG0);
//Interrupcion para ADC
//ADC12_B_enableInterrupe(ADC12_B_base, ADC12_B_IE0,0);//Configuro
DMA para ADC
dma_initParam参数={0};
param.channelSelect = dma_channel_0;
para.transferModeSelect = dma_transfer_single;
Param.transferSize =10;
PARAM.TriggerSourceSelect = DMA_TRIGGERSOURCE_26;//ADC
Param.transferUnitSelect = DMA_Size_SRCWORD_DSTWORD;
Param.triggerTypeSelect = DMA_TRIGG_RISINGEDGE;
dma_init(¶m);
MemADC=ADC12_B_getMemoryAddressForDMA (ADC12_B_base, ADC12_B_memory_0);
DMA_setSrcAddress(DMA_CHANGE_0,MemADC, DMA_Direction_unchange);
dma_setDstAddress(dma_channel_0,&ADCval,dma_direction increment);
dma_enableTransfers(DMA_channel_0);
用于计时器A1和CCR1
//Configuro timer A0 para que DISPARE MUESTREO
timer_a_initContinuousModeParam initContParam ={0};
initContParam.clockSource = timer_a_CLOCKSOURCE_ACLK;//CLK=32.745Khz
initContParam.clockSourceDivider = timer_a_CLOCKSOURCE_diver_1;
initContParam.timerInterruptEnable_TAIE = timer_a_TAIE_interrupt_disable;
initContParam.timerClear = timer_a_do清除;
initContParam.startTimer = false;
timer_a_initContinuousMode(timer A1_base,&initContParam);
//初始比较模式
Timer_a_clearCaptureCompareInterrupt (timer_a1_base,timer_a_CAPTURECOMPare_register_1);
timer_a_initCompareModeParam initCompParam ={0};
initCompParam.compareRegister = TIME_A_CAPTURECOMPARE_REGISTER_1;
initCompParam.compareInterruptEnable = timer_a_CAPTURECOMPare_interrupt_enable;
initCompParam.compareOutputMode = TIME_A_OUTPUTMODE_OUTBITVALUE;
initCompParam.compareValue = 64;
timer_a_initCompareMode(timer A1_base,&initCompParam);
timer_a_startCounter( timer_a1_base, timer_a_continuous_mode);