From e3d457d72f59bd442a3a8d13b311d7c8444e177d Mon Sep 17 00:00:00 2001 From: Kleidi Bujari Date: Fri, 4 Oct 2024 17:30:14 -0400 Subject: labs 1,2 --- .../lab1/Boards/Keil/MCB1700/Blinky_ULp/Blinky.c | 103 +++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100755 F2024/coe718/labs/lab1/Boards/Keil/MCB1700/Blinky_ULp/Blinky.c (limited to 'F2024/coe718/labs/lab1/Boards/Keil/MCB1700/Blinky_ULp/Blinky.c') diff --git a/F2024/coe718/labs/lab1/Boards/Keil/MCB1700/Blinky_ULp/Blinky.c b/F2024/coe718/labs/lab1/Boards/Keil/MCB1700/Blinky_ULp/Blinky.c new file mode 100755 index 0000000..e88b5a2 --- /dev/null +++ b/F2024/coe718/labs/lab1/Boards/Keil/MCB1700/Blinky_ULp/Blinky.c @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------- + * Name: Blinky.c + * Purpose: LED Flasher + * Note(s): __USE_LCD - enable Output on LCD, uncomment #define in code to use + * for demo (NOT for analysis purposes) + *---------------------------------------------------------------------------- + * Copyright (c) 2008-2011 Keil - An ARM Company. + * Name: Anita Tino + *----------------------------------------------------------------------------*/ + +#include "Blinky.h" + +#include + +#include "Board_Joystick.h" +#include "GLCD.h" +#include "LED.h" +#include "LPC17xx.h" + +#define __FI 1 /* Font index 16x24 */ +#define __USE_LCD 0 /* Uncomment to use the LCD */ + +// ITM Stimulus Port definitions for printf ////////////////// +#define ITM_Port8(n) (*((volatile unsigned char *)(0xE0000000 + 4 * n))) +#define ITM_Port16(n) (*((volatile unsigned short *)(0xE0000000 + 4 * n))) +#define ITM_Port32(n) (*((volatile unsigned long *)(0xE0000000 + 4 * n))) + +#define DEMCR (*((volatile unsigned long *)(0xE000EDFC))) +#define TRCENA 0x01000000 + +struct __FILE { + int handle; +}; +FILE __stdout; +FILE __stdin; + +int fputc(int ch, FILE *f) { + if (DEMCR & TRCENA) { + while (ITM_Port32(0) == 0); + ITM_Port8(0) = ch; + } + return (ch); +} + +/* Import external variables from IRQ.c file */ +extern uint8_t clock_ms; + +int main(void) { + LED_Init(); /* LED Initialization */ + Joystick_Initialize(); + +#ifdef __USE_LCD + GLCD_Init(); /* Initialize graphical LCD (if enabled */ + + GLCD_Clear(White); /* Clear graphical LCD display */ + GLCD_SetBackColor(Blue); + GLCD_SetTextColor(Yellow); + GLCD_DisplayString(0, 0, __FI, " COE718 Lab 1 "); + GLCD_SetTextColor(White); + GLCD_DisplayString(1, 0, __FI, " Blinky.c "); + GLCD_DisplayString(2, 0, __FI, " Try the joystick! "); + GLCD_SetBackColor(White); + GLCD_SetTextColor(Blue); + GLCD_DisplayString(6, 0, __FI, "Direction:"); +#endif + + // SystemCoreClockUpdate(); + SysTick_Config(SystemCoreClock / 100); + + const char *joystick = "NONE "; + while (1) { + const uint32_t state = Joystick_GetState(); + + if (state & JOYSTICK_LEFT) { + joystick = "LEFT "; + LED_Out(1); + } else if (state & JOYSTICK_RIGHT) { + joystick = "RIGHT"; + LED_Out(2); + } else if (state & JOYSTICK_DOWN) { + joystick = "DOWN "; + LED_Out(3); + } else if (state & JOYSTICK_UP) { + joystick = "UP "; + LED_Out(4); + } else if (state & JOYSTICK_CENTER) { + joystick = "PRESS"; + LED_Out(5); + } + +#ifdef __USE_LCD + GLCD_SetTextColor(Green); + GLCD_DisplayString(6, 11, __FI, (unsigned char *)joystick); +#endif + + /* Print message with AD value every 10 ms */ + if (clock_ms) { + clock_ms = 0; + + printf("Joystick: %s\r\n", joystick); + } + } +} -- cgit 1.4.1