//int main_app(IN u16 argc, IN u8 *argv[]) void main(void) { gpio_t gpio_led; gpio_t gpio_btn; // Init LED control pin gpio_init(&gpio_led, GPIO_LED_PIN); gpio_dir(&gpio_led, PIN_OUTPUT); // Direction: Output gpio_mode(&gpio_led, PullNone); // No pull // Initial Push Button pin gpio_init(&gpio_btn, GPIO_PUSHBT_PIN); gpio_dir(&gpio_btn, PIN_INPUT); // Direction: Input gpio_mode(&gpio_btn, PullUp); // Pull-High while(1){ if (gpio_read(&gpio_btn)) { // turn off LED gpio_write(&gpio_led, 0); } else { // turn on LED gpio_write(&gpio_led, 1); } } }
/******************************************************************************* **函 数: IIC_InitPort **功 能: IIC接口初始化 **参 数: void **返 回: void *******************************************************************************/ void IIC_InitPort(void) { printf("\n BL5372 IIC Port Init"); // Init IIC_1_SCL_PIN gpio_init(&gpio_iic_1_scl, IIC_1_SCL_PIN); gpio_dir(&gpio_iic_1_scl, PIN_OUTPUT); // Direction: Output gpio_mode(&gpio_iic_1_scl, PullNone); // No pull gpio_write(&gpio_iic_1_scl, 1); // Init IIC_1_SDA_PIN gpio_init(&gpio_iic_1_sda, IIC_1_SDA_PIN); gpio_dir(&gpio_iic_1_sda, PIN_OUTPUT); // Direction: Output gpio_mode(&gpio_iic_1_sda, PullNone); // No pull gpio_write(&gpio_iic_1_sda, 1); SDA_OUT(); SCL_OUT(); SCL1; SDA1; }
void DispatcherPrivate::set_receive_input(SYNCHRONIZATION_CHANNEL* channel, PinName pin, PinMode pull, ReceiveChannelMode rcmode) { if (channel->data->state->recv.mode != ReceiveChannelModeNone) gpio_irq_free(&channel->data->state->recv.gpio_irq); channel->data->state->recv.mode = rcmode; gpio_init_in(&channel->data->state->recv.gpio, pin); gpio_irq_init(&channel->data->state->recv.gpio_irq, pin, (&DispatcherPrivate::channel_irq_handler), (uint32_t)channel); gpio_mode(&channel->data->state->recv.gpio, pull); gpio_irq_event evt = IRQ_NONE; switch (rcmode) { case ReceiveChannelInterruptRise: evt = IRQ_RISE; break; case ReceiveChannelInterruptFall: evt = IRQ_FALL; break; case ReceiveChannelModeNone: break; } if (evt != IRQ_NONE) { gpio_irq_set(&channel->data->state->recv.gpio_irq, evt, 1); gpio_irq_enable(&channel->data->state->recv.gpio_irq); } }
int is_update_image_enable(gpio_t *gpio_uart_update_eable) { HAL_GPIO_PIN GPIO_Pin; u32 active_state; // gpio_t gpio_uart_update_eable; int ret = 0; #if 0 GPIO_Pin.pin_name = 0xC4; //low active GPIO_Pin.pin_mode = DIN_PULL_HIGH; active_state = GPIO_PIN_LOW; HAL_GPIO_Init(&GPIO_Pin); if (HAL_GPIO_ReadPin(&GPIO_Pin) == active_state) ret = 0; else ret = 1; HAL_GPIO_DeInit(&GPIO_Pin); #else gpio_init(gpio_uart_update_eable, PIN_NAME); gpio_dir(gpio_uart_update_eable, PIN_INPUT); // Direction: Input gpio_mode(gpio_uart_update_eable, PullUp); // Pull-High // ret = gpio_read(&gpio_uart_update_eable); #endif return ret; }
SPIFram::SPIFram(PinName cs) { gpio_init(&csPin, cs); gpio_dir(&csPin, PIN_OUTPUT); gpio_mode(&csPin, PullNone); gpio_write(&csPin, 1); CHIP_DESELECT }
/** * @brief Main program. * @param None * @retval None */ void main(void) { gpio_init(&gpio_reset, GPIO_RESET); gpio_mode(&gpio_reset, PullUp); gpio_dir(&gpio_reset, PIN_OUTPUT); gpio_init(&gpio_cs, GPIO_CS); gpio_mode(&gpio_cs, PullUp); gpio_dir(&gpio_cs, PIN_OUTPUT); spi_init(&spi0_master, SPI0_MOSI, SPI0_MISO, SPI0_SCLK, SPI0_CS); spi_format(&spi0_master, 8, 3, 0); spi_frequency(&spi0_master, 800000); do { SPI_PL7223_Reset(); SPI_PL7223_Read(&Read_Data_PL7223[0],0x3860,1);//DSP version :20130322 ver02, 0x3860=0x04 //DSP version :20141009 ver01, 0x3860=0x03 }while( ((Read_Data_PL7223[0]) != 0x04) && ((Read_Data_PL7223[0]) != 0x03) ); SPI_PL7223_DELY(120000); SPI_PL7223_RelayControl(0); // OFF SPI_PL7223_DELY(120000); do{ // As below is read DSP buffer process every time (144 byte) SPI__PL7223_Read_Status(); SPI_PL7223_Read(&Read_Data_PL7223[0],0x3000,144); // 0x3000~0x308F //144 byte SPI_PL7223_Read(&Read_Data_PL7223[144],0x3809,2); // Sample_cnt0 SPI_PL7223_Masurement(); SPI_PL7223_DELY(600000); SPI_PL7223_RelayControl(1); // ON SPI_PL7223_DELY(120000); SPI__PL7223_Read_Status(); SPI_PL7223_Read(&Read_Data_PL7223[0],0x3000,144); // 0x3000~0x308F //144 byte SPI_PL7223_Read(&Read_Data_PL7223[144],0x3809,2); // Sample_cnt0 SPI_PL7223_Masurement(); SPI_PL7223_DELY(600000); SPI_PL7223_RelayControl(0); // OFF SPI_PL7223_DELY(120000); }while(1); }
static inline void _gpio_init_in(gpio_t* gpio, PinName pin, PinMode mode) { gpio_init(gpio, pin); if (pin != NC) { gpio_dir(gpio, PIN_INPUT); gpio_mode(gpio, mode); } }
static inline void _gpio_init_out(gpio_t* gpio, PinName pin, PinMode mode, int value) { gpio_init(gpio, pin); if (pin != NC) { gpio_write(gpio, value); gpio_dir(gpio, PIN_OUTPUT); gpio_mode(gpio, mode); } }
void uartadapter_gpio_init() { gpio_init(&gpio_led, UA_GPIO_IRQ_PIN); gpio_dir(&gpio_led, PIN_INPUT); // Direction: Output gpio_mode(&gpio_led, PullNone); // No pull gpio_irq_init(&gpio_btn, UA_GPIO_IRQ_PIN, uartadapter_gpio_irq, (uint32_t)(&gpio_led)); gpio_irq_set(&gpio_btn, IRQ_FALL, 1); // Falling Edge Trigger gpio_irq_enable(&gpio_btn); }
static inline void _gpio_init_out(gpio_t* gpio, PinName pin, PinMode mode, int value) { gpio_init(gpio, pin); if (pin != NC) { gpio_write(gpio, value); if(mode == OpenDrain) gpio_dir(gpio, PIN_OUTPUT_OD); else{ gpio_dir(gpio, PIN_OUTPUT); } gpio_mode(gpio, mode); } }
/** * @brief Main program. * @param None * @retval None */ void main(void) { gpio_irq_t gpio_btn; // Init LED control pin gpio_init(&gpio_led, GPIO_LED_PIN); gpio_dir(&gpio_led, PIN_OUTPUT); // Direction: Output gpio_mode(&gpio_led, PullNone); // No pull // Initial Push Button pin as interrupt source gpio_irq_init(&gpio_btn, GPIO_IRQ_PIN, gpio_demo_irq_handler, (uint32_t)(&gpio_led)); gpio_irq_set(&gpio_btn, IRQ_FALL, 1); // Falling Edge Trigger gpio_irq_enable(&gpio_btn); led_ctrl = 1; gpio_write(&gpio_led, led_ctrl); while(1); }
void main(void) { gpio_t gpio_led; gpio_irq_t gpio_btn; // Init LED control pin gpio_init(&gpio_led, GPIO_LED_PIN); gpio_dir(&gpio_led, PIN_OUTPUT); // Direction: Output gpio_mode(&gpio_led, PullNone); // No pull // Initial Push Button pin as interrupt source gpio_irq_init(&gpio_btn, GPIO_IRQ_PIN, gpio_demo_irq_handler, (uint32_t)(&gpio_led)); gpio_irq_set(&gpio_btn, IRQ_FALL, 1); // Falling Edge Trigger gpio_irq_enable(&gpio_btn); // led on means system is in run mode gpio_write(&gpio_led, 1); printf("\r\nPush button at PC_4 to enter deep sleep\r\n"); while(1); }
void gpio_demo_irq_handler (uint32_t id, gpio_irq_event event) { gpio_t *gpio_led; gpio_led = (gpio_t *)id; printf("Enter deep sleep...Wait 10s or give rising edge at PB_1 to wakeup system.\r\n\r\n"); // turn off led gpio_write(gpio_led, 0); // turn off log uart sys_log_uart_off(); // initialize wakeup pin at PB_1 gpio_t gpio_wake; gpio_init(&gpio_wake, GPIO_WAKE_PIN); gpio_dir(&gpio_wake, PIN_INPUT); gpio_mode(&gpio_wake, PullDown); // enter deep sleep deepsleep_ex(DSLEEP_WAKEUP_BY_GPIO | DSLEEP_WAKEUP_BY_TIMER, 10000); }
void InterruptIn::mode(PinMode pull) { gpio_mode(&gpio, pull); }
void InterruptIn::mode(PinMode pull) { core_util_critical_section_enter(); gpio_mode(&gpio, pull); core_util_critical_section_exit(); }
void pinMode( uint32_t ulPin, uint32_t ulMode) { void *pGpio_t; if ( ulPin < 0 || ulPin > TOTAL_GPIO_PIN_NUM ) { return; } if ( (g_APinDescription[ulPin].ulPinType == PIO_GPIO || g_APinDescription[ulPin].ulPinType == PIO_GPIO_IRQ) && g_APinDescription[ulPin].ulPinMode == ulMode) { return; } if ( g_APinDescription[ulPin].ulPinType == PIO_PWM ) { pinRemoveMode(ulPin); } if ( g_APinDescription[ulPin].ulPinType == PIO_GPIO && (ulMode == INPUT_IRQ_FALL || ulMode == INPUT_IRQ_RISE) ) { // requst type from gpio_t to gpio_irq_t pinRemoveMode(ulPin); } if ( g_APinDescription[ulPin].ulPinType == PIO_GPIO_IRQ && (ulMode == INPUT || ulMode == OUTPUT || ulMode == INPUT_PULLUP || ulMode == INPUT_PULLNONE || ulMode == OUTPUT_OPENDRAIN) ) { // requst type from gpio_irq_t to gpio_t pinRemoveMode(ulPin); } if ( g_APinDescription[ulPin].ulPinType == NOT_INITIAL ) { if (ulMode == INPUT_IRQ_FALL || ulMode == INPUT_IRQ_RISE) { gpio_pin_struct[ulPin] = malloc ( sizeof(gpio_irq_t) ); pGpio_t = gpio_pin_struct[ulPin]; gpio_irq_init( pGpio_t, g_APinDescription[ulPin].pinname, gpioIrqHandler, ulPin); g_APinDescription[ulPin].ulPinType = PIO_GPIO_IRQ; } else { gpio_pin_struct[ulPin] = malloc ( sizeof(gpio_t) ); pGpio_t = gpio_pin_struct[ulPin]; gpio_init( pGpio_t, g_APinDescription[ulPin].pinname ); g_APinDescription[ulPin].ulPinType = PIO_GPIO; } g_APinDescription[ulPin].ulPinMode = ulMode; } else { pGpio_t = gpio_pin_struct[ulPin]; } switch ( ulMode ) { case INPUT: gpio_dir( (gpio_t *)pGpio_t, PIN_INPUT ); gpio_mode( (gpio_t *)pGpio_t, PullDown ); break; case INPUT_PULLNONE: gpio_dir( (gpio_t *)pGpio_t, PIN_INPUT ); gpio_mode( (gpio_t *)pGpio_t, PullNone ); break; case INPUT_PULLUP: gpio_dir( (gpio_t *)pGpio_t, PIN_INPUT ); gpio_mode( (gpio_t *)pGpio_t, PullUp ); break; case OUTPUT: gpio_dir( (gpio_t *)pGpio_t, PIN_OUTPUT ); gpio_mode( (gpio_t *)pGpio_t, PullNone ); break; case OUTPUT_OPENDRAIN: gpio_dir( (gpio_t *)pGpio_t, PIN_OUTPUT ); gpio_mode( (gpio_t *)pGpio_t, OpenDrain ); break; case INPUT_IRQ_FALL: gpio_irq_set( (gpio_irq_t *)pGpio_t, IRQ_FALL, 1 ); gpio_irq_enable( (gpio_irq_t *)pGpio_t ); break; case INPUT_IRQ_RISE: gpio_irq_set( (gpio_irq_t *)pGpio_t, IRQ_RISE, 1 ); gpio_irq_enable( (gpio_irq_t *)pGpio_t ); break; case INPUT_IRQ_LOW: gpio_irq_set( (gpio_irq_t *)pGpio_t, IRQ_LOW, 1 ); gpio_irq_enable( (gpio_irq_t *)pGpio_t ); break; case INPUT_IRQ_HIGH: gpio_irq_set( (gpio_irq_t *)pGpio_t, IRQ_HIGH, 1 ); gpio_irq_enable( (gpio_irq_t *)pGpio_t ); break; default: break ; } }
void gpio_init_out_ex(gpio_t* gpio, PinName pin, int value){ gpio_init(gpio, pin); gpio_write(gpio, value); gpio_mode(gpio, Output); gpio_write(gpio, value); }
void gpio_init_out(gpio_t* gpio, PinName pin){ gpio_init(gpio, pin); gpio_mode(gpio, Output); }
void gpio_init_in_ex(gpio_t* gpio, PinName pin, PinMode mode){ gpio_init(gpio, pin); gpio_mode(gpio, mode); }
// the following set of functions are generic and are implemented in the common gpio.c file void gpio_init_in(gpio_t* gpio, PinName pin){ gpio_init(gpio, pin); gpio_mode(gpio, Input); }