Example #1
0
/**
 * @brief Initialize an ADC peripheral.
 *
 * Initializes the RCC clock line for the given peripheral.  Resets
 * ADC device registers.
 *
 * @param dev ADC peripheral to initialize
 */
void adc_init(const adc_dev *dev) {
    rcc_clk_enable(dev->clk_id);
#ifdef STM32F2
    if(dev->clk_id == RCC_ADC1) {
    	rcc_reset_dev(dev->clk_id);
    }
#else
    rcc_reset_dev(dev->clk_id);
#endif
}
Example #2
0
void adc_init(void) {
    rcc_set_prescaler(RCC_PRESCALER_ADC, RCC_ADCPRE_PCLK_DIV_6);
    rcc_clk_enable(RCC_ADC1);
    rcc_reset_dev(RCC_ADC1);

    ADC_CR1  = 0;
    ADC_CR2  = CR2_EXTSEL_SWSTART | CR2_EXTTRIG;  // Software triggers conversions
    ADC_SQR1 = 0;

    /* Up the sample conversion time to 55.5 cycles/sec, see note above  */
    /* TODO: fix magic numbers  */
    ADC_SMPR1 = 0xB6DB6D;
    ADC_SMPR2 = 0x2DB6DB6D;

    /* Enable the ADC  */
    CR2_ADON_BIT = 1;

    /* Reset the calibration registers and then perform a reset  */
    CR2_RSTCAL_BIT = 1;
    while(CR2_RSTCAL_BIT)
        ;

    CR2_CAL_BIT = 1;
    while(CR2_CAL_BIT)
        ;
}
Example #3
0
void
usart_release(usart_num num)
{
	const usart_dev	*dev = usart_get_dev(num);

	rcc_reset_dev(dev->clk_id);
	nvic_irq_disable(dev->irq);

	usart_set_unused(num);
}
Example #4
0
/**
 * @brief Initialize the digital to analog converter
 * @param dev DAC device
 * @param flags Flags:
 *      DAC_CH1: Enable channel 1
 *      DAC_CH2: Enable channel 2
 * @sideeffect May set PA4 or PA5 to INPUT_ANALOG
 */
void dac_init(const dac_dev *dev, uint32 flags) {
    /* First turn on the clock */
    rcc_clk_enable(RCC_DAC);
    rcc_reset_dev(RCC_DAC);

    if (flags & DAC_CH1) {
        dac_enable_channel(dev, 1);
    }

    if (flags & DAC_CH2) {
        dac_enable_channel(dev, 2);
    }
}
Example #5
0
/**
 * @brief Initialize an I2C device and reset its registers to their
 *        default values.
 * @param dev Device to initialize.
 */
void i2c_init(i2c_dev *dev) {
    rcc_reset_dev(dev->clk_id);
    rcc_clk_enable(dev->clk_id);
    _i2c_irq_priority_fixup(dev);
}
Example #6
0
/**
 * @brief Initialize and reset the SDIO device.
 */
void sdio_init(void)
{
    rcc_clk_enable(RCC_SDIO);
    rcc_reset_dev(RCC_SDIO);
}
Example #7
0
/**
 * @brief Initialize and reset a SPI device.
 * @param dev Device to initialize and reset.
 */
void spi_init(spi_dev *dev) {
    rcc_clk_enable(dev->clk_id);
    rcc_reset_dev(dev->clk_id);
}
Example #8
0
/**
 * @brief Initialize an I2C device and reset its registers to their
 *        default values.
 * @param dev Device to initialize.
 */
void i2c_init(i2c_dev *dev) {
    rcc_reset_dev(dev->clk_id);
    rcc_clk_enable(dev->clk_id);
}
Example #9
0
/**
 * Initialize a timer, and reset its register map.
 * @param dev Timer to initialize
 */
void timer_init(timer_dev *dev) {
    rcc_clk_enable(dev->clk_id);
    rcc_reset_dev(dev->clk_id);
}
Example #10
0
/**
 * @brief Initialize an ADC peripheral.
 *
 * Initializes the RCC clock line for the given peripheral.  Resets
 * ADC device registers.
 *
 * @param dev ADC peripheral to initialize
 */
void adc_init(const adc_dev *dev) {
    rcc_clk_enable(dev->clk_id);
    rcc_reset_dev(dev->clk_id);
}
Example #11
0
/**
 * @brief Initialize a CAN peripheral.
 *
 * Initializes the RCC clock line for the given peripheral.  Resets
 * CAN device registers.
 *
 * @param dev CAN peripheral to initialize
 */
void can_init(can_dev* const dev) {
    rcc_clk_enable(dev->clk_id);
    rcc_reset_dev(dev->clk_id);
}