Hercules RM57L843 LaunchPad: Uso básico del GIO - LEDs Intermitentes y uso de botón pulsador


En este pequeño ejemplo, usaremos los LEDs y botones que trae nuestra LaunchPad, LED3 se configuro desde el HALCoGen para que se encienda al inicio después de haberse configurado los puerto, si presionamos el botón A entonces LED3 cambiara de estado y LED2 encenderá de forma intermitente cada 500ms, hasta que se vuelva a pulsad botón A.

Circuito:
El circuito de los botones y LEDs con los que cuenta nuestra LaunchPad la podemos encontrar en la wiki de TI.
Configuración HALCoGen:
Bueno para iniciar, pues se debe crear un proyecto, seleccionar Driver Enable, Desmarcar todos los drivers y solo habilitar los GIO.

 
Después ir a PINMUX y seleccionar GIOB ya que como se vio en el circuito tanto el botón como los LEDs están en el puerto B.


Por ultimo entramos a GIO, configuramos el Bit 4, habilitamos la resistencia de Pull-Up y DOUT en 1, Bit 6 en cero y habilitamos como salida, para el Bit 7 lo seteamos en 1.


Código:

Tenemos una rutina para inicializar los puertos, una función para retardos y en main tenemos la lectura de GIOB_4, cuando esto ocurre se invierte el estado de GIOB_7 y GIOB_6 enciende de forma intermitente.
/* USER CODE BEGIN (0) */
/*******************************************************************************
*
* RM57L843: Basic GIO example
*
*******************************************************************************
* FileName: main.c
* Processor: RM57L843
* Complier: CCS 7.2.0.00013 & HALCoGen 04.07.00
* Author: Pedro Sánchez Ramírez (MrChunckuee)
* Blog: http://mrchunckuee.blogspot.com/
* Email: mrchunckuee.psr@gmail.com
* Description: Pequeño ejemplo sobre GIOs, LED3 (GIOB_7) se configuro para
* que se encienda desde el inicio, si detecta que se ha pulsado
* el boton A (GIOB_4) se apaga y LED2 (GIOB_6) enciende de forma
* intermitente cada 500ms, si se vuelve a pulsar A, se detiene
* y LED3 cambia de estado.
*******************************************************************************
* Rev. Date Comment
* v0.00 14/06/2018 - Creación del firmware
******************************************************************************/
/* USER CODE END */
/* Include Files */
#include "HL_sys_common.h"
/* USER CODE BEGIN (1) */
#include "HL_gio.h"
/* USER CODE END */
/** @fn void main(void)
* @brief Application main function
* @note This function is empty by default.
*
* This function is called after startup.
* The user can use this function to implement the application.
*/
/* USER CODE BEGIN (2) */
void MCU_DelaySeg(float time);
/* USER CODE END */
int main(void)
{
/* USER CODE BEGIN (3) */
unsigned char boton=0;
gioInit();
while(1){
if(gioGetBit(gioPORTB,4) == 0 ){
boton^=0xFF;
if(boton)
gioSetBit(gioPORTB,7,0);
else
gioSetBit(gioPORTB,7,1);
while(gioGetBit(gioPORTB,4) == 0);
MCU_DelaySeg(5e-3);
}
if(boton){
gioToggleBit(gioPORTB, 6);
MCU_DelaySeg(500e-3);
}
}
/* USER CODE END */
//return 0;
}
/* USER CODE BEGIN (4) */
/*******************************************************************************
* Function: void MCU_DelaySeg (float time)
* Description: Esta funcion genera retardos en el orden de segundos.
* Precondition: None
* Parameters: time = tiempo en milisegundos
* Return Values: None
* Remarks: Funcion tomada de Martin Valencia @ElectronAplica
* *****************************************************************************/
void MCU_DelaySeg (float time){
int long c, x_time = (int long) (1.36e7 * time);
for (c=0; c <= 2 * x_time; c++){
}
}
/* USER CODE END */
Vídeo:
Aquí un pequeño vídeo de la Hercules en funcionamiento:


Descargas:
Aquí el enlace directo para DESCARGAR los archivos disponibles, también puedes revisar o descargar la información desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare de responder lo mas pronto posible.


Donaciones:
Si te gusta el contenido o si los recursos te son de utilidad, comparte el enlace en tus redes sociales o sitios donde creas que puede ser de interés y la otra puedes ayudarme con una donación para seguir realizando publicaciones y mejorar el contenido del sitio. También puedes hacer donaciones en especie, ya sea con componentes, tarjetas de desarrollo o herramientas. Ponte en contacto para platicar, o puedes volverte uno de nuestros sponsors.


Pido una retroalimentación avisando cada que un enlace no sirva o tenga errores al momento de abrirlo, así también si una imagen no se ve o no carga, para corregirlo en el menor tiempo posible.

Bibliografía:

Publicar un comentario

0 Comentarios