void AdcDacStartSynchro(uint32_t period, uint16_t amplitude) { if(g_adcStatus==1) AdcStop();//Потенциально здесь может все зависнуть, если цикл внутри AdcQuant не завершился //for(int i=0;i<RESULT_BUFFER_SIZE;i++) // g_resultBuffer[i]=0x00080008; g_cur_cycle = 0; LcdRepaint(); DacSetPeriod(period, amplitude); AdcRoundSize(DacSamplesPerPeriod()); AdcStartPre(); USBAdd32(DacPeriod()); USBAdd32(SystemCoreClock); USBAdd32(DacSamplesPerPeriod()); ADC_StartConversion(ADC3); ADC_StartConversion(ADC4); g_adc_elapsed_time = 0; StartTimer(); TIM_Cmd(TIM2, ENABLE); //Start DAC }
void DacSetFrequency(uint32_t frequency) { DacSetPeriod(48000/frequency, DAC_AMPLITUDE); }
/* If frequency<=1 khz SinusBufferSize maximal TIM_Period = SystemCoreClock / SINUS_BUFFER_SIZE / frequency */ void DacSetFrequency(uint32_t frequency) { DacSetPeriod(SystemCoreClock / frequency, DAC_AMPLITUDE); }