Ingo Electronics


    HOME                                                           Stellaris LM4F120 LaunchPad


Stellaris LM4F120  LaunchPad.    Užrakinti pinai .   Locked Pins.

Pasirenkant kai kuriuos Stellaris LM4F120 Launchpad “pinus” reikia atminti, kad keletas plokštės “pinų“ yra išanksto užrakinti, tai reiškia kad tokioje būsenoje jie negali dirbti nei kaip įėjimas, nei kaip išėjimas.

 Pagal nutylėjimą, Stellaris LM4F120 Launchpad užrakinti pinai yra šie:
//Locked pins:

PC0    PC1   PC2   PC3

PF0

PD7

Kadangi PCO, PC1, PC2, PC3 yra naudojami programavimui ir debuginimui, tai tai lieka tik PF0 ir PD7 kuriuos kartais dar prireiktų atrakinti.

Taip pat verta žinoti ir prisiminti kurie pinai yra prijungti prie vidinių plokštės elementų:

//led outputs
PF1      RED_LED

PF2      BLUE_LED

PF3      GREEN_LED

//User Switches
PF0   SW2

PF4   SW1

// USB Device Signals
PD4    USB0DM    D-

PD5    USB0DP     D+

// In-Circuit Debug Interface (ICDI)
PC0, PC1,PC2,PC3

// Virtual COM Port
PA0,PA1  U0RX and U0TX

//sekantys pinai yra sujungti tarpusavyje
PB7 is  connected via 0-Ω resistor to PD1

PB6 is  connected via 0-Ω resistor to PD0

 

Užrakinti pinai atrakinami į programos kodą įrašius žemiau pateiktas tris eilutes:

// Unlock PF0
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY_DD;
HWREG(GPIO_PORTF_BASE + GPIO_O_CR) |=  GPIO_PIN_0;
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0;
//’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’

// Unlock PD7
HWREG(GPIO_PORTD_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY_DD;
HWREG(GPIO_PORTD_BASE + GPIO_O_CR) |=  GPIO_PIN_7;           
HWREG(GPIO_PORTD_BASE + GPIO_O_LOCK) = 0;
//’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’

Žemiau yra pateiktas programos kodo pavyzdys, kur yra panaudotas PF0 atrakinimas:

//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

#include "inc/hw_types.h"

#include "inc/hw_memmap.h"

#include "inc/hw_sysctl.h"

#include "inc/hw_gpio.h"

#include "driverlib/sysctl.h"

#include "driverlib/gpio.h"

 

 

 

#define RED   GPIO_PIN_1

#define BLUE  GPIO_PIN_2

#define GREEN GPIO_PIN_3

 

#define SW2  GPIO_PIN_0

#define SW1  GPIO_PIN_4

 

 

//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

void main(){

 

    // Setup the system clock to run at 50 Mhz from PLL with crystal reference

    SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);

 

 

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

 

    // Unlock PF0

   HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY_DD;

   HWREG(GPIO_PORTF_BASE + GPIO_O_CR) |= GPIO_PIN_0;

   HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0;

 

 

    GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, RED|BLUE|GREEN);

 

    // turn weak pull-ups on

   GPIOPadConfigSet(GPIO_PORTF_BASE, SW2, GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD_WPU);

   GPIOPadConfigSet(GPIO_PORTF_BASE, SW1, GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD_WPU);

 

    //turn LED's off

    GPIOPinWrite(GPIO_PORTF_BASE, RED|BLUE|GREEN, 0x00);

 

    while(1)

    {

 

    //Press SW2 and turn on only the BLUE LED

    if( !GPIOPinRead(GPIO_PORTF_BASE, SW2)) { GPIOPinWrite(GPIO_PORTF_BASE, RED|BLUE|GREEN, BLUE);};

 

    //Press SW1 and turn on only the RED LED

    if( !GPIOPinRead(GPIO_PORTF_BASE, SW1)) { GPIOPinWrite(GPIO_PORTF_BASE, RED|BLUE|GREEN, RED);};

 

    //Press SW1 and SW2 together and turn on only the GREEN LED

    if( !GPIOPinRead(GPIO_PORTF_BASE, SW1)&&!GPIOPinRead(GPIO_PORTF_BASE, SW2))

    { GPIOPinWrite(GPIO_PORTF_BASE, RED|BLUE|GREEN, GREEN);SysCtlDelay(2000000);};

 

 

 

    }

}

//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''