コード例 #1
0
ファイル: platform_uart.c プロジェクト: ilittlerui/MICO
void RX_PIN_WAKEUP_handler(void *arg)
{
    (void)arg;
    platform_uart_driver_t* driver = arg;
    uint32_t uart_number;

    platform_gpio_enable_clock( driver->peripheral->pin_rx );

    uart_number = platform_uart_get_port_number( driver->peripheral->port );

    uart_peripheral_clock_functions[ uart_number ]( uart_peripheral_clocks[ uart_number ], ENABLE );

    /* Enable DMA peripheral clock */
    if ( driver->peripheral->tx_dma_config.controller == DMA1 )
    {
        RCC->AHB1ENR |= RCC_AHB1Periph_DMA1;
    }
    else
    {
        RCC->AHB1ENR |= RCC_AHB1Periph_DMA2;
    }

    platform_gpio_irq_disable( driver->peripheral->pin_rx );
    platform_mcu_powersave_disable( );
    mico_rtos_set_semaphore( &driver->sem_wakeup );

}
コード例 #2
0
ファイル: wlan_bus_spi.c プロジェクト: robbie-cao/MiCO
OSStatus host_platform_bus_deinit( void )
{
  platform_mcu_powersave_disable( );
  
  NVIC_DisableIRQ( platform_flexcom_irq_numbers[wifi_spi.spi_id] );
  pdc_disable_transfer( spi_get_pdc_base( wifi_spi.port ), PERIPH_PTCR_RXTDIS | PERIPH_PTCR_TXTDIS );
  spi_disable(wifi_spi.port);
  
  /* Deinit the SPI lines */
  platform_gpio_peripheral_pin_init(  wifi_spi.mosi_pin,  INPUT_HIGH_IMPEDANCE );
  platform_gpio_peripheral_pin_init(  wifi_spi.miso_pin,  INPUT_HIGH_IMPEDANCE );
  platform_gpio_peripheral_pin_init(  wifi_spi.clock_pin, INPUT_HIGH_IMPEDANCE );
  
  /* Deinit the interrupt input for WLAN_IRQ */
  platform_gpio_init( &wifi_spi_pins[WIFI_PIN_SPI_IRQ], INPUT_HIGH_IMPEDANCE );
  platform_gpio_irq_disable( &wifi_spi_pins[WIFI_PIN_SPI_IRQ] );
  
  /* Deinit SPI slave select GPIOs */
  platform_gpio_init( &wifi_spi_pins[WIFI_PIN_SPI_CS], INPUT_HIGH_IMPEDANCE );
  
#if defined ( MICO_WIFI_USE_GPIO_FOR_BOOTSTRAP )
  platform_gpio_init( &wifi_control_pins[WIFI_PIN_BOOTSTRAP_0], INPUT_HIGH_IMPEDANCE );
  platform_gpio_init( &wifi_control_pins[WIFI_PIN_BOOTSTRAP_1], INPUT_HIGH_IMPEDANCE );
#endif
  
  platform_mcu_powersave_enable( );
  
  return kNoErr;
}
コード例 #3
0
OSStatus host_platform_bus_deinit( void )
{
    uint32_t         a;

    platform_mcu_powersave_disable();

    /* Disable SPI and SPI DMA */
    SPI_Cmd( wifi_spi.port, DISABLE );
    SPI_I2S_DeInit( wifi_spi.port );
    SPI_I2S_DMACmd( wifi_spi.port, SPI_I2S_DMAReq_Tx | SPI_I2S_DMAReq_Rx, DISABLE );
    DMA_DeInit( wifi_spi.tx_dma.stream );
    DMA_DeInit( wifi_spi.rx_dma.stream );

#if defined ( MICO_WIFI_USE_GPIO_FOR_BOOTSTRAP )
    /* Clear GPIO_B[1:0] */
    platform_gpio_init( &wifi_control_pins[WIFI_PIN_BOOTSTRAP_0], INPUT_HIGH_IMPEDANCE );
    platform_gpio_init( &wifi_control_pins[WIFI_PIN_BOOTSTRAP_1], INPUT_HIGH_IMPEDANCE );
#endif

    /* Clear SPI slave select GPIOs */
    platform_gpio_init( &wifi_spi_pins[WIFI_PIN_SPI_CS], INPUT_HIGH_IMPEDANCE );

    /* Clear the SPI lines */
    for ( a = WIFI_PIN_SPI_CLK; a < WIFI_PIN_SPI_MAX; a++ )
    {
        platform_gpio_init( &wifi_spi_pins[ a ], INPUT_HIGH_IMPEDANCE );
    }

    platform_gpio_irq_disable( &wifi_spi_pins[WIFI_PIN_SPI_IRQ] );
    platform_gpio_init( &wifi_spi_pins[WIFI_PIN_SPI_IRQ], INPUT_HIGH_IMPEDANCE );

    /* Disable SPI_SLAVE Periph clock and DMA1 clock */
    (wifi_spi.peripheral_clock_func)( wifi_spi.peripheral_clock_reg, DISABLE );
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_SYSCFG, DISABLE );

    platform_mcu_powersave_enable();

    return kNoErr;
}
コード例 #4
0
ファイル: wlan_bus_sdio.c プロジェクト: SmartArduino/MICO-1
OSStatus host_platform_bus_deinit( void )
{
    OSStatus result;
    uint32_t     a;

    result = mico_rtos_deinit_semaphore( &sdio_transfer_finished_semaphore );

    platform_mcu_powersave_disable();

    /* Disable SPI and SPI DMA */
    sdio_disable_bus_irq( );
    SDIO_ClockCmd( DISABLE );
    SDIO_SetPowerState( SDIO_PowerState_OFF );
    SDIO_DeInit( );
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_SDIO, DISABLE );

#ifdef SDIO_1_BIT
    platform_gpio_deinit( &wifi_sdio_pins[WIFI_PIN_SDIO_IRQ] );
    platform_gpio_irq_disable( &wifi_sdio_pins[WIFI_PIN_SDIO_IRQ] );
#endif

    for ( a = 0; a < WIFI_PIN_SDIO_MAX; a++ )
    {
        platform_gpio_deinit( &wifi_sdio_pins[ a ] );
    }

#if defined ( MICO_WIFI_USE_GPIO_FOR_BOOTSTRAP )
    platform_gpio_deinit( &wifi_control_pins[WIFI_PIN_BOOTSTRAP_0] );
    platform_gpio_deinit( &wifi_control_pins[WIFI_PIN_BOOTSTRAP_1] );
#endif

    /* Turn off SDIO IRQ */
    NVIC_DisableIRQ( SDIO_IRQ_CHANNEL );
    NVIC_DisableIRQ( DMA2_3_IRQ_CHANNEL );

    platform_mcu_powersave_enable();

    return result;
}
コード例 #5
0
OSStatus MicoGpioDisableIRQ( mico_gpio_t gpio )
{
  if ( gpio >= MICO_GPIO_NONE )
    return kUnsupportedErr;
  return (OSStatus) platform_gpio_irq_disable( &platform_gpio_pins[gpio] );
}
コード例 #6
0
ファイル: wwd_SPI.c プロジェクト: fishbaoz/wiced-emw3165
wwd_result_t host_platform_bus_disable_interrupt( void )
{
    platform_gpio_irq_disable( &wifi_spi_pins[WWD_PIN_SPI_IRQ] );
    return  WICED_SUCCESS;
}