2 * FreeRTOS Kernel V10.0.0
\r
3 * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
\r
5 * Permission is hereby granted, free of charge, to any person obtaining a copy of
\r
6 * this software and associated documentation files (the "Software"), to deal in
\r
7 * the Software without restriction, including without limitation the rights to
\r
8 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
\r
9 * the Software, and to permit persons to whom the Software is furnished to do so,
\r
10 * subject to the following conditions:
\r
12 * The above copyright notice and this permission notice shall be included in all
\r
13 * copies or substantial portions of the Software. If you wish to use our Amazon
\r
14 * FreeRTOS name, please do so in a fair use way that does not cause confusion.
\r
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
\r
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
\r
18 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
\r
19 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
\r
20 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
\r
21 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\r
23 * http://www.FreeRTOS.org
\r
24 * http://aws.amazon.com/freertos
\r
26 * 1 tab == 4 spaces!
\r
29 /* Simple LED IO functions. LED 0 is toggled by a timer every half second. */
\r
31 /* FreeRTOS includes. */
\r
32 #include "FreeRTOS.h"
\r
35 /* Library includes. */
\r
36 #include "lpc18xx_gpio.h"
\r
37 #include "lpc18xx_scu.h"
\r
38 #include "lpc18xx_cgu.h"
\r
40 #define ledTOGGLE_RATE ( 500 / portTICK_RATE_MS )
\r
42 #define ledLED0_PORT 1
\r
43 #define ledLED0_BIT ( 1UL << 11UL )
\r
45 #define ledLED1_PORT 2
\r
46 #define ledLED1_BIT ( 1UL << 12UL )
\r
49 * Toggles an LED just to show the application is running.
\r
51 static void prvLEDToggleTimerCallback( xTimerHandle xTimer );
\r
53 /*-----------------------------------------------------------*/
\r
55 void vLEDsInitialise( void )
\r
57 static xTimerHandle xLEDToggleTimer = NULL;
\r
59 /* Set the LED pin-muxing and configure as output. */
\r
60 scu_pinmux( 0x2 , 11, MD_PUP, FUNC0 );
\r
61 scu_pinmux( 0x2 , 12, MD_PUP, FUNC0 );
\r
62 GPIO_SetDir( ledLED0_PORT, ledLED0_BIT, 1 );
\r
63 GPIO_SetDir( ledLED1_PORT, ledLED1_BIT, 1 );
\r
65 /* Create the timer used to toggle LED0. */
\r
66 xLEDToggleTimer = xTimerCreate( "LEDTmr", /* Just a text name to associate with the timer, useful for debugging, but not used by the kernel. */
\r
67 ledTOGGLE_RATE, /* The period of the timer. */
\r
68 pdTRUE, /* This timer will autoreload, so uxAutoReload is set to pdTRUE. */
\r
69 NULL, /* The timer ID is not used, so can be set to NULL. */
\r
70 prvLEDToggleTimerCallback ); /* The callback function executed each time the timer expires. */
\r
72 /* Sanity check that the timer was actually created. */
\r
73 configASSERT( xLEDToggleTimer );
\r
75 /* Start the timer. If this is called before the scheduler is started then
\r
76 the block time will automatically get changed to 0 (from portMAX_DELAY). */
\r
77 xTimerStart( xLEDToggleTimer, portMAX_DELAY );
\r
79 /*-----------------------------------------------------------*/
\r
81 static void prvLEDToggleTimerCallback( xTimerHandle xTimer )
\r
83 static uint8_t ucState = 0;
\r
85 /* Remove compiler warnings. */
\r
88 /* Just toggle an LED to show the program is running. */
\r
91 GPIO_SetValue( ledLED0_PORT, ledLED0_BIT );
\r
95 GPIO_ClearValue( ledLED0_PORT, ledLED0_BIT );
\r