]> git.sur5r.net Git - freertos/blob - Demo/ARM7_STR71x_IAR/Library/gpio.c
First version under SVN is V4.0.1
[freertos] / Demo / ARM7_STR71x_IAR / Library / gpio.c
1 /******************** (C) COPYRIGHT 2003 STMicroelectronics ********************\r
2 * File Name          : gpio.c\r
3 * Author             : MCD Application Team\r
4 * Date First Issued  : 06/08/2003\r
5 * Description        : This file provides all the GPIO software functions\r
6 ********************************************************************************\r
7 * History:\r
8 *  30/11/2004 : V2.0\r
9 *  14/07/2004 : V1.3\r
10 *  01/01/2004 : V1.2\r
11 *******************************************************************************\r
12  THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH\r
13  CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.\r
14  AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT\r
15  OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT\r
16  OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION\r
17  CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
18 *******************************************************************************/\r
19 \r
20 #include "gpio.h"\r
21 \r
22 /*******************************************************************************\r
23 * Function Name  : GPIO_Config\r
24 * Description    : Configure the GPIO port pins\r
25 * Input 1        : GPIOx (x can be 0,1 or 2) the desired port\r
26 * Input 2        : Port_Pins : pins placements\r
27 * Input 3        : Pins Mode\r
28 * Output         : None\r
29 * Return         : None\r
30 *******************************************************************************/\r
31 void GPIO_Config (GPIO_TypeDef *GPIOx, u16 Port_Pins, GpioPinMode_TypeDef GPIO_Mode)\r
32 {\r
33   switch (GPIO_Mode)\r
34   {\r
35     case GPIO_HI_AIN_TRI:\r
36       GPIOx->PC0&=~Port_Pins;\r
37       GPIOx->PC1&=~Port_Pins;\r
38       GPIOx->PC2&=~Port_Pins;\r
39       break;\r
40 \r
41     case GPIO_IN_TRI_TTL:\r
42       GPIOx->PC0|=Port_Pins;\r
43       GPIOx->PC1&=~Port_Pins;\r
44       GPIOx->PC2&=~Port_Pins;\r
45       break;\r
46 \r
47     case GPIO_IN_TRI_CMOS:\r
48       GPIOx->PC0&=~Port_Pins;\r
49       GPIOx->PC1|=Port_Pins;\r
50       GPIOx->PC2&=~Port_Pins;\r
51       break;\r
52 \r
53     case GPIO_IPUPD_WP:\r
54       GPIOx->PC0|=Port_Pins;\r
55       GPIOx->PC1|=Port_Pins;\r
56       GPIOx->PC2&=~Port_Pins;\r
57       break;\r
58 \r
59     case GPIO_OUT_OD:\r
60       GPIOx->PC0&=~Port_Pins;\r
61       GPIOx->PC1&=~Port_Pins;\r
62       GPIOx->PC2|=Port_Pins;\r
63       break;\r
64 \r
65     case GPIO_OUT_PP:\r
66       GPIOx->PC0|=Port_Pins;\r
67       GPIOx->PC1&=~Port_Pins;\r
68       GPIOx->PC2|=Port_Pins;\r
69       break;\r
70 \r
71     case GPIO_AF_OD:\r
72       GPIOx->PC0&=~Port_Pins;\r
73       GPIOx->PC1|=Port_Pins;\r
74       GPIOx->PC2|=Port_Pins;\r
75       break;\r
76 \r
77     case GPIO_AF_PP:\r
78       GPIOx->PC0|=Port_Pins;\r
79       GPIOx->PC1|=Port_Pins;\r
80       GPIOx->PC2|=Port_Pins;\r
81       break;\r
82   }\r
83 }\r
84 \r
85 /*******************************************************************************\r
86 * Function Name  : GPIO_BitWrite\r
87 * Description    : Set or reset the selected port pin\r
88 * Input 1        : Selected GPIO port\r
89 * Input 2        : Pin number\r
90 * Input 3        : bit value\r
91 * Output         : None\r
92 * Return         : None\r
93 *******************************************************************************/\r
94 void GPIO_BitWrite(GPIO_TypeDef *GPIOx, u8 Port_Pin, u8 Port_Val)\r
95 {\r
96   if (Port_Val&0x01) GPIOx->PD |= 1<<Port_Pin; else GPIOx->PD &= ~(1<<Port_Pin);\r
97 }\r
98 \r
99 /*******************************************************************************\r
100 * Function Name  : GPIO_ByteWrite\r
101 * Description    : Write byte value to the selected PD register\r
102 * Input 1        : Selected GPIO port\r
103 * Input 2        : GPIO_MSB or GPIO_LSB\r
104 * Input 3        : Byte value\r
105 * Output         : None\r
106 * Return         : None\r
107 *******************************************************************************/\r
108 void GPIO_ByteWrite(GPIO_TypeDef *GPIOx, u8 Port_Byte, u8 Port_Val)\r
109 {\r
110   GPIOx->PD = Port_Byte ? (GPIOx->PD&0x00FF) | ((u16)Port_Val<<8)\r
111                         : (GPIOx->PD&0xFF00) | Port_Val;\r
112 }\r
113 \r
114 /******************* (C) COPYRIGHT 2003 STMicroelectronics *****END OF FILE****/\r