static void configure_gpios(spi_dev *dev, bool as_master) { const struct spi_pins *pins = dev_to_spi_pins(dev); if (!pins) { return; } const stm32_pin_info *nssi = &PIN_MAP[pins->nss]; const stm32_pin_info *scki = &PIN_MAP[pins->sck]; const stm32_pin_info *misoi = &PIN_MAP[pins->miso]; const stm32_pin_info *mosii = &PIN_MAP[pins->mosi]; disable_pwm(nssi); disable_pwm(scki); disable_pwm(misoi); disable_pwm(mosii); spi_gpio_cfg(as_master, nssi->gpio_device, nssi->gpio_bit, scki->gpio_device, scki->gpio_bit, misoi->gpio_bit, mosii->gpio_bit); }
static void configure_gpios(can_dev *dev) { const can_pins *pins = dev_to_can_pins(dev); if (!pins) { return; } const stm32_pin_info *rx = &PIN_MAP[pins->rx]; const stm32_pin_info *tx = &PIN_MAP[pins->tx]; ASSERT(rx->gpio_device == tx->gpio_device); disable_pwm(rx); disable_pwm(tx); can_config_gpios(dev, rx->gpio_device, tx->gpio_bit, rx->gpio_bit); }
// IMPORTANT: if interrupts are not enabled, the processor will never wake // from sleep void sleep_proc() { enable_pcint(); // Turn off timer0 disable_pwm(); disp_off(); // probably want power save mode // everything off but Timer2 interrupts set_sleep_mode(SLEEP_MODE_PWR_SAVE); sleep_mode(); // Continue here on wake disable_pcint(); return; }