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)
        ;
}
示例#2
0
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();


}