コード例 #1
0
void init_platform( void )
{
  button_init_t init;

  MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL );
  MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED );
  MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL );
  MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED );
  
  MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP);
  MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_PULL_UP);

  init.gpio = EasyLink_BUTTON;
  init.pressed_func = PlatformEasyLinkButtonClickedCallback;
  init.long_pressed_func = PlatformEasyLinkButtonLongPressedCallback;
  init.long_pressed_timeout = 5000;

  button_init( IOBUTTON_EASYLINK, init );
  
#ifdef USE_MiCOKit_EXT
  dc_motor_init( );
  dc_motor_set( 0 );
  
  rgb_led_init();
  rgb_led_open(0, 0, 0);
#endif
}
コード例 #2
0
void init_platform( void )
{
  MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL );
  MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED );
  MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL );
  MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED );
  
 // MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP);
  //MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_PULL_UP);
  
  //  Initialise EasyLink buttons
  MicoGpioInitialize( (mico_gpio_t)EasyLink_BUTTON, INPUT_PULL_UP );
  mico_init_timer(&_button_EL_timer, RestoreDefault_TimeOut, _button_EL_Timeout_handler, NULL);
  MicoGpioEnableIRQ( (mico_gpio_t)EasyLink_BUTTON, IRQ_TRIGGER_BOTH_EDGES, _button_EL_irq_handler, NULL );

  //MicoFlashInitialize( MICO_SPI_FLASH );
  
#ifdef USE_MiCOKit_EXT
  dc_motor_init( );
  dc_motor_set( 0 );
  
  rgb_led_init();
  rgb_led_open(0, 0, 0);
#endif
}
コード例 #3
0
static void PinInitForUsart(void)
{
    MicoGpioInitialize(CONTROLLERBUS_PIN_MISO, INPUT_HIGH_IMPEDANCE);
    MicoGpioInitialize(CONTROLLERBUS_PIN_MOSI, INPUT_HIGH_IMPEDANCE);
    MicoGpioInitialize(CONTROLLERBUS_PIN_SCK, INPUT_HIGH_IMPEDANCE);
    MicoGpioInitialize(CONTROLLERBUS_PIN_NSS, INPUT_HIGH_IMPEDANCE);
}
コード例 #4
0
ファイル: wlan_bus.c プロジェクト: playboy51job/MiCO_v2.2.0
OSStatus host_enable_oob_interrupt( void )
{
    /* Set GPIO_B[1:0] to input. One of them will be re-purposed as OOB interrupt */
    MicoGpioInitialize( (mico_gpio_t)WL_GPIO0, OUTPUT_OPEN_DRAIN_NO_PULL );
    MicoGpioInitialize( (mico_gpio_t)WL_GPIO1, INPUT_HIGH_IMPEDANCE );
    //MicoGpioEnableIRQ( (mico_gpio_t)WL_GPIO1, IRQ_TRIGGER_RISING_EDGE, sdio_oob_irq_handler, 0 );

    return kNoErr;
}
コード例 #5
0
ファイル: platform.c プロジェクト: ChinaAmada/MICO
void init_platform_bootloader( void )
{
  MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL );
  MicoGpioOutputHigh( (mico_gpio_t)MICO_SYS_LED );
  MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL );
  MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED );
  
  MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP);
  MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_HIGH_IMPEDANCE);
}
コード例 #6
0
ファイル: wlan_platform.c プロジェクト: diegoaugustus/MICO
OSStatus host_platform_deinit( void )
{
    MicoGpioInitialize((mico_gpio_t)WL_RESET, OUTPUT_PUSH_PULL);
    host_platform_reset_wifi( true ); /* Stop wifi chip in reset */
    
    MicoGpioInitialize((mico_gpio_t)WL_REG, OUTPUT_PUSH_PULL);
    host_platform_power_wifi( false ); /* Stop wifi chip with regulators off */

    platform_reset_wlan_powersave_clock( );

    return kNoErr;
}
コード例 #7
0
ファイル: rgb_led_platform.c プロジェクト: MrZANE42/WiFiMCU
void rgb_led_init(void)
{
#ifdef USE_RGB_LED_DRIVER_P9813
  MicoGpioInitialize( (mico_gpio_t)P9813_CIN, OUTPUT_OPEN_DRAIN_NO_PULL );
  MicoGpioInitialize( (mico_gpio_t)P9813_DIN, OUTPUT_OPEN_DRAIN_NO_PULL );
#elif USE_RGB_LED_DRIVER_PWM
  rgb_led_log("Unimplemented");
#else
#error LED driver function is not defined in platform.h
#endif
  
}
コード例 #8
0
ファイル: platform.c プロジェクト: hujg/mico_v2.2.0
void init_platform_bootloader( void )
{
  OSStatus err = kNoErr;
  
  MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL );
  MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED );
  MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL );
  MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED );
  
  MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP);
  MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_PULL_UP);
}
コード例 #9
0
ファイル: platform.c プロジェクト: hujg/mico_v2.2.0
void init_platform_bootloader( void )
{
  MicoGpioInitialize( MICO_SYS_LED, OUTPUT_PUSH_PULL );
  MicoGpioOutputHigh( MICO_SYS_LED );
  MicoGpioInitialize( MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL );
  MicoGpioOutputHigh( MICO_RF_LED );
  
  MicoGpioInitialize(BOOT_SEL, INPUT_PULL_UP);
  MicoGpioInitialize(MFG_SEL, INPUT_PULL_UP);
  
#if defined ( USE_MICO_SPI_FLASH )
  MicoFlashInitialize( MICO_SPI_FLASH );
#endif
}
コード例 #10
0
void init_platform( void )
{
  MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL );
  MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED );
  MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL );
  MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED );
  
  MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP);
  MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_PULL_UP);
  
  //  Initialise EasyLink buttons
  MicoGpioInitialize( (mico_gpio_t)EasyLink_BUTTON, INPUT_PULL_UP );
  mico_init_timer(&_button_EL_timer, RestoreDefault_TimeOut, _button_EL_Timeout_handler, NULL);
  MicoGpioEnableIRQ( (mico_gpio_t)EasyLink_BUTTON, IRQ_TRIGGER_BOTH_EDGES, _button_EL_irq_handler, NULL );
}
コード例 #11
0
ファイル: platform.c プロジェクト: hujg/mico_v2.2.0
void init_platform( void )
{
  MicoGpioInitialize( MICO_SYS_LED, OUTPUT_PUSH_PULL );
  MicoGpioOutputHigh( MICO_SYS_LED );
  MicoGpioInitialize( MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL );
  MicoGpioOutputHigh( MICO_RF_LED );
//  
  //  Initialise EasyLink buttons
  MicoGpioInitialize( EasyLink_BUTTON, INPUT_PULL_UP );
  mico_init_timer(&_button_EL_timer, RestoreDefault_TimeOut, _button_EL_Timeout_handler, NULL);
  MicoGpioEnableIRQ( EasyLink_BUTTON, IRQ_TRIGGER_FALLING_EDGE, _button_EL_irq_handler, NULL );

#if defined ( USE_MICO_SPI_FLASH )
  MicoFlashInitialize( MICO_SPI_FLASH );
#endif
}
コード例 #12
0
ファイル: p9813.c プロジェクト: wangeshen/MICO
/*------------------------------- user interfaces ----------------------------*/
void rgb_led_init(void)
{
#ifndef RGB_LED_USE_I2C
  
  MicoGpioInitialize( (mico_gpio_t)RGB_LED_CIN, OUTPUT_OPEN_DRAIN_NO_PULL );
  MicoGpioInitialize( (mico_gpio_t)RGB_LED_DIN, OUTPUT_OPEN_DRAIN_NO_PULL );
  
#else
  
  // just use i2c sck && sda to send data to control p9813
  OSStatus err = kUnknownErr;
  err = MicoI2cInitialize(&p9813_i2c_device);
  //require_noerr_action( err, exit, bme280_log("ERROR: MicoI2cInitialize err = %d.", err) );
  
#endif
}
コード例 #13
0
ファイル: wlan_platform.c プロジェクト: diegoaugustus/MICO
static OSStatus platform_reset_wlan_powersave_clock( void )
{
    /* Tie the pin to ground */
    MicoGpioInitialize( (mico_gpio_t) MICO_GPIO_WLAN_POWERSAVE_CLOCK, OUTPUT_PUSH_PULL );
    MicoGpioOutputLow( (mico_gpio_t) MICO_GPIO_WLAN_POWERSAVE_CLOCK );
    return kNoErr;
}
コード例 #14
0
ファイル: platform.c プロジェクト: robbie-cao/MiCO
void init_platform_bootloader( void )
{
  MicoGpioInitialize( MICO_SYS_LED, OUTPUT_PUSH_PULL );
  MicoGpioOutputHigh( MICO_SYS_LED );
  MicoGpioInitialize( MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL );
  MicoGpioOutputHigh( MICO_RF_LED );
  
  MicoGpioInitialize(BOOT_SEL, INPUT_PULL_UP);
  MicoGpioInitialize(MFG_SEL, INPUT_PULL_UP);

#ifdef USE_MiCOKit_EXT
  MicoGpioInitialize( Arduino_D9, OUTPUT_PUSH_PULL );
  MicoGpioOutputLow( Arduino_D9 );
#endif
  
}
コード例 #15
0
ファイル: platform.c プロジェクト: robbie-cao/MiCO
void init_platform( void )
{
  button_init_t init;
  
  MicoGpioInitialize( MICO_SYS_LED, OUTPUT_PUSH_PULL );
  MicoGpioOutputHigh( MICO_SYS_LED );
  MicoGpioInitialize( MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL );
  MicoGpioOutputHigh( MICO_RF_LED );
  
  //Initialise EasyLink buttons
  init.gpio = EasyLink_BUTTON;
  init.pressed_func = PlatformEasyLinkButtonClickedCallback;
  init.long_pressed_func = PlatformEasyLinkButtonLongPressedCallback;
  init.long_pressed_timeout = 5000;

  button_init( IOBUTTON_EASYLINK, init );
}
コード例 #16
0
ファイル: platform.c プロジェクト: 287631983/MICO
void init_platform( void )
{
  MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL );
  MicoSysLed(false);
  MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_PUSH_PULL );
  MicoRfLed(false);
  
  //  Initialise EasyLink buttons
  //MicoGpioInitialize( (mico_gpio_t)EasyLink_BUTTON, INPUT_PULL_UP );
  //mico_init_timer(&_button_EL_timer, RestoreDefault_TimeOut, _button_EL_Timeout_handler, NULL);
  //MicoGpioEnableIRQ( (mico_gpio_t)EasyLink_BUTTON, IRQ_TRIGGER_FALLING_EDGE, _button_EL_irq_handler, NULL );
//  
//  //  Initialise Standby/wakeup switcher
//  MicoGpioInitialize( Standby_SEL, INPUT_PULL_UP );
//  MicoGpioEnableIRQ( Standby_SEL , IRQ_TRIGGER_FALLING_EDGE, _button_STANDBY_irq_handler, NULL);

}
コード例 #17
0
void init_platform( void )
{
    MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL );
    MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED );
    MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL );
    MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED );

    //  Initialise EasyLink buttons
    MicoGpioInitialize( (mico_gpio_t)EasyLink_BUTTON, INPUT_HIGH_IMPEDANCE );
    mico_init_timer(&_button_EL_timer, RestoreDefault_TimeOut, _button_EL_Timeout_handler, NULL);
    MicoGpioEnableIRQ( (mico_gpio_t)EasyLink_BUTTON, IRQ_TRIGGER_BOTH_EDGES, _button_EL_irq_handler, NULL );

#ifdef USE_MiCOKit_EXT
    dc_motor_init( );
    dc_motor_set( 0 );
#endif
}
コード例 #18
0
//初始化VS10XX的IO口	 
void  VS_Init(void)
{

    #ifdef USE_MICO_SPI2
    if ( kNoErr != MicoSpiInitialize( &mico_spi_VS10XX) )
    {
        /*@-mustdefine@*/ /* Lint: failed - do not define platform peripheral */
        return;
        /*@+mustdefine@*/
    }
    #else
    MicoGpioInitialize((mico_gpio_t)VS_SO_PIN,  INPUT_PULL_UP);
    MicoGpioInitialize( (mico_gpio_t)VS_SI_PIN,   OUTPUT_PUSH_PULL );
    MicoGpioInitialize( (mico_gpio_t)VS_SCK_PIN,  OUTPUT_PUSH_PULL );
    #endif
    
    MicoGpioInitialize((mico_gpio_t)VS_DQ_PIN,  INPUT_PULL_UP);
    MicoGpioInitialize( (mico_gpio_t)VS_RST_PIN, OUTPUT_PUSH_PULL );
    MicoGpioInitialize( (mico_gpio_t)VS_XCS_PIN, OUTPUT_PUSH_PULL );
    MicoGpioInitialize( (mico_gpio_t)VS_XDCS_PIN, OUTPUT_PUSH_PULL );
    


    return;
}	  
コード例 #19
0
void init_platform_bootloader( void )
{
    MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL );
    MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED );
    MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL );
    MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED );

    MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP);
    MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_HIGH_IMPEDANCE);

#ifdef USE_MiCOKit_EXT
    dc_motor_init( );
    dc_motor_set( 0 );

    rgb_led_init();
    rgb_led_open(0, 0, 0);
#endif
}
コード例 #20
0
//按键初始化函数 
void KEY_Init( mico_gpio_irq_handler_t handler)
{
     MicoGpioInitialize((mico_gpio_t)KEY_PIN,  INPUT_HIGH_IMPEDANCE);
     if (handler  != NULL)
     {
            MicoGpioEnableIRQ( (mico_gpio_t)KEY_PIN, IRQ_TRIGGER_BOTH_EDGES, handler, NULL );
     }

}  
コード例 #21
0
ファイル: platform.c プロジェクト: ChinaAmada/MICO
void init_platform( void )
{
  MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL );
  MicoGpioOutputHigh( (mico_gpio_t)MICO_SYS_LED );
  MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL );
  MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED );
  
  //  Initialise EasyLink buttons
  MicoGpioInitialize( (mico_gpio_t)EasyLink_BUTTON, INPUT_PULL_UP );
  mico_init_timer(&_button_EL_timer, RestoreDefault_TimeOut, _button_EL_Timeout_handler, NULL);
  MicoGpioEnableIRQ( (mico_gpio_t)EasyLink_BUTTON, IRQ_TRIGGER_BOTH_EDGES, _button_EL_irq_handler, NULL );
  
  //  Initialise Standby/wakeup switcher
  MicoGpioInitialize( (mico_gpio_t)Standby_SEL, INPUT_PULL_UP );
  MicoGpioEnableIRQ( (mico_gpio_t)Standby_SEL , IRQ_TRIGGER_FALLING_EDGE, _button_STANDBY_irq_handler, NULL);

  MicoFlashInitialize( MICO_SPI_FLASH );
}
コード例 #22
0
ファイル: i2c.c プロジェクト: SmartArduino/MICO-1
//i2c.setup(id,pinSDA, pinSCL)
static int i2c_setup( lua_State* L )
{
  unsigned id =  luaL_checkinteger( L, 1 );
  unsigned sda = luaL_checkinteger( L, 2 );
  unsigned scl = luaL_checkinteger( L, 3 );
  if (id !=0) return luaL_error( L, "id should assigend 0" );
  MOD_CHECK_ID( gpio, sda );
  MOD_CHECK_ID( gpio, scl );
  pinSDA = wifimcu_gpio_map[sda];
  pinSCL = wifimcu_gpio_map[scl];
  
  MicoGpioFinalize((mico_gpio_t)pinSDA);
  MicoGpioInitialize((mico_gpio_t)pinSDA,(mico_gpio_config_t)OUTPUT_PUSH_PULL);  
  MicoGpioOutputHigh( (mico_gpio_t)pinSDA);
  MicoGpioFinalize((mico_gpio_t)pinSCL);
  MicoGpioInitialize((mico_gpio_t)pinSCL,(mico_gpio_config_t)OUTPUT_PUSH_PULL);  
  MicoGpioOutputHigh( (mico_gpio_t)pinSCL);
  return 0;
}
コード例 #23
0
ファイル: platform.c プロジェクト: tbfly/MICO
OSStatus mico_platform_init( void )
{
  platform_log( "Platform initialised" );
  
  
  //  Initialise EasyLink buttons
  MicoGpioInitialize( (mico_gpio_t)EasyLink_BUTTON, INPUT_PULL_UP );
  mico_init_timer(&_button_EL_timer, RestoreDefault_TimeOut, _button_EL_Timeout_handler, NULL);
  MicoGpioEnableIRQ( (mico_gpio_t)EasyLink_BUTTON, IRQ_TRIGGER_BOTH_EDGES, _button_EL_irq_handler, NULL );
  return kNoErr;
}
コード例 #24
0
ファイル: button.c プロジェクト: SergeyPopovGit/MICO
void button_init( int index, button_init_t init)
{
  context[index].gpio = init.gpio;
  context[index].start_time = 0;
  context[index].timeout = init.long_pressed_timeout;
  context[index].pressed_func = init.pressed_func;
  context[index].long_pressed_func = init.long_pressed_func;

  MicoGpioInitialize( init.gpio, INPUT_PULL_UP );
  mico_init_timer( &context[index]._user_button_timer, init.long_pressed_timeout, button_timeout_handler_array[index], &context[index] );
  MicoGpioEnableIRQ( init.gpio, IRQ_TRIGGER_FALLING_EDGE, button_irq_handler_array[index], &context[index] );
}
コード例 #25
0
bool ControllerBusInit(void)
{
    OSStatus err;

    // f411 reset pin initialize
    MicoGpioInitialize(F411_RESET_PIN, OUTPUT_OPEN_DRAIN_PULL_UP);

    // V2 PCB, spi pin reused for uart, can be remove at V3 PCB
    PinInitForUsart();

    err = user_uartInit();
    if(err != kNoErr) {
        AaSysLogPrint(LOGLEVEL_ERR, "mico uart initialize failed");
        return false;
    }
    
    // start the uart receive thread to handle controller bus data
    err = mico_rtos_create_thread(&bus_recv_handle, MICO_APPLICATION_PRIORITY, "CBusProtoHandler", 
                                ControllerBusProtocolHandler, CONTROLLERBUS_STACK_SIZE_RINGBUFFER_THREAD, 
                                NULL);
    if(err != kNoErr) {
        AaSysLogPrint(LOGLEVEL_ERR, "create controller bus protocol handler thread failed");
        return false;
    }
    else {
        AaSysLogPrint(LOGLEVEL_INF, "create controller bus protocol handler thread success");
    }

    // start the uart send thread to handle request message
    err = mico_rtos_create_thread(&bus_send_handle, MICO_APPLICATION_PRIORITY, "BusRequestSend", 
                                ControllerBusMsgHandler, CONTROLLERBUS_STACK_SIZE_RINGBUFFER_THREAD, 
                                NULL);
    if(err != kNoErr) {
        AaSysLogPrint(LOGLEVEL_ERR, "create controller bus message handler thread failed");
        return false;
    }
    else {
        AaSysLogPrint(LOGLEVEL_INF, "create controller bus message handler thread success");
    }

    AaSysLogPrint(LOGLEVEL_INF, "controller bus initialize success");

    return true;
}
コード例 #26
0
ファイル: wlan_bus.c プロジェクト: playboy51job/MiCO_v2.2.0
void host_platform_enable_high_speed_sdio( void )
{
//    SDIO_InitTypeDef sdio_init_structure;

//    sdio_init_structure.SDIO_ClockDiv       = (uint8_t) 0; /* 0 = 24MHz if SDIO clock = 48MHz */
//    sdio_init_structure.SDIO_ClockEdge      = SDIO_ClockEdge_Rising;
//    sdio_init_structure.SDIO_ClockBypass    = SDIO_ClockBypass_Disable;
//    sdio_init_structure.SDIO_ClockPowerSave = SDIO_ClockPowerSave_Disable;
//#ifndef SDIO_1_BIT
//    sdio_init_structure.SDIO_BusWide = SDIO_BusWide_4b;
//#else
//    sdio_init_structure.SDIO_BusWide = SDIO_BusWide_1b;
//#endif
//    sdio_init_structure.SDIO_HardwareFlowControl = SDIO_HardwareFlowControl_Disable;

//    SDIO_DeInit( );
//    SDIO_Init( &sdio_init_structure );
//    SDIO_SetPowerState( SDIO_PowerState_ON );
//    SDIO_ClockCmd( ENABLE );
//    sdio_enable_bus_irq( );
      MicoGpioInitialize( (mico_gpio_t)SDIO_INT, INPUT_HIGH_IMPEDANCE );
  MicoGpioEnableIRQ( (mico_gpio_t)SDIO_INT, IRQ_TRIGGER_FALLING_EDGE, sdio_irq_handler, 0 );
}
コード例 #27
0
ファイル: MicoDriverSpi.c プロジェクト: agb861/STM32F
OSStatus MicoSpiFinalize( const mico_spi_device_t* spi )
{
  GPIO_InitTypeDef gpio_init_structure;
  
  MicoMcuPowerSaveConfig(false);
  
  /* De-init and disable SPI */
  SPI_Cmd( spi_mapping[ spi->port ].spi_regs, DISABLE );
  SPI_I2S_DeInit( spi_mapping[ spi->port ].spi_regs );
  
  /* Disable SPI peripheral clock */
  spi_mapping[spi->port].peripheral_clock_func( spi_mapping[spi->port].peripheral_clock_reg,  DISABLE );
  
  /* Reset all pins to input floating state */
  gpio_init_structure.GPIO_Mode  = GPIO_Mode_IN;      // Input
  gpio_init_structure.GPIO_PuPd  = GPIO_PuPd_NOPULL;  // Floating (No-pull)
  gpio_init_structure.GPIO_OType = GPIO_OType_PP;     // Arbitrary. Only applicable for output
  gpio_init_structure.GPIO_Speed = GPIO_Speed_100MHz;
  gpio_init_structure.GPIO_Pin   = ((uint32_t) (1 << spi_mapping[spi->port].pin_clock->number)) |
    ((uint32_t) (1 << spi_mapping[spi->port].pin_miso->number )) |
      ((uint32_t) (1 << spi_mapping[spi->port].pin_mosi->number ));
  
  GPIO_Init( spi_mapping[spi->port].pin_clock->bank, &gpio_init_structure );
  
  /* Reset CS pin to input floating state */
  MicoGpioInitialize( spi->chip_select, INPUT_HIGH_IMPEDANCE );
  
  if ( spi == current_spi_device )
  {
    current_spi_device = NULL;
  }
  
  MicoMcuPowerSaveConfig(true);
  
  return kNoErr;
}
コード例 #28
0
ファイル: keys.c プロジェクト: hujg/mico_v2.2.0
void user_key1_init(void)
{
   MicoGpioInitialize( (mico_gpio_t)USER_KEY1, INPUT_PULL_UP );
   mico_init_timer(&_user_key1_timer, user_key1_long_press_timeout, _user_key1_timeout_handler, NULL);
   MicoGpioEnableIRQ( (mico_gpio_t)USER_KEY1, IRQ_TRIGGER_BOTH_EDGES, _user_key1_irq_handler, NULL );
}
コード例 #29
0
ファイル: MicoDriverSpi.c プロジェクト: agb861/STM32F
OSStatus MicoSpiInitialize( const mico_spi_device_t* spi )
{
  GPIO_InitTypeDef gpio_init_structure;
  OSStatus   result;
  SPI_InitTypeDef  spi_init;
  
  check_string( spi != NULL, "Bad args");
  
  MicoMcuPowerSaveConfig(false);
  
  /* Init SPI GPIOs */
  gpio_init_structure.GPIO_Mode  = GPIO_Mode_AF;
  gpio_init_structure.GPIO_OType = GPIO_OType_PP;
  gpio_init_structure.GPIO_Speed = GPIO_Speed_100MHz;
  gpio_init_structure.GPIO_Pin   = ((uint32_t) (1 << spi_mapping[spi->port].pin_clock->number)) |
    ((uint32_t) (1 << spi_mapping[spi->port].pin_miso->number )) |
      ((uint32_t) (1 << spi_mapping[spi->port].pin_mosi->number ));
  GPIO_Init( spi_mapping[spi->port].pin_clock->bank, &gpio_init_structure );
  
  /* Init the chip select GPIO */
  MicoGpioInitialize(spi->chip_select, OUTPUT_PUSH_PULL);
  MicoGpioOutputHigh(spi->chip_select);
  
  GPIO_PinAFConfig( spi_mapping[spi->port].pin_clock->bank, spi_mapping[spi->port].pin_clock->number,  spi_mapping[spi->port].gpio_af );
  GPIO_PinAFConfig( spi_mapping[spi->port].pin_miso->bank,  spi_mapping[spi->port].pin_miso->number,   spi_mapping[spi->port].gpio_af );
  GPIO_PinAFConfig( spi_mapping[spi->port].pin_mosi->bank,  spi_mapping[spi->port].pin_mosi->number,   spi_mapping[spi->port].gpio_af );
  
  /* Configure baudrate */
  result = wiced_spi_configure_baudrate( spi->speed, &spi_init.SPI_BaudRatePrescaler );
  if ( result != kNoErr )
  {
    return result;
  }
  
  /* Configure data-width */
  if ( spi->bits == 8 )
  {
    spi_init.SPI_DataSize = SPI_DataSize_8b;
  }
  else if ( spi->bits == 16 )
  {
    if ( spi->mode & SPI_USE_DMA )
    {
      /* 16 bit mode is not supported for a DMA */
      return kGeneralErr;
    }
    spi_init.SPI_DataSize = SPI_DataSize_16b;
  }
  else
  {
    /* Requested mode is not supported */
    return kOptionErr;
  }
  
  /* Configure MSB or LSB */
  if ( spi->mode & SPI_MSB_FIRST )
  {
    spi_init.SPI_FirstBit = SPI_FirstBit_MSB;
  }
  else
  {
    spi_init.SPI_FirstBit = SPI_FirstBit_LSB;
  }
  
  /* Configure mode CPHA and CPOL */
  if ( spi->mode & SPI_CLOCK_IDLE_HIGH )
  {
    spi_init.SPI_CPOL = SPI_CPOL_High;
  }
  else
  {
    spi_init.SPI_CPOL = SPI_CPOL_Low;
  }
  
  if ( spi->mode & SPI_CLOCK_RISING_EDGE )
  {
    spi_init.SPI_CPHA = ( spi->mode & SPI_CLOCK_IDLE_HIGH )? SPI_CPHA_2Edge : SPI_CPHA_1Edge;
  }
  else
  {
    spi_init.SPI_CPHA = ( spi->mode & SPI_CLOCK_IDLE_HIGH )? SPI_CPHA_1Edge : SPI_CPHA_2Edge;
  }
  
  spi_init.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  spi_init.SPI_Mode      = SPI_Mode_Master;
  spi_init.SPI_NSS       = SPI_NSS_Soft;
  SPI_CalculateCRC( spi_mapping[spi->port].spi_regs, DISABLE );
  
  /* Enable SPI peripheral clock */
  spi_mapping[spi->port].peripheral_clock_func( spi_mapping[spi->port].peripheral_clock_reg,  ENABLE );
  
  /* Init and enable SPI */
  SPI_Init( spi_mapping[spi->port].spi_regs, &spi_init );
  SPI_Cmd ( spi_mapping[spi->port].spi_regs, ENABLE );
  
  MicoMcuPowerSaveConfig(true);
  
  current_spi_device = (mico_spi_device_t*)spi;
  
  return kNoErr;
}
コード例 #30
0
ファイル: rgb_led.c プロジェクト: MrZANE42/WiFiMCU
void rgb_led_init(void)
{
  MicoGpioInitialize( (mico_gpio_t)P9813_PIN_CIN, OUTPUT_PUSH_PULL );
  MicoGpioInitialize( (mico_gpio_t)P9813_PIN_DIN, OUTPUT_PUSH_PULL );
}