Exemple #1
0
void mode2unset()
{
	GPIOIntClear(GPIO_PORTF_BASE, GPIO_PIN_4);		//Clear any existing interrupts
	GPIOIntDisable(GPIO_PORTF_BASE, GPIO_PIN_4);		//Enable the GPIO Interrupts on Port F
	IntDisable(INT_TIMER1A);
	TimerIntDisable(TIMER1_BASE,TIMER_TIMA_TIMEOUT);
}
Exemple #2
0
void CC3100_InterruptDisable()
{
     GPIOIntDisable(CC3100_IRQBASE,CC3100_IRQPIN);
#ifdef SL_IF_TYPE_UART
     ROM_UARTIntDisable(CC3100_UARTBASE, UART_INT_RX);
#endif
}
Exemple #3
0
void GPIOIntHandler(){
	//THis function is called when a button on the remote is pressed
	//Disables the GPIO interrupt
	GPIOIntDisable(GPIOA1_BASE, 0x10);
	//Enables Systick
	SysTickEnable();
}
Exemple #4
0
/*****************************************************
 * 	Function: init_BtnHandler
 *	Description: Initializes button interrupt
 *			Initializes timer for button counter
 *	Input: NONE
 *	Output: NONE
 *****************************************************/
void init_BtnHandler(void)
{
	// Unlock un-maskable pin
	HWREG(BTN_OVERRIDE_REG + GPIO_O_LOCK) = GPIO_LOCK_KEY;

	// Set up our interrupt for button presses
	IntMasterDisable();																				// Disable all interrupts
	GPIOIntDisable(BTN_OVERRIDE_REG, BTN_OVERRIDE);
	GPIOPinTypeGPIOInput(BTN_OVERRIDE_REG, BTN_OVERRIDE);
	GPIOPadConfigSet(BTN_OVERRIDE_REG, BTN_OVERRIDE, GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD_WPU);		// Set Pull-up
	GPIOIntTypeSet(BTN_OVERRIDE_REG, BTN_OVERRIDE, GPIO_BOTH_EDGES); 								// Set edge to trigger on
	GPIOIntClear(BTN_OVERRIDE_REG, BTN_OVERRIDE); 													// Clear the interrupt bit
	GPIOIntEnable(BTN_OVERRIDE_REG, BTN_OVERRIDE); 													// Enable the interrupt
	IntEnable(INT_GPIOE);

	// Lock un-maskable pin
	HWREG(BTN_OVERRIDE_REG + GPIO_O_LOCK) = 0;

	// Setup timer interrupt for button pressing
	// This timer will run up and when it is released we will check how long it was running
	SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
	TimerConfigure(BTN_OVERRIDE_TIM_BASE, TIMER_CFG_PERIODIC);					// Setup interrupt as 32 bit timer counting up
	TimerLoadSet(BTN_OVERRIDE_TIM_BASE, BTN_OVERRIDE_TIM, clockTime/1000);		// Load Timer
	IntEnable(INT_TIMER0A);
	TimerIntEnable(BTN_OVERRIDE_TIM_BASE, TIMER_TIMA_TIMEOUT);

	// Turn the input pin to the button high
	GPIOPinTypeGPIOOutput(BTN_OVERRIDE_CONTROL_REG, BTN_OVERRIDE_CONTROL);
	GPIOPinWrite(BTN_OVERRIDE_CONTROL_REG, BTN_OVERRIDE_CONTROL, BTN_OVERRIDE_CONTROL);
}
Exemple #5
0
void spi_gpio_init(uint8_t int_flag)
{
        ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
        ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

        //F0-----MISO    -----  INPUT
        ROM_GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_0);

        //F1,F2,F3:MOSI,CLK,CSN  -----  OUTPUT
        ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);

        //CE-----PA6                 -----  OUTPUT
        ROM_GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_6);

        //IRQ-----PA7    -----  INPUT
        ROM_GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_7);

        if(int_flag == 1) //开引脚外部中断
        {
                GPIOIntTypeSet(GPIO_PORTA_BASE,GPIO_PIN_7,GPIO_FALLING_EDGE);
                GPIOIntEnable(GPIO_PORTA_BASE,GPIO_INT_PIN_7); //打开PA7外部中断进行数据读取
                GPIOIntRegister(GPIO_PORTA_BASE, PA7_int_hander);//指定外部中断处理函数
        }
        else
        {
                GPIOIntDisable(GPIO_PORTA_BASE,GPIO_INT_PIN_7);
        }
}
/*
 *  ======== WiFiCC3100_close ========
 */
void WiFiCC3100_close(WiFi_Handle handle)
{
    unsigned int              key;
    WiFiCC3100_Object        *object = handle->object;
    WiFiCC3100_HWAttrs const *hwAttrs = handle->hwAttrs;

#if defined(MSP430WARE) || defined(MSP432WARE)
    MAP_GPIO_disableInterrupt(hwAttrs->irqPort, hwAttrs->irqPin);
#else
    GPIOIntDisable(hwAttrs->irqPort, hwAttrs->irqPin);
#endif

#if !defined(MSP430WARE)
    Hwi_destruct(&(object->wifiHwi));
#endif

    Semaphore_destruct(&(object->readSemaphore));
    Semaphore_destruct(&(object->writeSemaphore));

    Log_print0(Diags_USER1, "WiFi Object closed.");

    key = Hwi_disable();
    object->spiState = WiFiCC3100_SPI_UNINITIALIZED;
    object->isOpen = false;
    Hwi_restore(key);
}
Exemple #7
0
void detachInterrupt(uint8_t interruptNum)
{
	uint32_t i;

	uint8_t bit = digitalPinToBitMask(interruptNum);
	uint8_t port = digitalPinToPort(interruptNum);
	uint32_t portBase = (uint32_t) portBASERegister(port);

	if (port == NOT_A_PIN) return;

	GPIOIntDisable(portBase, bit);

	for (i=0; i<8; i++, bit>>=1) {
		if ((bit & 0x1) == 1)
			break;
	}

	switch(portBase) {
	case GPIO_PORTA_BASE:
		cbFuncsA[i] = 0;
	case GPIO_PORTB_BASE:
		cbFuncsB[i] = 0;
	case GPIO_PORTC_BASE:
		cbFuncsC[i] = 0;
	case GPIO_PORTD_BASE:
		cbFuncsD[i] = 0;
	case GPIO_PORTE_BASE:
		cbFuncsE[i] = 0;
	case GPIO_PORTF_BASE:
		cbFuncsF[i] = 0;
	case GPIO_PORTG_BASE:
		cbFuncsG[i] = 0;
	case GPIO_PORTH_BASE:
		cbFuncsH[i] = 0;
	case GPIO_PORTJ_BASE:
		cbFuncsJ[i] = 0;
	case GPIO_PORTK_BASE:
		cbFuncsK[i] = 0;
	case GPIO_PORTL_BASE:
		cbFuncsL[i] = 0;
	case GPIO_PORTM_BASE:
		cbFuncsM[i] = 0;
	case GPIO_PORTN_BASE:
		cbFuncsN[i] = 0;
	case GPIO_PORTP_BASE:
		cbFuncsP[i] = 0;
	case GPIO_PORTQ_BASE:
		cbFuncsQ[i] = 0;
#ifdef TARGET_IS_SNOWFLAKE_RA0
	case GPIO_PORTR_BASE:
		cbFuncsR[i] = 0;
	case GPIO_PORTS_BASE:
		cbFuncsS[i] = 0;
	case GPIO_PORTT_BASE:
		cbFuncsT[i] = 0;
#endif
	}
}
Exemple #8
0
void Interrupt_PB3Init(void)
{
		GPIOIntRegister(GPIO_PORTB_BASE,Interrupt_PB3Handler);
		ROM_GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_3);
		ROM_GPIOPadConfigSet(GPIO_PORTB_BASE,GPIO_PIN_3,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);
		GPIOIntDisable(GPIO_PORTB_BASE,GPIO_INT_PIN_3);
	  GPIOIntClear(GPIO_PORTB_BASE,GPIO_INT_PIN_3);
		GPIOIntTypeSet(GPIO_PORTB_BASE,GPIO_INT_PIN_3,GPIO_LOW_LEVEL);
}
Exemple #9
0
/**
 * @brief	calculate time between sucessive AC trigger pulses, or read a DC signal,
 * depending on configuration, return trigger status if signal is valid
 *
 * @return	TRIGGER_ACTIVE or	NO_TRIGGER
 * */
int trigInputRead(void)
{
    int ret = NO_TRIGGER;

#ifdef TRIG_ON_AC
    /* atomic section, no IRQ's while calculating */
    GPIOIntDisable( TRIG_IN_PORT_1, TRIG_IN_PIN_1);
    GPIOIntDisable( TRIG_IN_PORT_2, TRIG_IN_PIN_2);


    /* any changes  wich is not noise ?*/
    if ((timeEdge1 - timeLast1) > TRIG_TIME_MS_MIN)
    {
        //GPIOSetValue( 1, 11, 1);

        ret |=  TRIGGER1_ACTIVE;
        /* allign timers */
        timeEdge1 = millis();
        timeLast1 =timeEdge1;

        //GPIOSetValue( 1, 11, 0);
    }
    /* any changes  wich is not noise ?*/
    if ((timeEdge2 - timeLast2) > TRIG_TIME_MS_MAX)
    {
        ret |=  TRIGGER2_ACTIVE;
        timeEdge2 = millis();
        timeLast2 =timeEdge2;
    }
    GPIOIntEnable( TRIG_IN_PORT_1, TRIG_IN_PIN_1);
    GPIOIntEnable( TRIG_IN_PORT_2, TRIG_IN_PIN_2);
    /* atomic section ends here */
#endif

//#ifdef TRIG_ON_DC
#if 0
    /* if trigger is low, we have DC*/
    if (!(LPC_GPIO_PORT->PIN0 & TRIG_IN_PIN))
    {
        return TRIGGER_ACTIVE;
    }
#endif
    return ret;
}
Exemple #10
0
void interrupt_setup(void)
{

    // Interrupt setuü
    GPIOIntDisable(GPIO_PORTF_BASE, GPIO_PIN_4);        // Disable interrupt for PF4 (in case it was enabled)
    GPIOIntClear(GPIO_PORTF_BASE, GPIO_PIN_4);      // Clear pending interrupts for PF4
    GPIOIntRegister(GPIO_PORTF_BASE, onButtonDown);     // Register our handler function for port F
    GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_4,
        GPIO_FALLING_EDGE);             // Configure PF4 for falling edge trigger
    GPIOIntEnable(GPIO_PORTF_BASE, GPIO_PIN_4);     // Enable interrupt for PF4

}
Exemple #11
0
void Timer4ISR(void) {

    /// pulisce le interruzione del timer4
    ROM_TimerIntClear(TIMER4_BASE, TIMER_TIMA_TIMEOUT);
    /// disabilita la porta D a generare interruzioni
    GPIOIntDisable(GPIO_PORTD_BASE, GPIO_INT_PIN_1);
    /// disabilita il timer 4
    TimerDisable(TIMER4_BASE, TIMER_A);
    /// segnala lo scadere del timer
    procCom4 = 1;
    /// spento il dispositivo
    HWREG(GPIO_PORTD_BASE + (GPIO_O_DATA + (GPIO_PIN_0 << 2))) = 0;
}
Exemple #12
0
void Interrupt_PB3Handler(void)
{
		uint16_t x,y;
		GPIOIntDisable(GPIO_PORTB_BASE,GPIO_INT_PIN_3);
		IODevice_LaserOn(false);
		TowerLight_ErrorMode();
		LCD_ClearWindow();
		LCD_DisplayWidget(ErrorWarning);
		TouchPanel_GetPixel(&x,&y);
		do
		{
				TouchPanel_GetPixel(&x,&y);
				__Delay50ms();
		}
		while(y<200|y>280);	
		LCD_DisplayInterface(CurrentUI);
}
Exemple #13
0
/*
 * Initialize GPIO port to support SHT1X I/O operations.
 * Data pin is set in weak pull-up configuration.
 *
 * Unlike AVR the TM4C123 does not allow to read actual logic level from
 * output pins. That is why an addition SHT1X_DATA_IN_PIN is used.
 */
void sht1x_gpio_init(void)
{
	SysCtlPeripheralEnable(SHT1X_GPIO_PERIPH);

	GPIOIntDisable(SHT1X_PORT_BASE, SHT1X_DATA_INTERRUPT);

	GPIOPinTypeGPIOOutput(SHT1X_PORT_BASE, SHT1X_CLOCK_PIN);
	GPIOPinWrite(SHT1X_PORT_BASE, SHT1X_CLOCK_PIN, 0x00);

	GPIODirModeSet(SHT1X_PORT_BASE, SHT1X_DATA_OUT_PIN, GPIO_DIR_MODE_OUT);
	GPIOPadConfigSet(SHT1X_PORT_BASE, SHT1X_DATA_OUT_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
	GPIOPinWrite(SHT1X_PORT_BASE, SHT1X_DATA_OUT_PIN, SHT1X_DATA_OUT_PIN);

	GPIOPinTypeGPIOInput(SHT1X_PORT_BASE, SHT1X_DATA_IN_PIN);
	GPIOIntTypeSet(SHT1X_PORT_BASE, SHT1X_DATA_IN_PIN, GPIO_FALLING_EDGE);

	IntEnable(SHT1X_GPIO_INTERRUPT);
}
Exemple #14
0
void SystickIntHandler(){
	//Samples the voltage on pin 3
	if (GPIOPinRead(GPIOA1_BASE, 0x10)){
		//modify the bitsequence using logic AND
		//Use bitwise operation here to save memory. Another option is to use an aray
		bitsequence = bitsequence | (1LL << (64-index));
	}
	//Increments the next index of the bit in bitsequence to be modified
	index++;
	//Clear the GPIO interrupt
	GPIOIntClear(GPIOA1_BASE, 0x10);
	//Enables the GPIO interrupt
	GPIOIntEnable(GPIOA1_BASE, 0x10);
	if(index == 60)
	{
		//If 60 bits have been written, it's time to check what number on the remote the bit sequence reprensent.
		SysTickDisable();
		GPIOIntDisable(GPIOA1_BASE, 0x10);
	}
}
void CC3100_InterruptDisable()
{
     GPIOIntDisable(GPIO_PORTM_BASE,GPIO_PIN_7);
}
Exemple #16
0
//*****************************************************************************
//
//! Prepare a pin for use with a TOF sensor.
//!
//! \param GPIOPin is on the pin for the TOF sensor.
//!
//! This function initializes the GPIO interrupts and peripherals necessary
//! to run the corresponding GPIO port.
//!
//! The \e GPIOPin parameter can take on the following values:
//!
//! - \b PA0 - Pin PA0
//! - \b PA1 - Pin PA1
//! - \b PA2 - Pin PA2
//! - \b PA3 - Pin PA3
//! - \b PA4 - Pin PA4
//! - \b PA5 - Pin PA5
//! - \b PA6 - Pin PA6
//! - \b PA7 - Pin PA7
//! - \b PB0 - Pin PB0
//! - \b PB1 - Pin PB1
//! - \b PB2 - Pin PB2
//! - \b PB3 - Pin PB3
//! - \b PB4 - Pin PB4
//! - \b PB5 - Pin PB5
//! - \b PB6 - Pin PB6
//! - \b PB7 - Pin PB7
//! - \b PC0 - Pin PC0
//! - \b PC1 - Pin PC1
//! - \b PC2 - Pin PC2
//! - \b PC3 - Pin PC3
//! - \b PC4 - Pin PC4
//! - \b PC5 - Pin PC5
//! - \b PC6 - Pin PC6
//! - \b PC7 - Pin PC7
//! - \b PD0 - Pin PD0
//! - \b PD1 - Pin PD1
//! - \b PD2 - Pin PD2
//! - \b PD3 - Pin PD3
//! - \b PD4 - Pin PD4
//! - \b PD5 - Pin PD5
//! - \b PD6 - Pin PD6
//! - \b PD7 - Pin PD7
//! - \b PE0 - Pin PE0
//! - \b PE1 - Pin PE1
//! - \b PE2 - Pin PE2
//! - \b PE3 - Pin PE3
//! - \b PE4 - Pin PE4
//! - \b PE5 - Pin PE5
//! - \b PE6 - Pin PE6
//! - \b PE7 - Pin PE7
//! - \b PF0 - Pin PF0
//! - \b PF1 - Pin PF1
//! - \b PF2 - Pin PF2
//! - \b PF3 - Pin PF3
//! - \b PF4 - Pin PF4
//! - \b PF5 - Pin PF5
//! - \b PF6 - Pin PF6
//! - \b PF7 - Pin PF7
//!
//! \return None.
//!
//*****************************************************************************
void
TOFEchoInit(uint8_t GPIOPin)
{
    //
    // Enable Peripheral Clocks
    //
#ifdef USEPORTA
    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
    MAP_SysCtlDelay(3);
#endif
#ifdef USEPORTB
    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
    MAP_SysCtlDelay(3);
#endif
#ifdef USEPORTC
    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
    MAP_SysCtlDelay(3);
#endif
#ifdef USEPORTD
    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
    MAP_SysCtlDelay(3);
#endif
#ifdef USEPORTE
    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
    MAP_SysCtlDelay(3);
#endif
#ifdef USEPORTF
    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    MAP_SysCtlDelay(3);
#endif

    switch(GPIOPin){
#ifdef USEPORTA
	//Puerto A
#ifdef USEPORTAPIN0
    case PA0:{
    	if(!ConfigGPIO.GPIOS.PoA0){
		//
		// Enable pin PA0 for GPIOInput
		//
    	ConfigGPIO.GPIOS.PoA0 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_0);
		GPIOIntTypeSet(GPIO_PORTA_BASE,GPIO_PIN_0,GPIO_HIGH_LEVEL);
		Mask[0] += GPIO_INT_PIN_0;
    	}
		break;
    }
#endif
#ifdef USEPORTAPIN1
    case PA1:{
    	if(!ConfigGPIO.GPIOS.PoA1){
		//
		// Enable pin PA1 for GPIOInput
		//
    	ConfigGPIO.GPIOS.PoA1 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_1);
		GPIOIntTypeSet(GPIO_PORTA_BASE,GPIO_PIN_1,GPIO_HIGH_LEVEL);
		Mask[0] += GPIO_INT_PIN_1;
    	}
		break;
    }
#endif
#ifdef USEPORTAPIN2
    case PA2:{
    	if(!ConfigGPIO.GPIOS.PoA2){
    	//
		// Enable pin PA2 for GPIOInput
		//
    	ConfigGPIO.GPIOS.PoA2 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2);
		GPIOIntTypeSet(GPIO_PORTA_BASE,GPIO_PIN_2,GPIO_HIGH_LEVEL);
		Mask[0] += GPIO_INT_PIN_2;
    	}
		break;
    }
#endif
#ifdef USEPORTAPIN3
    case PA3:{
    	if(!ConfigGPIO.GPIOS.PoA3){
    	//
		// Enable pin PA3 for GPIOInput
		//
        ConfigGPIO.GPIOS.PoA3 = 1;
		GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_3);
		GPIOIntTypeSet(GPIO_PORTA_BASE,GPIO_PIN_3,GPIO_HIGH_LEVEL);
		Mask[0] += GPIO_INT_PIN_3;
    	}
		break;
	}
#endif
#ifdef USEPORTAPIN4
	case PA4:{
		if(!ConfigGPIO.GPIOS.PoA4){
		//
		// Enable pin PA4 for GPIOInput
		//
	    ConfigGPIO.GPIOS.PoA4 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_4);
		GPIOIntTypeSet(GPIO_PORTA_BASE,GPIO_PIN_4,GPIO_HIGH_LEVEL);
		Mask[0] += GPIO_INT_PIN_4;
		}
		break;
	}
#endif
#ifdef USEPORTAPIN5
	case PA5:{
		if(!ConfigGPIO.GPIOS.PoA5){
		//
		// Enable pin PA5 for GPIOInput
		//
	    ConfigGPIO.GPIOS.PoA5 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_5);
		GPIOIntTypeSet(GPIO_PORTA_BASE,GPIO_PIN_5,GPIO_HIGH_LEVEL);
		Mask[0] += GPIO_INT_PIN_5;
		}
		break;
	}
#endif
#ifdef USEPORTAPIN6
	case PA6:{
		if(!ConfigGPIO.GPIOS.PoA6){
		//
		// Enable pin PA6 for GPIOInput
		//
	    ConfigGPIO.GPIOS.PoA6 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_6);
		GPIOIntTypeSet(GPIO_PORTA_BASE,GPIO_PIN_6,GPIO_HIGH_LEVEL);
		Mask[0] += GPIO_INT_PIN_6;
		}
		break;
	}
#endif
#ifdef USEPORTAPIN7
	case PA7:{
		if(!ConfigGPIO.GPIOS.PoA7){
		//
		// Enable pin PA7 for GPIOInput
		//
		ConfigGPIO.GPIOS.PoA7 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_7);
		GPIOIntTypeSet(GPIO_PORTA_BASE,GPIO_PIN_7,GPIO_HIGH_LEVEL);
		Mask[0] += GPIO_INT_PIN_7;
		}
		break;
	}
#endif
#endif
#ifdef USEPORTB
	//Puerto B
#ifdef USEPORTBPIN0
	case PB0:{
		if(!ConfigGPIO.GPIOS.PoB0){
		//
		// Enable pin PB0 for GPIOInput
		//
		ConfigGPIO.GPIOS.PoB0 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_0);
		GPIOIntTypeSet(GPIO_PORTB_BASE,GPIO_PIN_0,GPIO_HIGH_LEVEL);
		Mask[1] += GPIO_INT_PIN_0;
		}
		break;
	}
#endif
#ifdef USEPORTBPIN1
	case PB1:{
		if(!ConfigGPIO.GPIOS.PoB1){
		//
		// Enable pin PB1 for GPIOInput
		//
		ConfigGPIO.GPIOS.PoB1 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_1);
		GPIOIntTypeSet(GPIO_PORTB_BASE,GPIO_PIN_1,GPIO_HIGH_LEVEL);
		Mask[1] += GPIO_INT_PIN_0;
		}
		break;
	}
#endif
#ifdef USEPORTBPIN2
	case PB2:{
		if(!ConfigGPIO.GPIOS.PoB2){
		//
		// Enable pin PB2 for GPIOInput
		//
		ConfigGPIO.GPIOS.PoB2 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_2);
		GPIOIntTypeSet(GPIO_PORTB_BASE,GPIO_PIN_2,GPIO_HIGH_LEVEL);
		Mask[1] += GPIO_INT_PIN_2;
		}
		break;
	}
#endif
#ifdef USEPORTBPIN3
	case PB3:{
		if(!ConfigGPIO.GPIOS.PoB3){
		//
		// Enable pin PB3 for GPIOInput
		//
		ConfigGPIO.GPIOS.PoB3 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_3);
		GPIOIntTypeSet(GPIO_PORTB_BASE,GPIO_PIN_3,GPIO_RISING_EDGE  );
		Mask[1] += GPIO_INT_PIN_3;
		}
		break;
	}
#endif
#ifdef USEPORTBPIN4
	case PB4:{
		if(!ConfigGPIO.GPIOS.PoB4){
		//
		// Enable pin PB4 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoB4 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_4);
		GPIOIntTypeSet(GPIO_PORTB_BASE,GPIO_PIN_4,GPIO_HIGH_LEVEL);
		Mask[1] += GPIO_INT_PIN_4;
		}
		break;
	}
#endif
#ifdef USEPORTBPIN5
	case PB5:{
		if(!ConfigGPIO.GPIOS.PoB5){
		//
		// Enable pin PB5 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoB5 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_5);
		GPIOIntTypeSet(GPIO_PORTB_BASE,GPIO_PIN_5,GPIO_HIGH_LEVEL);
		Mask[1] += GPIO_INT_PIN_5;
		}
		break;
	}
#endif
#ifdef USEPORTBPIN6
	case PB6:{
		if(!ConfigGPIO.GPIOS.PoB6){
		//
		// Enable pin PB6 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoB6 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_6);
		GPIOIntTypeSet(GPIO_PORTB_BASE,GPIO_PIN_6,GPIO_HIGH_LEVEL);
		Mask[1] += GPIO_INT_PIN_6;
		}
		break;
	}
#endif
#ifdef USEPORTBPIN7
	case PB7:{
		if(!ConfigGPIO.GPIOS.PoB7){
		//
		// Enable pin PB7 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoB7 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_7);
		GPIOIntTypeSet(GPIO_PORTB_BASE,GPIO_PIN_7,GPIO_HIGH_LEVEL);
		Mask[1] += GPIO_INT_PIN_7;
		}
			break;
		}
#endif
#endif
#ifdef USEPORTC
	//Puerto C
#ifdef USEPORTCPIN4
	case PC4:{
		if(!ConfigGPIO.GPIOS.PoC4){
		//
		// Enable pin PC4 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoC4 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_4);
		GPIOIntTypeSet(GPIO_PORTC_BASE,GPIO_PIN_4,GPIO_HIGH_LEVEL);
		Mask[2] += GPIO_INT_PIN_4;
		}
		break;
	}
#endif
#ifdef USEPORTCPIN5
	case PC5:{
		if(!ConfigGPIO.GPIOS.PoC5){
		//
		// Enable pin PC5 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoC5 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_5);
		GPIOIntTypeSet(GPIO_PORTC_BASE,GPIO_PIN_5,GPIO_HIGH_LEVEL);
		Mask[2] += GPIO_INT_PIN_5;
		}
		break;
	}
#endif
#ifdef USEPORTCPIN6
	case PC6:{
		if(!ConfigGPIO.GPIOS.PoC6){
		//
		// Enable pin PC6 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoC6 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_6);
		GPIOIntTypeSet(GPIO_PORTC_BASE,GPIO_PIN_6,GPIO_HIGH_LEVEL);
		Mask[2] += GPIO_INT_PIN_6;
		}
		break;
	}
#endif
#ifdef USEPORTCPIN7
	case PC7:{
		if(!ConfigGPIO.GPIOS.PoC7){
		//
		// Enable pin PC7 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoC7 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_7);
		GPIOIntTypeSet(GPIO_PORTC_BASE,GPIO_PIN_7,GPIO_HIGH_LEVEL);
		Mask[2] += GPIO_INT_PIN_7;
		}
		break;
	}
#endif
#endif
#ifdef USEPORTD
	//Puerto D
#ifdef USEPORTDPIN0
	case PD0:{
		if(!ConfigGPIO.GPIOS.PoD0){
		//
		// Enable pin PD0 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoD0 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_0);
		GPIOIntTypeSet(GPIO_PORTD_BASE,GPIO_PIN_0,GPIO_HIGH_LEVEL);
		Mask[3] += GPIO_INT_PIN_0;
		}
		break;
	}
#endif
#ifdef USEPORTDPIN1
	case PD1:{
		if(!ConfigGPIO.GPIOS.PoD1){
		//
		// Enable pin PD1 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoD1 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_1);
		GPIOIntTypeSet(GPIO_PORTD_BASE,GPIO_PIN_1,GPIO_HIGH_LEVEL);
		Mask[3] += GPIO_INT_PIN_1;
		}
		break;
	}
#endif
#ifdef USEPORTDPIN2
	case PD2:{
		if(!ConfigGPIO.GPIOS.PoD2){
		//
		// Enable pin PD2 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoD2 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_2);
		GPIOIntTypeSet(GPIO_PORTD_BASE,GPIO_PIN_2,GPIO_HIGH_LEVEL);
		Mask[3] += GPIO_INT_PIN_2;
		}
		break;
	}
#endif
#ifdef USEPORTDPIN3
	case PD3:{
		if(!ConfigGPIO.GPIOS.PoD3){
		//
		// Enable pin PD3 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoD3 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_3);
		GPIOIntTypeSet(GPIO_PORTD_BASE,GPIO_PIN_3,GPIO_HIGH_LEVEL);
		Mask[3] += GPIO_INT_PIN_3;
		}
		break;
	}
#endif
#ifdef USEPORTDPIN4
	case PD4:{
		if(!ConfigGPIO.GPIOS.PoD4){
		//
		// Enable pin PD4 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoD4 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_4);
		GPIOIntTypeSet(GPIO_PORTD_BASE,GPIO_PIN_4,GPIO_HIGH_LEVEL);
		Mask[3] += GPIO_INT_PIN_4;
		}
		break;
	}
#endif
#ifdef USEPORTDPIN5
	case PD5:{
		if(!ConfigGPIO.GPIOS.PoD5){
		//
		// Enable pin PD5 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoD5 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_5);
		GPIOIntTypeSet(GPIO_PORTD_BASE,GPIO_PIN_5,GPIO_HIGH_LEVEL);
		Mask[3] += GPIO_INT_PIN_5;
		}
		break;
	}
#endif
#ifdef USEPORTDPIN6
	case PD6:{
		if(!ConfigGPIO.GPIOS.PoD6){
		//
		// Enable pin PD6 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoD6 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_6);
		GPIOIntTypeSet(GPIO_PORTD_BASE,GPIO_PIN_6,GPIO_HIGH_LEVEL);
		Mask[3] += GPIO_INT_PIN_6;
		}
		break;
	}
#endif
#ifdef USEPORTDPIN7
	case PD7:{
		if(!ConfigGPIO.GPIOS.PoD7){
		//
		// Enable pin PD7 for GPIOInput
		//

		//
		//First open the lock and select the bits we want to modify in the GPIO commit register.
		//
		HWREG(GPIO_PORTD_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;
		HWREG(GPIO_PORTD_BASE + GPIO_O_CR) = 0x80;

		//
		//Now modify the configuration of the pins that we unlocked.
		//
		ConfigGPIO.GPIOS.PoD7 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_7);
		GPIOIntTypeSet(GPIO_PORTD_BASE,GPIO_PIN_7,GPIO_HIGH_LEVEL);
		Mask[3] += GPIO_INT_PIN_7;
		}
		break;
	}
#endif
#endif
#ifdef USEPORTE
	//Puerto E
#ifdef USEPORTEPIN0
	case PE0:{
		if(!ConfigGPIO.GPIOS.PoE0){
		//
		// Enable pin PE0 for GPIOInput
		//
		ConfigGPIO.GPIOS.PoE0 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_0);
		GPIOIntTypeSet(GPIO_PORTE_BASE,GPIO_PIN_0,GPIO_HIGH_LEVEL);
		Mask[4] += GPIO_INT_PIN_0;
		}
		break;
	}
#endif
#ifdef USEPORTEPIN1
	case PE1:{
		if(!ConfigGPIO.GPIOS.PoE1){
		//
		// Enable pin PE1 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoE1 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_1);
		GPIOIntTypeSet(GPIO_PORTE_BASE,GPIO_PIN_1,GPIO_HIGH_LEVEL);
		Mask[4] += GPIO_INT_PIN_1;
		}
		break;
	}
#endif
#ifdef USEPORTEPIN2
	case PE2:{
		if(!ConfigGPIO.GPIOS.PoE2){
		//
		// Enable pin PE2 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoE2 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_2);
		GPIOIntTypeSet(GPIO_PORTE_BASE,GPIO_PIN_2,GPIO_HIGH_LEVEL);
		Mask[4] += GPIO_INT_PIN_2;
		}

		//	break;
	}
#endif
#ifdef USEPORTEPIN3
	case PE3:{
		if(!ConfigGPIO.GPIOS.PoE3){
		// Enable pin PE3 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoE3 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_3);
		GPIOIntTypeSet(GPIO_PORTE_BASE,GPIO_PIN_3,GPIO_HIGH_LEVEL);
		Mask[4] += GPIO_INT_PIN_3;
		}
		break;
	}
#endif
#ifdef USEPORTEPIN4
	case PE4:{
		if(!ConfigGPIO.GPIOS.PoE4){
		//
		// Enable pin PE4 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoE4 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_4);
		GPIOIntTypeSet(GPIO_PORTE_BASE,GPIO_PIN_4,GPIO_HIGH_LEVEL);
		Mask[4] += GPIO_INT_PIN_4;
		}
		break;
	}
#endif
#ifdef USEPORTEPIN5
	case PE5:{
		if(!ConfigGPIO.GPIOS.PoE5){
		//
		// Enable pin PE5 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoE5 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_5);
		GPIOIntTypeSet(GPIO_PORTE_BASE,GPIO_PIN_5,GPIO_HIGH_LEVEL);
		Mask[4] += GPIO_INT_PIN_5;
		}
		break;
	}
#endif
#endif
#ifdef USEPORTF
	//Puerto F
#ifdef USEPORTFPIN0
	case PF0:{
		if(!ConfigGPIO.GPIOS.PoF0){
		//
		// Enable pin PF0 for GPIOInput
		//

		//
		//First open the lock and select the bits we want to modify in the GPIO commit register.
		//
		HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;
		HWREG(GPIO_PORTF_BASE + GPIO_O_CR) = 0x1;

		//
		//Now modify the configuration of the pins that we unlocked.
		//
		ConfigGPIO.GPIOS.PoF0 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_0);
		GPIOIntTypeSet(GPIO_PORTF_BASE,GPIO_PIN_0,GPIO_HIGH_LEVEL);
		Mask[5] += GPIO_INT_PIN_0;
		}
		break;
	}
#endif
#ifdef USEPORTFPIN1
	case PF1:{
		if(!ConfigGPIO.GPIOS.PoF1){
		//
		// Enable pin PF1 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoF1 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_1);
		GPIOIntTypeSet(GPIO_PORTF_BASE,GPIO_PIN_1,GPIO_HIGH_LEVEL);
		Mask[5] += GPIO_INT_PIN_1;
		}
		break;
	}
#endif
#ifdef USEPORTFPIN2
	case PF2:{
		if(!ConfigGPIO.GPIOS.PoF2){
		//
		// Enable pin PF2 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoF2 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_2);
		GPIOIntTypeSet(GPIO_PORTF_BASE,GPIO_PIN_2,GPIO_HIGH_LEVEL);
		Mask[5] += GPIO_INT_PIN_2;
		}
		break;
	}
#endif
#ifdef USEPORTFPIN3
	case PF3:{
		if(!ConfigGPIO.GPIOS.PoF3){
		//
		// Enable pin PF3 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoF3 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_3);
		GPIOIntTypeSet(GPIO_PORTF_BASE,GPIO_PIN_3,GPIO_HIGH_LEVEL);
		Mask[5] += GPIO_INT_PIN_3;
		}
		break;
	}
#endif
#ifdef USEPORTFPIN4
	case PF4:{
		if(!ConfigGPIO.GPIOS.PoF4){
		//
		// Enable pin PF4 for GPIOInput
		//
			ConfigGPIO.GPIOS.PoF4 = 1;
		MAP_GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4);
		GPIOIntTypeSet(GPIO_PORTF_BASE,GPIO_PIN_4,GPIO_HIGH_LEVEL);
		Mask[5] += GPIO_INT_PIN_4;
		}
		break;
	}
#endif
#endif
	default: break;

    }
	GPIOIntClear(GPIO_PORTA_BASE,0x0F);
	GPIOIntClear(GPIO_PORTB_BASE,0x0F);
	GPIOIntClear(GPIO_PORTC_BASE,0x0F);
	GPIOIntClear(GPIO_PORTD_BASE,0x0F);
	GPIOIntClear(GPIO_PORTE_BASE,0x0F);
	GPIOIntClear(GPIO_PORTF_BASE,0x0F);
	GPIOIntDisable(GPIO_PORTA_BASE,0x0F);
	GPIOIntDisable(GPIO_PORTB_BASE,0x0F);
	GPIOIntDisable(GPIO_PORTC_BASE,0x0F);
	GPIOIntDisable(GPIO_PORTD_BASE,0x0F);
	GPIOIntDisable(GPIO_PORTE_BASE,0x0F);
	GPIOIntDisable(GPIO_PORTF_BASE,0x0F);

#ifdef USEPORTA
	//Habilitacion de las interrupciones:
	//Puerto A con algo configurado
	if(ConfigGPIO.PortGpio[0] >0){

		//Primero deshabilita configura habilita
		 //IntEnable(INT_GPIOA);
		GPIOIntEnable(GPIO_PORTA_BASE,Mask[0]);
		//GPIOPadConfigSet(GPIO_PORTA_BASE,Mask[0],GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPD);
		GPIOIntRegister(GPIO_PORTA_BASE,TOFProcess);
		//GPIOIntTypeSet(GPIO_PORTA_BASE,Mask[0],GPIO_RISING_EDGE);


	}
#endif

#ifdef USEPORTB
	//Puerto B con algo configurado
	if(ConfigGPIO.PortGpio[1] >0){
	//	GPIOIntTypeSet(GPIO_PORTB_BASE,Mask[1],GPIO_PIN_TYPE_STD_WPD);
		GPIOIntRegister(GPIO_PORTB_BASE,TOFProcess);
		GPIOIntEnable(GPIO_PORTB_BASE,Mask[1]);

	}
#endif
#ifdef USEPORTC
	//Puerto C con algo configurado
	if(ConfigGPIO.PortGpio[2] >0){
		GPIOIntEnable(GPIO_PORTC_BASE,Mask[2]);
		GPIOIntRegister(GPIO_PORTC_BASE,TOFProcess);
	}
#endif
#ifdef USEPORTD
	//Puerto D con algo configurado
	if(ConfigGPIO.PortGpio[3] >0){
		GPIOIntEnable(GPIO_PORTD_BASE,Mask[3]);
		GPIOIntRegister(GPIO_PORTD_BASE,TOFProcess);
	}
#endif
#ifdef USEPORTE
	//Puerto E con algo configurado
	if(ConfigGPIO.PortGpio[4] >0){
		GPIOIntEnable(GPIO_PORTE_BASE,Mask[4]);
		GPIOIntRegister(GPIO_PORTE_BASE,TOFProcess);
	}
#endif
#ifdef USEPORTF
	//Puerto F con algo configurado
	if(ConfigGPIO.PortGpio[5] >0){
		GPIOIntEnable(GPIO_PORTF_BASE,Mask[5]);
		GPIOIntRegister(GPIO_PORTF_BASE,TOFProcess);
	}
#endif
//	IntMasterEnable();



}
Fd_t uart_Open(char *ifName, unsigned long flags)
{
	/* Configure CS (PE0) and nHIB (PE4) lines */
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
	ROM_GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PIN_4);
	ROM_GPIOPinWrite(GPIO_PORTE_BASE,GPIO_PIN_4, PIN_LOW);


	/* configuring UART interface */
	SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);

	GPIOPinConfigure(GPIO_PB0_U1RX);
	GPIOPinConfigure(GPIO_PB1_U1TX);
	ROM_GPIOPinTypeUART(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1);

	GPIOPinConfigure(GPIO_PC4_U1RTS);
	GPIOPinConfigure(GPIO_PC5_U1CTS);
	ROM_GPIOPinTypeUART(GPIO_PORTC_BASE, GPIO_PIN_4 | GPIO_PIN_5);

	GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_0, GPIO_STRENGTH_2MA,
				GPIO_PIN_TYPE_STD_WPU);
	/* configure with baud rate 115200 */
	ROM_UARTConfigSetExpClk(UART1_BASE, ROM_SysCtlClockGet(), 115200,
	                            (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
	                             UART_CONFIG_PAR_NONE));

    UARTFlowControlSet(UART1_BASE, UART_FLOWCONTROL_TX | UART_FLOWCONTROL_RX);

    UARTFIFOLevelSet(UART1_BASE, UART_FIFO_TX1_8, UART_FIFO_RX1_8);

    ROM_UARTEnable(UART1_BASE);
    ROM_UARTFIFOEnable(UART1_BASE);

    ROM_IntEnable(INT_UART1);
    ROM_UARTIntEnable(UART1_BASE, UART_INT_RX);
    ROM_UARTIntDisable(UART1_BASE, UART_INT_TX | UART_INT_RT);


	/* configure host IRQ line */
	GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_2);
	GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_STRENGTH_2MA,
			GPIO_PIN_TYPE_STD_WPD);
	GPIOIntTypeSet(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_RISING_EDGE);
	GPIOIntClear(GPIO_PORTB_BASE,GPIO_PIN_2);
	GPIOIntDisable(GPIO_PORTB_BASE,GPIO_PIN_2);
	ROM_IntEnable(INT_GPIOB);
	ROM_IntMasterEnable();

	IntIsMasked = FALSE;

	/* Enable WLAN interrupt */
	CC3100_InterruptEnable();

	/* 50 ms delay */
	ROM_SysCtlDelay((ROM_SysCtlClockGet()/(3*1000))*50 );


	return NONOS_RET_OK;
}
Exemple #18
0
void lswitch::stop() {

    GPIOIntDisable(base, pin);
}
Fd_t spi_Open(char *ifName, unsigned long flags)
{
    //
    // Enable required SSI and GPIO peripherals.
    //
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SPI_PORT);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_IRQ_PORT);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_nHIB_PORT);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SPI);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SPI_BASE);

    //
    // Set pin muxing to route the SPI signals to the relevant pins.
    //
    GPIOPinConfigure(SPI_CLK_MUX_SEL);
    GPIOPinConfigure(SPI_RX_MUX_SEL);
    GPIOPinConfigure(SPI_TX_MUX_SEL);
    //GPIOPinConfigure(GPIO_PB5_SSI2FSS);

    //
    // Configure the appropriate pins to be SSI instead of GPIO
    //
    GPIOPinTypeSSI(SPI_PORT,(SPI_TX_PIN | SPI_RX_PIN | SPI_CLK_PIN));

    //
    // Ensure that the SSI is disabled before making any configuration
    // changes.
    //
    SSIDisable(SPI_BASE);
    
    //
    // Configure SSI with 8 bit data, Polarity '0', Phase '1' and clock
    // frequency of 4Mhz.
    //
    SSIConfigSetExpClk(SPI_BASE, g_ui32SysClock, SSI_FRF_MOTO_MODE_0,
            SSI_MODE_MASTER, 4000000, 8);

    // Configure CS  and nHIB/Enable lines (CS High, nHIB Low)
    GPIOPinTypeGPIOOutput(SPI_CS_PORT, SPI_CS_PIN);
    GPIOPinTypeGPIOOutput(SPI_GPIO_nHIB_BASE, SPI_nHIB_PIN); 
    GPIOPinWrite(SPI_GPIO_nHIB_BASE,SPI_nHIB_PIN, PIN_LOW); // not necesary on cc3100
    GPIOPinWrite(SPI_CS_PORT,SPI_CS_PIN, PIN_HIGH);

    //
    // Enable the SSI now that configuration is complete.
    //
    SSIEnable(SPI_BASE);

    //
    // configure host IRQ line
    //
    GPIOPinTypeGPIOInput(SPI_GPIO_IRQ_BASE, SPI_IRQ_PIN);
    GPIOPadConfigSet(SPI_GPIO_IRQ_BASE, SPI_IRQ_PIN, GPIO_STRENGTH_2MA,
                     GPIO_PIN_TYPE_STD_WPD);
    GPIOIntTypeSet(SPI_GPIO_IRQ_BASE, SPI_IRQ_PIN, GPIO_RISING_EDGE);
    GPIOIntClear(SPI_GPIO_IRQ_BASE,SPI_IRQ_PIN);
    GPIOIntDisable(SPI_GPIO_IRQ_BASE,SPI_IRQ_PIN);
    IntEnable(INT_GPIO_SPI);

    IntMasterEnable();

    /* 1 ms delay */
    ROM_SysCtlDelay( (g_ui32SysClock/(3*1000))*1 );

    /* Enable WLAN interrupt */
    CC3100_InterruptEnable();

    return NONOS_RET_OK;
}