Sei sulla pagina 1di 2

// 1.

Como cualquier otro periférico, active la activación del reloj para el PUERTO
del LED. Esto se puede ver en el Capítulo 12 - Módulo de integración del sistema
(SIM) en el Manual de referencia.
SIM_SCGC5 | = SIM_SCGC5_PORTB_MASK;

// 2. Seleccione la función pin en el módulo de multiplexación de señal. Esto


se puede ver en el Capítulo 10 - Multiplexación de señales y descripciones de
señales (tabla Pinout) en el manual de referencia.
// En este caso, para la función GPIO se debe elegir la alternativa 1.
PORTB_PCR10 | = (PORT_PCR_MUX ( 1 )); // LED azul en el FRDM-KL05Z.
PORTB_PCR11 | = (PORT_PCR_MUX ( 1 )); // PORTB11 como pin de entrada.

// Si se necesita el pin configurado como entrada, debe configurar la


resistencia pull up o pull down en este registro (bits PE y PS), así como las
interrupciones (bits IRQC). Esto se puede ver en el Capítulo 11 - Control de
puertos e interrupciones (PORT) en el Manual de referencia.

// 3. Seleccione la dirección del pin (entrada o salida). Hay un registro de 32


bits para cada puerto. Si se establece el bit n, el pin n para ese puerto se
configurará como salida, pero si se borra, se configurará como entrada.
// Esto se puede ver en el Capítulo 38 - Entrada / Salida de propósito general
(GPIO) en el Manual de referencia.
GPIOB_PDDR | = ( 1 << 10 ); // Pin de salida.
GPIOB_PDDR & = ~ ( 1 << 11 ); // Pin de entrada.

// 4. Si desea cambiar el estado del pin de salida, debe configurar algunos de


los siguientes registros:
// * GPIOx_PSOR - Establece el pin.
// * GPIOx_PCOR - Borra el pin.
// * GPIOx_PTOR - Alterna el pin.

// Por ejemplo, para configurar el LED azul en el FRDM-KL05Z.


GPIOB_PSOR | = ( 1 << 10 );

// Para borrar el LED azul en el FRDM-KL05Z.


GPIOB_PCOR | = ( 1 << 10 );

// Para alternar el LED azul en el FRDM-KL05Z.


GPIOB_PTOR | = ( 1 << 10 );

// Si desea leer el estado del pin de entrada, debe leer el valor del siguiente
registro.
// Si la siguiente expresión es verdadera, el pin de entrada está en estado
alto, de lo contrario está en estado bajo.
if (GPIOB_PDIR & ( 1 << 11 ))
{
// El pin de entrada está en estado alto.
}
más
{
// El pin de entrada está en estado bajo.
}

#define led_azul
#define led_SW
PTE->PCOR = MASK(led_azul);

while(1){
if(PTA->PDIR & MASK(led_SW)){
PTE->PCOR = MASK(led_azul);
}
}

PORTA->PCR[led_sw] &= ~PORT_PCR_MUX_MASK;


PORTA->PCR[led_sw] |= ~PORT_PCR_MUX(1);
PORTE->PCR[led_azul] &= ~PORT_PCR_MUX_MASK;
PORTE->PCR[led_azul] |= ~PORT_PCR_MUX(1);

PTE->PDDR |= ~MASK(led_azul);
PTA->PDDR &= ~MASK(led_SW);

Potrebbero piacerti anche