75 #include <stm32f4xx.h>
79 #define FSMC_NOR_PSRAM_CS_ADDR(n) (0x60000000 + ((n) - 1) \
81 #define FSMC_FLASH_BASE FSMC_NOR_PSRAM_CS_ADDR(1)
82 #define FSMC_PSRAM_BASE FSMC_NOR_PSRAM_CS_ADDR(2)
83 #define FSMC_LCD_SSD1963_BASE FSMC_NOR_PSRAM_CS_ADDR(3)
84 #define FSMC_IO_BASE FSMC_NOR_PSRAM_CS_ADDR(4)
85 #define FSMC_CARME_EXTENSION1_BASE (FSMC_IO_BASE + 0x0000000)
86 #define FSMC_CARME_EXTENSION2_BASE (FSMC_IO_BASE + 0x1000000)
87 #define FSMC_CAN_BASE (FSMC_IO_BASE + 0x2000000)
90 #define CARME_AGPIO_9 GPIOI, GPIO_Pin_5
91 #define CARME_AGPIO_13 GPIOG, GPIO_Pin_15
92 #define CARME_AGPIO_21 GPIOI, GPIO_Pin_4
93 #define CARME_AGPIO_22 GPIOH, GPIO_Pin_2
94 #define CARME_AGPIO_90 GPIOF, GPIO_Pin_11
95 #define CARME_AGPIO_91 GPIOF, GPIO_Pin_10
96 #define CARME_AGPIO_93 GPIOF, GPIO_Pin_9
97 #define CARME_AGPIO_94 GPIOF, GPIO_Pin_8
98 #define CARME_AGPIO_96 GPIOF, GPIO_Pin_7
99 #define CARME_AGPIO_97 GPIOF, GPIO_Pin_6
100 #define CARME_AGPIO_99 GPIOC, GPIO_Pin_7
101 #define CARME_AGPIO_101 GPIOB, GPIO_Pin_15
102 #define CARME_AGPIO_102 GPIOB, GPIO_Pin_14
103 #define CARME_AGPIO_103 GPIOI, GPIO_Pin_0
104 #define CARME_AGPIO_105 GPIOB, GPIO_Pin_8
105 #define CARME_AGPIO_108 GPIOB, GPIO_Pin_6
106 #define CARME_AGPIO_115 GPIOB, GPIO_Pin_2
107 #define CARME_AGPIO_116 GPIOB, GPIO_Pin_1
108 #define CARME_LED_GREEN GPIOI, GPIO_Pin_6
109 #define CARME_LED_RED GPIOI, GPIO_Pin_7
112 #define CARME_AGPIO_PIN_116 ((uint32_t)0x00001)
113 #define CARME_AGPIO_PIN_115 ((uint32_t)0x00002)
114 #define CARME_AGPIO_PIN_108 ((uint32_t)0x00004)
115 #define CARME_AGPIO_PIN_105 ((uint32_t)0x00008)
116 #define CARME_AGPIO_PIN_103 ((uint32_t)0x00010)
117 #define CARME_AGPIO_PIN_102 ((uint32_t)0x00020)
118 #define CARME_AGPIO_PIN_101 ((uint32_t)0x00040)
119 #define CARME_AGPIO_PIN_99 ((uint32_t)0x00080)
120 #define CARME_AGPIO_PIN_97 ((uint32_t)0x00100)
121 #define CARME_AGPIO_PIN_96 ((uint32_t)0x00200)
122 #define CARME_AGPIO_PIN_94 ((uint32_t)0x00400)
123 #define CARME_AGPIO_PIN_93 ((uint32_t)0x00800)
124 #define CARME_AGPIO_PIN_91 ((uint32_t)0x01000)
125 #define CARME_AGPIO_PIN_90 ((uint32_t)0x02000)
126 #define CARME_AGPIO_PIN_22 ((uint32_t)0x04000)
127 #define CARME_AGPIO_PIN_21 ((uint32_t)0x08000)
128 #define CARME_AGPIO_PIN_13 ((uint32_t)0x10000)
129 #define CARME_AGPIO_PIN_9 ((uint32_t)0x20000)
130 #define CARME_LED_PIN_GREEN ((uint32_t)0x40000)
131 #define CARME_LED_PIN_RED ((uint32_t)0x80000)
134 #define CARME_NO_ERROR 0x0
135 #define CARME_ERROR_IO1_BASE 0x10
136 #define CARME_ERROR_IO2_BASE 0x20
137 #define CARME_ERROR_UART_BASE 0x30
138 #define CARME_ERROR_CAN_BASE 0x40
139 #define CARME_ERROR_I2C_BASE 0x60
140 #define CARME_ERROR_AUDIO_BASE 0x80
141 #define CARME_ERROR_ETH_BASE 0xA0
142 #define CARME_ERROR_USB_BASE 0xC0
143 #define CARME_ERROR_EEPROM_BASE 0xE0
148 #define CARME_GPIO_PIN_TO_SOURCE(GPIO_PIN) ( \
149 ((GPIO_PIN) & GPIO_Pin_0) ? GPIO_PinSource0 : \
150 ((GPIO_PIN) & GPIO_Pin_1) ? GPIO_PinSource1 : \
151 ((GPIO_PIN) & GPIO_Pin_2) ? GPIO_PinSource2 : \
152 ((GPIO_PIN) & GPIO_Pin_3) ? GPIO_PinSource3 : \
153 ((GPIO_PIN) & GPIO_Pin_4) ? GPIO_PinSource4 : \
154 ((GPIO_PIN) & GPIO_Pin_5) ? GPIO_PinSource5 : \
155 ((GPIO_PIN) & GPIO_Pin_6) ? GPIO_PinSource6 : \
156 ((GPIO_PIN) & GPIO_Pin_7) ? GPIO_PinSource7 : \
157 ((GPIO_PIN) & GPIO_Pin_8) ? GPIO_PinSource8 : \
158 ((GPIO_PIN) & GPIO_Pin_9) ? GPIO_PinSource9 : \
159 ((GPIO_PIN) & GPIO_Pin_10) ? GPIO_PinSource10 : \
160 ((GPIO_PIN) & GPIO_Pin_11) ? GPIO_PinSource11 : \
161 ((GPIO_PIN) & GPIO_Pin_12) ? GPIO_PinSource12 : \
162 ((GPIO_PIN) & GPIO_Pin_13) ? GPIO_PinSource13 : \
163 ((GPIO_PIN) & GPIO_Pin_14) ? GPIO_PinSource14 : \
164 ((GPIO_PIN) & GPIO_Pin_15) ? GPIO_PinSource15 : \
170 #define CARME_GPIO_TO_EXTIPORTSOURCE(GPIO_PORT) ( \
171 (GPIO_PORT == GPIOA) ? EXTI_PortSourceGPIOA : \
172 (GPIO_PORT == GPIOB) ? EXTI_PortSourceGPIOB : \
173 (GPIO_PORT == GPIOC) ? EXTI_PortSourceGPIOC : \
174 (GPIO_PORT == GPIOD) ? EXTI_PortSourceGPIOD : \
175 (GPIO_PORT == GPIOE) ? EXTI_PortSourceGPIOE : \
176 (GPIO_PORT == GPIOF) ? EXTI_PortSourceGPIOF : \
177 (GPIO_PORT == GPIOG) ? EXTI_PortSourceGPIOG : \
178 (GPIO_PORT == GPIOH) ? EXTI_PortSourceGPIOH : \
179 (GPIO_PORT == GPIOI) ? EXTI_PortSourceGPIOI : \
185 #define CARME_GPIO_TO_EXTIPINSOURCE(GPIO_PIN) ( \
186 ((GPIO_PIN) & GPIO_Pin_0) ? EXTI_PinSource0 : \
187 ((GPIO_PIN) & GPIO_Pin_1) ? EXTI_PinSource1 : \
188 ((GPIO_PIN) & GPIO_Pin_2) ? EXTI_PinSource2 : \
189 ((GPIO_PIN) & GPIO_Pin_3) ? EXTI_PinSource3 : \
190 ((GPIO_PIN) & GPIO_Pin_4) ? EXTI_PinSource4 : \
191 ((GPIO_PIN) & GPIO_Pin_5) ? EXTI_PinSource5 : \
192 ((GPIO_PIN) & GPIO_Pin_6) ? EXTI_PinSource6 : \
193 ((GPIO_PIN) & GPIO_Pin_7) ? EXTI_PinSource7 : \
194 ((GPIO_PIN) & GPIO_Pin_8) ? EXTI_PinSource8 : \
195 ((GPIO_PIN) & GPIO_Pin_9) ? EXTI_PinSource9 : \
196 ((GPIO_PIN) & GPIO_Pin_10) ? EXTI_PinSource10 : \
197 ((GPIO_PIN) & GPIO_Pin_11) ? EXTI_PinSource11 : \
198 ((GPIO_PIN) & GPIO_Pin_12) ? EXTI_PinSource12 : \
199 ((GPIO_PIN) & GPIO_Pin_13) ? EXTI_PinSource13 : \
200 ((GPIO_PIN) & GPIO_Pin_14) ? EXTI_PinSource14 : \
201 ((GPIO_PIN) & GPIO_Pin_15) ? EXTI_PinSource15 : \
207 #define CARME_GPIO_TO_EXTILINE(GPIO_PIN) ( \
208 ((GPIO_PIN) & GPIO_Pin_0) ? EXTI_Line0 : \
209 ((GPIO_PIN) & GPIO_Pin_1) ? EXTI_Line1 : \
210 ((GPIO_PIN) & GPIO_Pin_2) ? EXTI_Line2 : \
211 ((GPIO_PIN) & GPIO_Pin_3) ? EXTI_Line3 : \
212 ((GPIO_PIN) & GPIO_Pin_4) ? EXTI_Line4 : \
213 ((GPIO_PIN) & GPIO_Pin_5) ? EXTI_Line5 : \
214 ((GPIO_PIN) & GPIO_Pin_6) ? EXTI_Line6 : \
215 ((GPIO_PIN) & GPIO_Pin_7) ? EXTI_Line7 : \
216 ((GPIO_PIN) & GPIO_Pin_8) ? EXTI_Line8 : \
217 ((GPIO_PIN) & GPIO_Pin_9) ? EXTI_Line9 : \
218 ((GPIO_PIN) & GPIO_Pin_10) ? EXTI_Line10 : \
219 ((GPIO_PIN) & GPIO_Pin_11) ? EXTI_Line11 : \
220 ((GPIO_PIN) & GPIO_Pin_12) ? EXTI_Line12 : \
221 ((GPIO_PIN) & GPIO_Pin_13) ? EXTI_Line13 : \
222 ((GPIO_PIN) & GPIO_Pin_14) ? EXTI_Line14 : \
223 ((GPIO_PIN) & GPIO_Pin_15) ? EXTI_Line15 : \
230 #define max(a, b) ( ((a) > (b)) ? (a) : (b) )
237 #define min(a, b) ( ((a) < (b)) ? (a) : (b) )
uint8_t ERROR_CODES
Error variable.
void CARME_LED_Red_Reset(void)
Reset the red LED on the CARME Module.
GPIOMode_TypeDef
GPIO Configuration Mode enumeration.
void CARME_GPIO_Init(CARME_Port_Pin_t *pPortPinAssociation, GPIO_InitTypeDef *pGPIO_InitStruct, uint8_t size)
Initialize GPIO ports with a CARME_Port_Pin_t table.
void CARME_Init(void)
CARME-M4 module initialization.
CARME port and pin association structure.
void CARME_LED_Green_Set(void)
Set the green LED on the CARME Module.
GPIO Init structure definition.
void CARME_AGPIO_Set(uint32_t write, uint32_t mask)
Set the AGPIO state.
void CARME_LED_Red_Set(void)
Set the red LED on the CARME Module.
void CARME_AGPIO_Get(uint32_t *pStatus)
Get the AGPIO state.
void CARME_LED_Green_Reset(void)
Reset the green LED on the CARME Module.
struct _CARME_Port_Pin_t CARME_Port_Pin_t
CARME port and pin association structure.