Hello all , I am trying to use LCD with Blinky example , i want to see on the screen how a few threats are working parallel.
for start i am trying to use "GLCD_Initialize();" but i get this error:
.\Flash\Blinky.axf: Error: L6218E: Undefined symbol GLCD_Initialize (referred from blinky.o).
this is my code:
/*---------------------------------------------------------------------------- * RL-ARM - RTX *---------------------------------------------------------------------------- * Name: BLinky.c * Purpose: RTX example program *---------------------------------------------------------------------------- * This code is part of the RealView Run-Time Library. * Copyright (c) 2004-2014 KEIL - An ARM Company. All rights reserved. *---------------------------------------------------------------------------*/ #include "cmsis_os.h" #include "LPC17xx.h" #include "Board_LED.h" #include "GLCD_Config.h" #include "Board_GLCD.h" osThreadId tid_phaseA; /* Thread id of task: phase_a */ osThreadId tid_phaseB; /* Thread id of task: phase_b */ osThreadId tid_phaseC; /* Thread id of task: phase_c */ osThreadId tid_phaseD; /* Thread id of task: phase_d */ osThreadId tid_clock; /* Thread id of task: clock */ #define LED_A 0 #define LED_B 1 #define LED_C 2 #define LED_D 3 #define LED_CLK 7 /*---------------------------------------------------------------------------- * Switch LED on *---------------------------------------------------------------------------*/ void Switch_On (unsigned char led) { LED_On(led); } /*---------------------------------------------------------------------------- * Switch LED off *---------------------------------------------------------------------------*/ void Switch_Off (unsigned char led) { LED_Off(led); } /*---------------------------------------------------------------------------- * Function 'signal_func' called from multiple threads *---------------------------------------------------------------------------*/ void signal_func (osThreadId tid) { osSignalSet(tid_clock, 0x0100); /* set signal to clock thread */ osDelay(500); /* delay 500ms */ osSignalSet(tid_clock, 0x0100); /* set signal to clock thread */ osDelay(500); /* delay 500ms */ osSignalSet(tid, 0x0001); /* set signal to thread 'thread' */ osDelay(500); /* delay 500ms */ } /*---------------------------------------------------------------------------- * Thread 1 'phaseA': Phase A output *---------------------------------------------------------------------------*/ void phaseA (void const *argument) { for (;;) { osSignalWait(0x0001, osWaitForever); /* wait for an event flag 0x0001 */ Switch_On (LED_A); signal_func(tid_phaseB); /* call common signal function */ Switch_Off(LED_A); } } /*---------------------------------------------------------------------------- * Thread 2 'phaseB': Phase B output *---------------------------------------------------------------------------*/ void phaseB (void const *argument) { for (;;) { osSignalWait(0x0001, osWaitForever); /* wait for an event flag 0x0001 */ Switch_On (LED_B); signal_func(tid_phaseC); /* call common signal function */ Switch_Off(LED_B); } } /*---------------------------------------------------------------------------- * Thread 3 'phaseC': Phase C output *---------------------------------------------------------------------------*/ void phaseC (void const *argument) { for (;;) { osSignalWait(0x0001, osWaitForever); /* wait for an event flag 0x0001 */ Switch_On (LED_C); signal_func(tid_phaseD); /* call common signal function */ Switch_Off(LED_C); } } /*---------------------------------------------------------------------------- * Thread 4 'phaseD': Phase D output *---------------------------------------------------------------------------*/ void phaseD (void const *argument) { for (;;) { osSignalWait(0x0001, osWaitForever); /* wait for an event flag 0x0001 */ Switch_On (LED_D); signal_func(tid_phaseA); /* call common signal function */ Switch_Off(LED_D); } } /*---------------------------------------------------------------------------- * Thread 5 'clock': Signal Clock *---------------------------------------------------------------------------*/ void clock (void const *argument) { for (;;) { osSignalWait(0x0100, osWaitForever); /* wait for an event flag 0x0100 */ Switch_On (LED_CLK); osDelay(80); /* delay 80ms */ Switch_Off(LED_CLK); } } osThreadDef(phaseA, osPriorityNormal, 1, 0); osThreadDef(phaseB, osPriorityNormal, 1, 0); osThreadDef(phaseC, osPriorityNormal, 1, 0); osThreadDef(phaseD, osPriorityNormal, 1, 0); osThreadDef(clock, osPriorityNormal, 1, 0); /*---------------------------------------------------------------------------- * Main: Initialize and start RTX Kernel *---------------------------------------------------------------------------*/ int main (void) { LED_Initialize(); /* Initialize the LEDs */ GLCD_Initialize (); tid_phaseA = osThreadCreate(osThread(phaseA), NULL); tid_phaseB = osThreadCreate(osThread(phaseB), NULL); tid_phaseC = osThreadCreate(osThread(phaseC), NULL); tid_phaseD = osThreadCreate(osThread(phaseD), NULL); tid_clock = osThreadCreate(osThread(clock), NULL); osSignalSet(tid_phaseA, 0x0001); /* set signal to phaseA thread */ osDelay(osWaitForever); while(1); }
p.s
i added GLCD_Config.h to C:\Keil_v5\ARM\Pack\ARM\CMSIS\4.2.0\CMSIS_RTX\INC
Thanks.
you should have a copy of the GLCD_Config.h on blinky.c path.