]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_LPC1768_IAR/ParTest.c
8a5d69e94a0290600b83d3400d1a4910fc980d29
[freertos] / FreeRTOS / Demo / CORTEX_LPC1768_IAR / ParTest.c
1 /*\r
2  * FreeRTOS Kernel V10.2.1\r
3  * Copyright (C) 2019 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
4  *\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
11  *\r
12  * The above copyright notice and this permission notice shall be included in all\r
13  * copies or substantial portions of the Software.\r
14  *\r
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r
17  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
19  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
20  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
21  *\r
22  * http://www.FreeRTOS.org\r
23  * http://aws.amazon.com/freertos\r
24  *\r
25  * 1 tab == 4 spaces!\r
26  */\r
27 \r
28 /* FreeRTOS.org includes. */\r
29 #include "FreeRTOS.h"\r
30 \r
31 /* Demo application includes. */\r
32 #include "partest.h"\r
33 \r
34 /*-----------------------------------------------------------\r
35  * Simple parallel port IO routines.\r
36  *-----------------------------------------------------------*/\r
37 \r
38 #define partstLED1_OUTPUT               ( 1 << 25 )\r
39 #define partstLED2_OUTPUT               ( 1 << 4 )\r
40 \r
41 void vParTestInitialise( void )\r
42 {\r
43         /* Set LEDs to output. */\r
44     GPIO1->FIODIR = partstLED1_OUTPUT;\r
45         GPIO0->FIODIR = partstLED2_OUTPUT;\r
46 \r
47         /* Start with LED off. */\r
48     GPIO1->FIOSET = partstLED1_OUTPUT;\r
49         GPIO0->FIOSET = partstLED2_OUTPUT;\r
50 }\r
51 /*-----------------------------------------------------------*/\r
52 \r
53 void vParTestSetLED( unsigned long ulLEDIn, signed long xValue )\r
54 {\r
55         /* Used to set and clear LEDs on FIO2. */\r
56 \r
57         if( ulLEDIn == 0 )\r
58         {\r
59                 /* Set of clear the output. */\r
60                 if( xValue )\r
61                 {\r
62                         GPIO1->FIOCLR = partstLED1_OUTPUT;\r
63                 }\r
64                 else\r
65                 {\r
66                         GPIO1->FIOSET = partstLED1_OUTPUT;\r
67                 }\r
68         }\r
69         else if( ulLEDIn == 1 )\r
70         {\r
71                 /* Set of clear the output. */\r
72                 if( xValue )\r
73                 {\r
74                         GPIO0->FIOCLR = partstLED2_OUTPUT;\r
75                 }\r
76                 else\r
77                 {\r
78                         GPIO0->FIOSET = partstLED2_OUTPUT;\r
79                 }\r
80         }\r
81 }\r
82 /*-----------------------------------------------------------*/\r
83 \r
84 void vParTestToggleLED( unsigned long ulLEDIn )\r
85 {\r
86 unsigned long ulCurrentState;\r
87 \r
88         /* Used to toggle LEDs on FIO2. */\r
89 \r
90         if( ulLEDIn == 0 )\r
91         {\r
92                 /* If this bit is already set, clear it, and vice versa. */\r
93                 ulCurrentState = GPIO1->FIOPIN;\r
94                 if( ulCurrentState & partstLED1_OUTPUT )\r
95                 {\r
96                         GPIO1->FIOCLR = partstLED1_OUTPUT;\r
97                 }\r
98                 else\r
99                 {\r
100                         GPIO1->FIOSET = partstLED1_OUTPUT;\r
101                 }\r
102         }\r
103         else if( ulLEDIn == 1 )\r
104         {\r
105                 /* If this bit is already set, clear it, and vice versa. */\r
106                 ulCurrentState = GPIO0->FIOPIN;\r
107                 if( ulCurrentState & partstLED2_OUTPUT )\r
108                 {\r
109                         GPIO0->FIOCLR = partstLED2_OUTPUT;\r
110                 }\r
111                 else\r
112                 {\r
113                         GPIO0->FIOSET = partstLED2_OUTPUT;\r
114                 }\r
115         }\r
116 }\r
117 /*-----------------------------------------------------------*/\r
118 \r
119 long lParTestGetLEDState( void )\r
120 {\r
121         if( ( GPIO0->FIOPIN & partstLED2_OUTPUT ) == 0 )\r
122         {\r
123                 return pdFALSE;\r
124         }\r
125         else\r
126         {\r
127                 return pdTRUE;\r
128         }\r
129 }\r
130 /*-----------------------------------------------------------*/\r
131 \r
132 void vParTestSetLEDState( long lState )\r
133 {\r
134         /* Used to set and clear the LEDs on FIO1. */\r
135         if( lState != pdFALSE )\r
136         {\r
137                 GPIO0->FIOCLR = partstLED2_OUTPUT;\r
138         }\r
139         else\r
140         {\r
141                 GPIO0->FIOSET = partstLED2_OUTPUT;\r
142         }\r
143 }\r
144 /*-----------------------------------------------------------*/\r
145 \r