]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_LM3S316_IAR/ParTest/ParTest.c
82fe2370d4953465186773bb77627d3ea7b264f9
[freertos] / FreeRTOS / Demo / CORTEX_LM3S316_IAR / ParTest / 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 /*-----------------------------------------------------------\r
29  * Simple parallel port IO routines.\r
30  *-----------------------------------------------------------*/\r
31 \r
32 /*\r
33 */\r
34 \r
35 \r
36 #include "FreeRTOS.h"\r
37 #include "task.h"\r
38 #include "partest.h"\r
39 \r
40 #include "pdc.h"\r
41 \r
42 #define partstPINS      (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 Z | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7)\r
43 \r
44 #define partstALL_OUTPUTS_OFF   ( ( unsigned char ) 0x00 )\r
45 #define partstMAX_OUTPUT_LED    ( ( unsigned char ) 8 )\r
46 \r
47 static volatile unsigned char ucOutputValue = partstALL_OUTPUTS_OFF;\r
48 \r
49 void vParTestInitialise( void )\r
50 {\r
51         PDCInit();\r
52         PDCWrite( PDC_LED, ucOutputValue );\r
53 }\r
54 /*-----------------------------------------------------------*/\r
55 \r
56 void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )\r
57 {\r
58 unsigned char ucBit = ( unsigned char ) 1;\r
59 \r
60         vTaskSuspendAll();\r
61         {\r
62                 if( uxLED < partstMAX_OUTPUT_LED )\r
63                 {\r
64                         ucBit = ( ( unsigned char ) 1 ) << uxLED;\r
65 \r
66                         if( xValue == pdFALSE )\r
67                         {\r
68                                 ucBit ^= ( unsigned char ) 0xff;\r
69                                 ucOutputValue &= ucBit;\r
70                         }\r
71                         else\r
72                         {\r
73                                 ucOutputValue |= ucBit;\r
74                         }\r
75 \r
76                         PDCWrite( PDC_LED, ucOutputValue );\r
77                 }       \r
78         }\r
79         xTaskResumeAll();\r
80 }\r
81 /*-----------------------------------------------------------*/\r
82 \r
83 void vParTestToggleLED( unsigned portBASE_TYPE uxLED )\r
84 {\r
85 unsigned char ucBit;\r
86 \r
87         vTaskSuspendAll();\r
88         {\r
89                 if( uxLED < partstMAX_OUTPUT_LED )\r
90                 {\r
91                         ucBit = ( ( unsigned char ) 1 ) << uxLED;\r
92 \r
93                         if( ucOutputValue & ucBit )\r
94                         {\r
95                                 ucOutputValue &= ~ucBit;\r
96                         }\r
97                         else\r
98                         {\r
99                                 ucOutputValue |= ucBit;\r
100                         }\r
101 \r
102                         PDCWrite( PDC_LED, ucOutputValue );\r
103                 }\r
104         }\r
105         xTaskResumeAll();\r
106 }\r
107 \r