static void Test_Injected() { GPIOB* gpioB = GPIOB::GetInstance(); gpioB->EnablePeripheralClock(true); //LEDs on pins 25 26 27 28 gpioB->SetupGPIO_OutPP(GPIO_PIN12); gpioB->SetupGPIO_OutPP(GPIO_PIN13); gpioB->SetupGPIO_OutPP(GPIO_PIN14); gpioB->SetupGPIO_OutPP(GPIO_PIN15); GPIOA* gpioA = GPIOA::GetInstance(); gpioA->EnablePeripheralClock(true); gpioA->SetupGPIO_InAnalog(GPIO_PIN0); gpioA->SetupGPIO_InAnalog(GPIO_PIN1); gpioA->SetupGPIO_InAnalog(GPIO_PIN2); gpioA->SetupGPIO_InAnalog(GPIO_PIN3); ADC1* adc1 = ADC1::GetInstance(); adc1->Enable(true); adc1->AddConversion (ADC_IN0, ADC_SMP_28_5); //pin10 adc1->AddJConversion (ADC_IN1, ADC_SMP_13_5); //pin11 adc1->AddJConversion(ADC_IN2, ADC_SMP_13_5); //pin12 adc1->AddJConversion (ADC_IN3, ADC_SMP_13_5); //pin13 ADC_IRQ_JHandler_Test handler; adc1->SetJInterruptHandler(&handler); adc1->EnableJInterrupt(true); adc1->SetAutoInjection(true); adc1->SetScanMode(); adc1->StartConversion(true); while (1) ; }
void main_loop() { RCC::GetInstance()->Delay_ms(3000); GPIOA* gpioA = GPIOA::GetInstance(); gpioA->EnablePeripheralClock(true); gpioA->SetupGPIO_InAnalog(GPIO_PIN0); ADC1* adc1 = ADC1::GetInstance(); adc1->Enable(true); adc1->AddConversion(ADC_IN0, ADC_SMP_1_5); //PA0, pin 10 adc1->EnableInterrupt(true); ADC1_IRQ_Handler adcHandler; adc1->SetInterruptHandler(&adcHandler); adc1->StartConversion(true); while (1) ; }
static void DAC_Test() { GenerateData(); GPIOA* portA = GPIOA::GetInstance(); portA->EnablePeripheralClock(true); portA->SetupGPIO_InAnalog(GPIO_PIN4); //DAC pin DAC* dac = DAC::GetInstance(); dac->EnablePeripheralClock(true); DAC_Channel* ch = dac->GetChannel(DAC_CHANNEL_1); ch->SelectDataRegister12R(); ch->SetAmplitude(DAC_CR_AMPL_2047); ch->EnableTriangleWaveGeneration(); ch->EnableChannel(); //ch->Write }
static void DAC_Test_DMA() { GenerateData(); GPIOA* portA = GPIOA::GetInstance(); portA->EnablePeripheralClock(true); portA->SetupGPIO_InAnalog(GPIO_PIN4); //DAC pin DAC* dac = DAC::GetInstance(); dac->EnablePeripheralClock(true); dac->SetIrqHandler(new DAC_IRQ_Handler1()); DAC_Channel* dacCh = dac->GetChannel(DAC_CHANNEL_1); dacCh->SelectTriggerTimer6(); dacCh->EnableUnderrunInterrupt(); dacCh->SelectDataRegister12R(); uint32_t dacDataAddr = (uint32_t) dacCh->GetDataRegisterAddress(); DMA1* dma1 = DMA1::GetInstance(); dma1->EnablePeripheralClock(true); DMA_Channel* dmaCh3 = dma1->GetChannel(DMA_CHANNEL_3); dmaCh3->SetPeripheralAddress(dacDataAddr); dmaCh3->SetMemoryAddress((uint32_t) data); dmaCh3->SetCircularMode(); dmaCh3->SetDirection_MemoryToPeripheral(); dmaCh3->SetMemorySize_16bits(); dmaCh3->SetPeripheralSize_16bits(); dmaCh3->SetNumberOfData(nsteps); dmaCh3->SetMemoryIncrementMode(); dmaCh3->SetPriorityHigh(); dacCh->EnableChannel(); dacCh->EnableDMA(); }