stm32f3xx_hal_gpio_ex.h 74 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520
  1. /**
  2. ******************************************************************************
  3. * @file stm32f3xx_hal_gpio_ex.h
  4. * @author MCD Application Team
  5. * @brief Header file of GPIO HAL Extended module.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) 2016 STMicroelectronics.
  10. * All rights reserved.
  11. *
  12. * This software is licensed under terms that can be found in the LICENSE file
  13. * in the root directory of this software component.
  14. * If no LICENSE file comes with this software, it is provided AS-IS.
  15. *
  16. ******************************************************************************
  17. */
  18. /* Define to prevent recursive inclusion -------------------------------------*/
  19. #ifndef __STM32F3xx_HAL_GPIO_EX_H
  20. #define __STM32F3xx_HAL_GPIO_EX_H
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. /* Includes ------------------------------------------------------------------*/
  25. #include "stm32f3xx_hal_def.h"
  26. /** @addtogroup STM32F3xx_HAL_Driver
  27. * @{
  28. */
  29. /** @defgroup GPIOEx GPIOEx
  30. * @brief GPIO Extended HAL module driver
  31. * @{
  32. */
  33. /* Exported types ------------------------------------------------------------*/
  34. /* Exported constants --------------------------------------------------------*/
  35. /** @defgroup GPIOEx_Exported_Constants GPIOEx Exported Constants
  36. * @{
  37. */
  38. /** @defgroup GPIOEx_Alternate_function_selection GPIOEx Alternate function selection
  39. * @{
  40. */
  41. #if defined (STM32F302xC)
  42. /*---------------------------------- STM32F302xC ------------------------------*/
  43. /**
  44. * @brief AF 0 selection
  45. */
  46. #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00U) /* RTC_50Hz Alternate Function mapping */
  47. #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */
  48. #define GPIO_AF0_TAMPER ((uint8_t)0x00U) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
  49. #define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */
  50. #define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */
  51. /**
  52. * @brief AF 1 selection
  53. */
  54. #define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */
  55. #define GPIO_AF1_TIM15 ((uint8_t)0x01U) /* TIM15 Alternate Function mapping */
  56. #define GPIO_AF1_TIM16 ((uint8_t)0x01U) /* TIM16 Alternate Function mapping */
  57. #define GPIO_AF1_TIM17 ((uint8_t)0x01U) /* TIM17 Alternate Function mapping */
  58. #define GPIO_AF1_EVENTOUT ((uint8_t)0x01U) /* EVENTOUT Alternate Function mapping */
  59. /**
  60. * @brief AF 2 selection
  61. */
  62. #define GPIO_AF2_TIM1 ((uint8_t)0x02U) /* TIM1 Alternate Function mapping */
  63. #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */
  64. #define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */
  65. #define GPIO_AF2_TIM4 ((uint8_t)0x02U) /* TIM4 Alternate Function mapping */
  66. #define GPIO_AF2_TIM15 ((uint8_t)0x02U) /* TIM15 Alternate Function mapping */
  67. #define GPIO_AF2_COMP1 ((uint8_t)0x02U) /* COMP1 Alternate Function mapping */
  68. /**
  69. * @brief AF 3 selection
  70. */
  71. #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */
  72. #define GPIO_AF3_TIM15 ((uint8_t)0x03U) /* TIM15 Alternate Function mapping */
  73. /**
  74. * @brief AF 4 selection
  75. */
  76. #define GPIO_AF4_TIM1 ((uint8_t)0x04U) /* TIM1 Alternate Function mapping */
  77. #define GPIO_AF4_TIM16 ((uint8_t)0x04U) /* TIM16 Alternate Function mapping */
  78. #define GPIO_AF4_TIM17 ((uint8_t)0x04U) /* TIM17 Alternate Function mapping */
  79. #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */
  80. #define GPIO_AF4_I2C2 ((uint8_t)0x04U) /* I2C2 Alternate Function mapping */
  81. /**
  82. * @brief AF 5 selection
  83. */
  84. #define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1/I2S1 Alternate Function mapping */
  85. #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2/I2S2 Alternate Function mapping */
  86. #define GPIO_AF5_SPI3 ((uint8_t)0x05U) /* SPI3/I2S3 Alternate Function mapping */
  87. #define GPIO_AF5_I2S ((uint8_t)0x05U) /* I2S Alternate Function mapping */
  88. #define GPIO_AF5_I2S2ext ((uint8_t)0x05U) /* I2S2ext Alternate Function mapping */
  89. #define GPIO_AF5_IR ((uint8_t)0x05U) /* IR Alternate Function mapping */
  90. #define GPIO_AF5_UART4 ((uint8_t)0x05U) /* UART4 Alternate Function mapping */
  91. #define GPIO_AF5_UART5 ((uint8_t)0x05U) /* UART5 Alternate Function mapping */
  92. /**
  93. * @brief AF 6 selection
  94. */
  95. #define GPIO_AF6_SPI2 ((uint8_t)0x06U) /* SPI2/I2S2 Alternate Function mapping */
  96. #define GPIO_AF6_SPI3 ((uint8_t)0x06U) /* SPI3/I2S3 Alternate Function mapping */
  97. #define GPIO_AF6_I2S3ext ((uint8_t)0x06U) /* I2S3ext Alternate Function mapping */
  98. #define GPIO_AF6_TIM1 ((uint8_t)0x06U) /* TIM1 Alternate Function mapping */
  99. #define GPIO_AF6_IR ((uint8_t)0x06U) /* IR Alternate Function mapping */
  100. /**
  101. * @brief AF 7 selection
  102. */
  103. #define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */
  104. #define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */
  105. #define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */
  106. #define GPIO_AF7_COMP6 ((uint8_t)0x07U) /* COMP6 Alternate Function mapping */
  107. #define GPIO_AF7_CAN ((uint8_t)0x07U) /* CAN Alternate Function mapping */
  108. /**
  109. * @brief AF 8 selection
  110. */
  111. #define GPIO_AF8_COMP1 ((uint8_t)0x08U) /* COMP1 Alternate Function mapping */
  112. #define GPIO_AF8_COMP2 ((uint8_t)0x08U) /* COMP2 Alternate Function mapping */
  113. #define GPIO_AF8_COMP4 ((uint8_t)0x08U) /* COMP4 Alternate Function mapping */
  114. #define GPIO_AF8_COMP6 ((uint8_t)0x08U) /* COMP6 Alternate Function mapping */
  115. /**
  116. * @brief AF 9 selection
  117. */
  118. #define GPIO_AF9_CAN ((uint8_t)0x09U) /* CAN Alternate Function mapping */
  119. #define GPIO_AF9_TIM1 ((uint8_t)0x09U) /* TIM1 Alternate Function mapping */
  120. #define GPIO_AF9_TIM15 ((uint8_t)0x09U) /* TIM15 Alternate Function mapping */
  121. /**
  122. * @brief AF 10 selection
  123. */
  124. #define GPIO_AF10_TIM2 ((uint8_t)0xAU) /* TIM2 Alternate Function mapping */
  125. #define GPIO_AF10_TIM3 ((uint8_t)0xAU) /* TIM3 Alternate Function mapping */
  126. #define GPIO_AF10_TIM4 ((uint8_t)0xAU) /* TIM4 Alternate Function mapping */
  127. #define GPIO_AF10_TIM17 ((uint8_t)0xAU) /* TIM17 Alternate Function mapping */
  128. /**
  129. * @brief AF 11 selection
  130. */
  131. #define GPIO_AF11_TIM1 ((uint8_t)0x0BU) /* TIM1 Alternate Function mapping */
  132. /**
  133. * @brief AF 12 selection
  134. */
  135. #define GPIO_AF12_TIM1 ((uint8_t)0xCU) /* TIM1 Alternate Function mapping */
  136. /**
  137. * @brief AF 14 selection
  138. */
  139. #define GPIO_AF14_USB ((uint8_t)0x0EU) /* USB Alternate Function mapping */
  140. /**
  141. * @brief AF 15 selection
  142. */
  143. #define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */
  144. #define IS_GPIO_AF(AF) (((AF) <= (uint8_t)0x0CU) || ((AF) == (uint8_t)0x0EU) || ((AF) == (uint8_t)0x0FU))
  145. /*------------------------------------------------------------------------------------------*/
  146. #endif /* STM32F302xC */
  147. #if defined (STM32F303xC)
  148. /*---------------------------------- STM32F303xC ------------------------------*/
  149. /**
  150. * @brief AF 0 selection
  151. */
  152. #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00U) /* RTC_50Hz Alternate Function mapping */
  153. #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */
  154. #define GPIO_AF0_TAMPER ((uint8_t)0x00U) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
  155. #define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */
  156. #define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */
  157. /**
  158. * @brief AF 1 selection
  159. */
  160. #define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */
  161. #define GPIO_AF1_TIM15 ((uint8_t)0x01U) /* TIM15 Alternate Function mapping */
  162. #define GPIO_AF1_TIM16 ((uint8_t)0x01U) /* TIM16 Alternate Function mapping */
  163. #define GPIO_AF1_TIM17 ((uint8_t)0x01U) /* TIM17 Alternate Function mapping */
  164. #define GPIO_AF1_EVENTOUT ((uint8_t)0x01U) /* EVENTOUT Alternate Function mapping */
  165. /**
  166. * @brief AF 2 selection
  167. */
  168. #define GPIO_AF2_TIM1 ((uint8_t)0x02U) /* TIM1 Alternate Function mapping */
  169. #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */
  170. #define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */
  171. #define GPIO_AF2_TIM4 ((uint8_t)0x02U) /* TIM4 Alternate Function mapping */
  172. #define GPIO_AF2_TIM8 ((uint8_t)0x02U) /* TIM8 Alternate Function mapping */
  173. #define GPIO_AF2_TIM15 ((uint8_t)0x02U) /* TIM15 Alternate Function mapping */
  174. #define GPIO_AF2_COMP1 ((uint8_t)0x02U) /* COMP1 Alternate Function mapping */
  175. /**
  176. * @brief AF 3 selection
  177. */
  178. #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */
  179. #define GPIO_AF3_TIM8 ((uint8_t)0x03U) /* TIM8 Alternate Function mapping */
  180. #define GPIO_AF3_COMP7 ((uint8_t)0x03U) /* COMP7 Alternate Function mapping */
  181. #define GPIO_AF3_TIM15 ((uint8_t)0x03U) /* TIM15 Alternate Function mapping */
  182. /**
  183. * @brief AF 4 selection
  184. */
  185. #define GPIO_AF4_TIM1 ((uint8_t)0x04U) /* TIM1 Alternate Function mapping */
  186. #define GPIO_AF4_TIM8 ((uint8_t)0x04U) /* TIM8 Alternate Function mapping */
  187. #define GPIO_AF4_TIM16 ((uint8_t)0x04U) /* TIM16 Alternate Function mapping */
  188. #define GPIO_AF4_TIM17 ((uint8_t)0x04U) /* TIM17 Alternate Function mapping */
  189. #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */
  190. #define GPIO_AF4_I2C2 ((uint8_t)0x04U) /* I2C2 Alternate Function mapping */
  191. /**
  192. * @brief AF 5 selection
  193. */
  194. #define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1/I2S1 Alternate Function mapping */
  195. #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2/I2S2 Alternate Function mapping */
  196. #define GPIO_AF5_SPI3 ((uint8_t)0x05U) /* SPI3/I2S3 Alternate Function mapping */
  197. #define GPIO_AF5_I2S ((uint8_t)0x05U) /* I2S Alternate Function mapping */
  198. #define GPIO_AF5_I2S2ext ((uint8_t)0x05U) /* I2S2ext Alternate Function mapping */
  199. #define GPIO_AF5_TIM8 ((uint8_t)0x05U) /* TIM8 Alternate Function mapping */
  200. #define GPIO_AF5_IR ((uint8_t)0x05U) /* IR Alternate Function mapping */
  201. #define GPIO_AF5_UART4 ((uint8_t)0x05U) /* UART4 Alternate Function mapping */
  202. #define GPIO_AF5_UART5 ((uint8_t)0x05U) /* UART5 Alternate Function mapping */
  203. /**
  204. * @brief AF 6 selection
  205. */
  206. #define GPIO_AF6_SPI2 ((uint8_t)0x06U) /* SPI2/I2S2 Alternate Function mapping */
  207. #define GPIO_AF6_SPI3 ((uint8_t)0x06U) /* SPI3/I2S3 Alternate Function mapping */
  208. #define GPIO_AF6_I2S3ext ((uint8_t)0x06U) /* I2S3ext Alternate Function mapping */
  209. #define GPIO_AF6_TIM1 ((uint8_t)0x06U) /* TIM1 Alternate Function mapping */
  210. #define GPIO_AF6_TIM8 ((uint8_t)0x06U) /* TIM8 Alternate Function mapping */
  211. #define GPIO_AF6_IR ((uint8_t)0x06U) /* IR Alternate Function mapping */
  212. /**
  213. * @brief AF 7 selection
  214. */
  215. #define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */
  216. #define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */
  217. #define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */
  218. #define GPIO_AF7_COMP3 ((uint8_t)0x07U) /* COMP3 Alternate Function mapping */
  219. #define GPIO_AF7_COMP5 ((uint8_t)0x07U) /* COMP5 Alternate Function mapping */
  220. #define GPIO_AF7_COMP6 ((uint8_t)0x07U) /* COMP6 Alternate Function mapping */
  221. #define GPIO_AF7_CAN ((uint8_t)0x07U) /* CAN Alternate Function mapping */
  222. /**
  223. * @brief AF 8 selection
  224. */
  225. #define GPIO_AF8_COMP1 ((uint8_t)0x08U) /* COMP1 Alternate Function mapping */
  226. #define GPIO_AF8_COMP2 ((uint8_t)0x08U) /* COMP2 Alternate Function mapping */
  227. #define GPIO_AF8_COMP3 ((uint8_t)0x08U) /* COMP3 Alternate Function mapping */
  228. #define GPIO_AF8_COMP4 ((uint8_t)0x08U) /* COMP4 Alternate Function mapping */
  229. #define GPIO_AF8_COMP5 ((uint8_t)0x08U) /* COMP5 Alternate Function mapping */
  230. #define GPIO_AF8_COMP6 ((uint8_t)0x08U) /* COMP6 Alternate Function mapping */
  231. /**
  232. * @brief AF 9 selection
  233. */
  234. #define GPIO_AF9_CAN ((uint8_t)0x09U) /* CAN Alternate Function mapping */
  235. #define GPIO_AF9_TIM1 ((uint8_t)0x09U) /* TIM1 Alternate Function mapping */
  236. #define GPIO_AF9_TIM8 ((uint8_t)0x09U) /* TIM8 Alternate Function mapping */
  237. #define GPIO_AF9_TIM15 ((uint8_t)0x09U) /* TIM15 Alternate Function mapping */
  238. /**
  239. * @brief AF 10 selection
  240. */
  241. #define GPIO_AF10_TIM2 ((uint8_t)0xAU) /* TIM2 Alternate Function mapping */
  242. #define GPIO_AF10_TIM3 ((uint8_t)0xAU) /* TIM3 Alternate Function mapping */
  243. #define GPIO_AF10_TIM4 ((uint8_t)0xAU) /* TIM4 Alternate Function mapping */
  244. #define GPIO_AF10_TIM8 ((uint8_t)0xAU) /* TIM8 Alternate Function mapping */
  245. #define GPIO_AF10_TIM17 ((uint8_t)0xAU) /* TIM17 Alternate Function mapping */
  246. /**
  247. * @brief AF 11 selection
  248. */
  249. #define GPIO_AF11_TIM1 ((uint8_t)0x0BU) /* TIM1 Alternate Function mapping */
  250. #define GPIO_AF11_TIM8 ((uint8_t)0x0BU) /* TIM8 Alternate Function mapping */
  251. /**
  252. * @brief AF 12 selection
  253. */
  254. #define GPIO_AF12_TIM1 ((uint8_t)0xCU) /* TIM1 Alternate Function mapping */
  255. /**
  256. * @brief AF 14 selection
  257. */
  258. #define GPIO_AF14_USB ((uint8_t)0x0EU) /* USB Alternate Function mapping */
  259. /**
  260. * @brief AF 15 selection
  261. */
  262. #define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */
  263. #define IS_GPIO_AF(AF) (((AF) <= (uint8_t)0x0CU) || ((AF) == (uint8_t)0x0EU) || ((AF) == (uint8_t)0x0FU))
  264. /*------------------------------------------------------------------------------------------*/
  265. #endif /* STM32F303xC */
  266. #if defined (STM32F303xE)
  267. /*---------------------------------- STM32F303xE ------------------------------*/
  268. /**
  269. * @brief AF 0 selection
  270. */
  271. #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00U) /* RTC_50Hz Alternate Function mapping */
  272. #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */
  273. #define GPIO_AF0_TAMPER ((uint8_t)0x00U) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
  274. #define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */
  275. #define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */
  276. /**
  277. * @brief AF 1 selection
  278. */
  279. #define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */
  280. #define GPIO_AF1_TIM15 ((uint8_t)0x01U) /* TIM15 Alternate Function mapping */
  281. #define GPIO_AF1_TIM16 ((uint8_t)0x01U) /* TIM16 Alternate Function mapping */
  282. #define GPIO_AF1_TIM17 ((uint8_t)0x01U) /* TIM17 Alternate Function mapping */
  283. #define GPIO_AF1_EVENTOUT ((uint8_t)0x01U) /* EVENTOUT Alternate Function mapping */
  284. /**
  285. * @brief AF 2 selection
  286. */
  287. #define GPIO_AF2_TIM1 ((uint8_t)0x02U) /* TIM1 Alternate Function mapping */
  288. #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */
  289. #define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */
  290. #define GPIO_AF2_TIM4 ((uint8_t)0x02U) /* TIM4 Alternate Function mapping */
  291. #define GPIO_AF2_TIM8 ((uint8_t)0x02U) /* TIM8 Alternate Function mapping */
  292. #define GPIO_AF2_TIM15 ((uint8_t)0x02U) /* TIM15 Alternate Function mapping */
  293. #define GPIO_AF2_COMP1 ((uint8_t)0x02U) /* COMP1 Alternate Function mapping */
  294. #define GPIO_AF2_I2C3 ((uint8_t)0x02U) /* I2C3 Alternate Function mapping */
  295. #define GPIO_AF2_TIM20 ((uint8_t)0x02U) /* TIM20 Alternate Function mapping */
  296. /**
  297. * @brief AF 3 selection
  298. */
  299. #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */
  300. #define GPIO_AF3_TIM8 ((uint8_t)0x03U) /* TIM8 Alternate Function mapping */
  301. #define GPIO_AF3_COMP7 ((uint8_t)0x03U) /* COMP7 Alternate Function mapping */
  302. #define GPIO_AF3_TIM15 ((uint8_t)0x03U) /* TIM15 Alternate Function mapping */
  303. #define GPIO_AF3_I2C3 ((uint8_t)0x03U) /* I2C3 Alternate Function mapping */
  304. #define GPIO_AF3_TIM20 ((uint8_t)0x03U) /* TIM20 Alternate Function mapping */
  305. /**
  306. * @brief AF 4 selection
  307. */
  308. #define GPIO_AF4_TIM1 ((uint8_t)0x04U) /* TIM1 Alternate Function mapping */
  309. #define GPIO_AF4_TIM8 ((uint8_t)0x04U) /* TIM8 Alternate Function mapping */
  310. #define GPIO_AF4_TIM16 ((uint8_t)0x04U) /* TIM16 Alternate Function mapping */
  311. #define GPIO_AF4_TIM17 ((uint8_t)0x04U) /* TIM17 Alternate Function mapping */
  312. #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */
  313. #define GPIO_AF4_I2C2 ((uint8_t)0x04U) /* I2C2 Alternate Function mapping */
  314. /**
  315. * @brief AF 5 selection
  316. */
  317. #define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1 Alternate Function mapping */
  318. #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2/I2S2 Alternate Function mapping */
  319. #define GPIO_AF5_SPI3 ((uint8_t)0x05U) /* SPI3/I2S3 Alternate Function mapping */
  320. #define GPIO_AF5_I2S ((uint8_t)0x05U) /* I2S Alternate Function mapping */
  321. #define GPIO_AF5_I2S2ext ((uint8_t)0x05U) /* I2S2ext Alternate Function mapping */
  322. #define GPIO_AF5_TIM8 ((uint8_t)0x05U) /* TIM8 Alternate Function mapping */
  323. #define GPIO_AF5_IR ((uint8_t)0x05U) /* IR Alternate Function mapping */
  324. #define GPIO_AF5_UART4 ((uint8_t)0x05U) /* UART4 Alternate Function mapping */
  325. #define GPIO_AF5_UART5 ((uint8_t)0x05U) /* UART5 Alternate Function mapping */
  326. #define GPIO_AF5_SPI4 ((uint8_t)0x05U) /* SPI4 Alternate Function mapping */
  327. /**
  328. * @brief AF 6 selection
  329. */
  330. #define GPIO_AF6_SPI2 ((uint8_t)0x06U) /* SPI2/I2S2 Alternate Function mapping */
  331. #define GPIO_AF6_SPI3 ((uint8_t)0x06U) /* SPI3/I2S3 Alternate Function mapping */
  332. #define GPIO_AF6_I2S3ext ((uint8_t)0x06U) /* I2S3ext Alternate Function mapping */
  333. #define GPIO_AF6_TIM1 ((uint8_t)0x06U) /* TIM1 Alternate Function mapping */
  334. #define GPIO_AF6_TIM8 ((uint8_t)0x06U) /* TIM8 Alternate Function mapping */
  335. #define GPIO_AF6_IR ((uint8_t)0x06U) /* IR Alternate Function mapping */
  336. #define GPIO_AF6_TIM20 ((uint8_t)0x06U) /* TIM20 Alternate Function mapping */
  337. /**
  338. * @brief AF 7 selection
  339. */
  340. #define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */
  341. #define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */
  342. #define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */
  343. #define GPIO_AF7_COMP3 ((uint8_t)0x07U) /* COMP3 Alternate Function mapping */
  344. #define GPIO_AF7_COMP5 ((uint8_t)0x07U) /* COMP5 Alternate Function mapping */
  345. #define GPIO_AF7_COMP6 ((uint8_t)0x07U) /* COMP6 Alternate Function mapping */
  346. #define GPIO_AF7_CAN ((uint8_t)0x07U) /* CAN Alternate Function mapping */
  347. /**
  348. * @brief AF 8 selection
  349. */
  350. #define GPIO_AF8_COMP1 ((uint8_t)0x08U) /* COMP1 Alternate Function mapping */
  351. #define GPIO_AF8_COMP2 ((uint8_t)0x08U) /* COMP2 Alternate Function mapping */
  352. #define GPIO_AF8_COMP3 ((uint8_t)0x08U) /* COMP3 Alternate Function mapping */
  353. #define GPIO_AF8_COMP4 ((uint8_t)0x08U) /* COMP4 Alternate Function mapping */
  354. #define GPIO_AF8_COMP5 ((uint8_t)0x08U) /* COMP5 Alternate Function mapping */
  355. #define GPIO_AF8_COMP6 ((uint8_t)0x08U) /* COMP6 Alternate Function mapping */
  356. #define GPIO_AF8_I2C3 ((uint8_t)0x08U) /* I2C3 Alternate Function mapping */
  357. /**
  358. * @brief AF 9 selection
  359. */
  360. #define GPIO_AF9_CAN ((uint8_t)0x09U) /* CAN Alternate Function mapping */
  361. #define GPIO_AF9_TIM1 ((uint8_t)0x09U) /* TIM1 Alternate Function mapping */
  362. #define GPIO_AF9_TIM8 ((uint8_t)0x09U) /* TIM8 Alternate Function mapping */
  363. #define GPIO_AF9_TIM15 ((uint8_t)0x09U) /* TIM15 Alternate Function mapping */
  364. /**
  365. * @brief AF 10 selection
  366. */
  367. #define GPIO_AF10_TIM2 ((uint8_t)0xAU) /* TIM2 Alternate Function mapping */
  368. #define GPIO_AF10_TIM3 ((uint8_t)0xAU) /* TIM3 Alternate Function mapping */
  369. #define GPIO_AF10_TIM4 ((uint8_t)0xAU) /* TIM4 Alternate Function mapping */
  370. #define GPIO_AF10_TIM8 ((uint8_t)0xAU) /* TIM8 Alternate Function mapping */
  371. #define GPIO_AF10_TIM17 ((uint8_t)0xAU) /* TIM17 Alternate Function mapping */
  372. /**
  373. * @brief AF 11 selection
  374. */
  375. #define GPIO_AF11_TIM1 ((uint8_t)0x0BU) /* TIM1 Alternate Function mapping */
  376. #define GPIO_AF11_TIM8 ((uint8_t)0x0BU) /* TIM8 Alternate Function mapping */
  377. /**
  378. * @brief AF 12 selection
  379. */
  380. #define GPIO_AF12_TIM1 ((uint8_t)0xCU) /* TIM1 Alternate Function mapping */
  381. #define GPIO_AF12_FMC ((uint8_t)0xCU) /* FMC Alternate Function mapping */
  382. #define GPIO_AF12_SDIO ((uint8_t)0xCU) /* SDIO Alternate Function mapping */
  383. /**
  384. * @brief AF 14 selection
  385. */
  386. #define GPIO_AF14_USB ((uint8_t)0x0EU) /* USB Alternate Function mapping */
  387. /**
  388. * @brief AF 15 selection
  389. */
  390. #define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */
  391. #define IS_GPIO_AF(AF) (((AF) <= (uint8_t)0x0CU) || ((AF) == (uint8_t)0x0EU) || ((AF) == (uint8_t)0x0FU))
  392. /*------------------------------------------------------------------------------------------*/
  393. #endif /* STM32F303xE */
  394. #if defined (STM32F302xE)
  395. /*---------------------------------- STM32F302xE ------------------------------*/
  396. /**
  397. * @brief AF 0 selection
  398. */
  399. #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00U) /* RTC_50Hz Alternate Function mapping */
  400. #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */
  401. #define GPIO_AF0_TAMPER ((uint8_t)0x00U) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
  402. #define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */
  403. #define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */
  404. /**
  405. * @brief AF 1 selection
  406. */
  407. #define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */
  408. #define GPIO_AF1_TIM15 ((uint8_t)0x01U) /* TIM15 Alternate Function mapping */
  409. #define GPIO_AF1_TIM16 ((uint8_t)0x01U) /* TIM16 Alternate Function mapping */
  410. #define GPIO_AF1_TIM17 ((uint8_t)0x01U) /* TIM17 Alternate Function mapping */
  411. #define GPIO_AF1_EVENTOUT ((uint8_t)0x01U) /* EVENTOUT Alternate Function mapping */
  412. /**
  413. * @brief AF 2 selection
  414. */
  415. #define GPIO_AF2_TIM1 ((uint8_t)0x02U) /* TIM1 Alternate Function mapping */
  416. #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */
  417. #define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */
  418. #define GPIO_AF2_TIM4 ((uint8_t)0x02U) /* TIM4 Alternate Function mapping */
  419. #define GPIO_AF2_TIM15 ((uint8_t)0x02U) /* TIM15 Alternate Function mapping */
  420. #define GPIO_AF2_COMP1 ((uint8_t)0x02U) /* COMP1 Alternate Function mapping */
  421. #define GPIO_AF2_I2C3 ((uint8_t)0x02U) /* I2C3 Alternate Function mapping */
  422. /**
  423. * @brief AF 3 selection
  424. */
  425. #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */
  426. #define GPIO_AF3_TIM15 ((uint8_t)0x03U) /* TIM15 Alternate Function mapping */
  427. #define GPIO_AF3_I2C3 ((uint8_t)0x03U) /* I2C3 Alternate Function mapping */
  428. /**
  429. * @brief AF 4 selection
  430. */
  431. #define GPIO_AF4_TIM1 ((uint8_t)0x04U) /* TIM1 Alternate Function mapping */
  432. #define GPIO_AF4_TIM16 ((uint8_t)0x04U) /* TIM16 Alternate Function mapping */
  433. #define GPIO_AF4_TIM17 ((uint8_t)0x04U) /* TIM17 Alternate Function mapping */
  434. #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */
  435. #define GPIO_AF4_I2C2 ((uint8_t)0x04U) /* I2C2 Alternate Function mapping */
  436. /**
  437. * @brief AF 5 selection
  438. */
  439. #define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1 Alternate Function mapping */
  440. #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2/I2S2 Alternate Function mapping */
  441. #define GPIO_AF5_SPI3 ((uint8_t)0x05U) /* SPI3/I2S3 Alternate Function mapping */
  442. #define GPIO_AF5_I2S ((uint8_t)0x05U) /* I2S Alternate Function mapping */
  443. #define GPIO_AF5_I2S2ext ((uint8_t)0x05U) /* I2S2ext Alternate Function mapping */
  444. #define GPIO_AF5_IR ((uint8_t)0x05U) /* IR Alternate Function mapping */
  445. #define GPIO_AF5_UART4 ((uint8_t)0x05U) /* UART4 Alternate Function mapping */
  446. #define GPIO_AF5_UART5 ((uint8_t)0x05U) /* UART5 Alternate Function mapping */
  447. #define GPIO_AF5_SPI4 ((uint8_t)0x05U) /* SPI4 Alternate Function mapping */
  448. /**
  449. * @brief AF 6 selection
  450. */
  451. #define GPIO_AF6_SPI2 ((uint8_t)0x06U) /* SPI2/I2S2 Alternate Function mapping */
  452. #define GPIO_AF6_SPI3 ((uint8_t)0x06U) /* SPI3/I2S3 Alternate Function mapping */
  453. #define GPIO_AF6_I2S3ext ((uint8_t)0x06U) /* I2S3ext Alternate Function mapping */
  454. #define GPIO_AF6_TIM1 ((uint8_t)0x06U) /* TIM1 Alternate Function mapping */
  455. #define GPIO_AF6_IR ((uint8_t)0x06U) /* IR Alternate Function mapping */
  456. /**
  457. * @brief AF 7 selection
  458. */
  459. #define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */
  460. #define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */
  461. #define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */
  462. #define GPIO_AF7_COMP6 ((uint8_t)0x07U) /* COMP6 Alternate Function mapping */
  463. #define GPIO_AF7_CAN ((uint8_t)0x07U) /* CAN Alternate Function mapping */
  464. /**
  465. * @brief AF 8 selection
  466. */
  467. #define GPIO_AF8_COMP1 ((uint8_t)0x08U) /* COMP1 Alternate Function mapping */
  468. #define GPIO_AF8_COMP2 ((uint8_t)0x08U) /* COMP2 Alternate Function mapping */
  469. #define GPIO_AF8_COMP4 ((uint8_t)0x08U) /* COMP4 Alternate Function mapping */
  470. #define GPIO_AF8_COMP6 ((uint8_t)0x08U) /* COMP6 Alternate Function mapping */
  471. #define GPIO_AF8_I2C3 ((uint8_t)0x08U) /* I2C3 Alternate Function mapping */
  472. /**
  473. * @brief AF 9 selection
  474. */
  475. #define GPIO_AF9_CAN ((uint8_t)0x09U) /* CAN Alternate Function mapping */
  476. #define GPIO_AF9_TIM1 ((uint8_t)0x09U) /* TIM1 Alternate Function mapping */
  477. #define GPIO_AF9_TIM15 ((uint8_t)0x09U) /* TIM15 Alternate Function mapping */
  478. /**
  479. * @brief AF 10 selection
  480. */
  481. #define GPIO_AF10_TIM2 ((uint8_t)0xAU) /* TIM2 Alternate Function mapping */
  482. #define GPIO_AF10_TIM3 ((uint8_t)0xAU) /* TIM3 Alternate Function mapping */
  483. #define GPIO_AF10_TIM4 ((uint8_t)0xAU) /* TIM4 Alternate Function mapping */
  484. #define GPIO_AF10_TIM17 ((uint8_t)0xAU) /* TIM17 Alternate Function mapping */
  485. /**
  486. * @brief AF 11 selection
  487. */
  488. #define GPIO_AF11_TIM1 ((uint8_t)0x0BU) /* TIM1 Alternate Function mapping */
  489. /**
  490. * @brief AF 12 selection
  491. */
  492. #define GPIO_AF12_TIM1 ((uint8_t)0xCU) /* TIM1 Alternate Function mapping */
  493. #define GPIO_AF12_FMC ((uint8_t)0xCU) /* FMC Alternate Function mapping */
  494. #define GPIO_AF12_SDIO ((uint8_t)0xCU) /* SDIO Alternate Function mapping */
  495. /**
  496. * @brief AF 14 selection
  497. */
  498. #define GPIO_AF14_USB ((uint8_t)0x0EU) /* USB Alternate Function mapping */
  499. /**
  500. * @brief AF 15 selection
  501. */
  502. #define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */
  503. #define IS_GPIO_AF(AF) (((AF) <= (uint8_t)0x0CU) || ((AF) == (uint8_t)0x0EU) || ((AF) == (uint8_t)0x0FU))
  504. /*------------------------------------------------------------------------------------------*/
  505. #endif /* STM32F302xE */
  506. #if defined (STM32F398xx)
  507. /*---------------------------------- STM32F398xx ------------------------------*/
  508. /**
  509. * @brief AF 0 selection
  510. */
  511. #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00U) /* RTC_50Hz Alternate Function mapping */
  512. #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */
  513. #define GPIO_AF0_TAMPER ((uint8_t)0x00U) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
  514. #define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */
  515. #define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */
  516. /**
  517. * @brief AF 1 selection
  518. */
  519. #define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */
  520. #define GPIO_AF1_TIM15 ((uint8_t)0x01U) /* TIM15 Alternate Function mapping */
  521. #define GPIO_AF1_TIM16 ((uint8_t)0x01U) /* TIM16 Alternate Function mapping */
  522. #define GPIO_AF1_TIM17 ((uint8_t)0x01U) /* TIM17 Alternate Function mapping */
  523. #define GPIO_AF1_EVENTOUT ((uint8_t)0x01U) /* EVENTOUT Alternate Function mapping */
  524. /**
  525. * @brief AF 2 selection
  526. */
  527. #define GPIO_AF2_TIM1 ((uint8_t)0x02U) /* TIM1 Alternate Function mapping */
  528. #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */
  529. #define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */
  530. #define GPIO_AF2_TIM4 ((uint8_t)0x02U) /* TIM4 Alternate Function mapping */
  531. #define GPIO_AF2_TIM8 ((uint8_t)0x02U) /* TIM8 Alternate Function mapping */
  532. #define GPIO_AF2_TIM15 ((uint8_t)0x02U) /* TIM15 Alternate Function mapping */
  533. #define GPIO_AF2_COMP1 ((uint8_t)0x02U) /* COMP1 Alternate Function mapping */
  534. #define GPIO_AF2_I2C3 ((uint8_t)0x02U) /* I2C3 Alternate Function mapping */
  535. #define GPIO_AF2_TIM20 ((uint8_t)0x02U) /* TIM20 Alternate Function mapping */
  536. /**
  537. * @brief AF 3 selection
  538. */
  539. #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */
  540. #define GPIO_AF3_TIM8 ((uint8_t)0x03U) /* TIM8 Alternate Function mapping */
  541. #define GPIO_AF3_COMP7 ((uint8_t)0x03U) /* COMP7 Alternate Function mapping */
  542. #define GPIO_AF3_TIM15 ((uint8_t)0x03U) /* TIM15 Alternate Function mapping */
  543. #define GPIO_AF3_I2C3 ((uint8_t)0x03U) /* I2C3 Alternate Function mapping */
  544. #define GPIO_AF3_TIM20 ((uint8_t)0x03U) /* TIM20 Alternate Function mapping */
  545. /**
  546. * @brief AF 4 selection
  547. */
  548. #define GPIO_AF4_TIM1 ((uint8_t)0x04U) /* TIM1 Alternate Function mapping */
  549. #define GPIO_AF4_TIM8 ((uint8_t)0x04U) /* TIM8 Alternate Function mapping */
  550. #define GPIO_AF4_TIM16 ((uint8_t)0x04U) /* TIM16 Alternate Function mapping */
  551. #define GPIO_AF4_TIM17 ((uint8_t)0x04U) /* TIM17 Alternate Function mapping */
  552. #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */
  553. #define GPIO_AF4_I2C2 ((uint8_t)0x04U) /* I2C2 Alternate Function mapping */
  554. /**
  555. * @brief AF 5 selection
  556. */
  557. #define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1 Alternate Function mapping */
  558. #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2/I2S2 Alternate Function mapping */
  559. #define GPIO_AF5_SPI3 ((uint8_t)0x05U) /* SPI3/I2S3 Alternate Function mapping */
  560. #define GPIO_AF5_I2S ((uint8_t)0x05U) /* I2S Alternate Function mapping */
  561. #define GPIO_AF5_I2S2ext ((uint8_t)0x05U) /* I2S2ext Alternate Function mapping */
  562. #define GPIO_AF5_TIM8 ((uint8_t)0x05U) /* TIM8 Alternate Function mapping */
  563. #define GPIO_AF5_IR ((uint8_t)0x05U) /* IR Alternate Function mapping */
  564. #define GPIO_AF5_UART4 ((uint8_t)0x05U) /* UART4 Alternate Function mapping */
  565. #define GPIO_AF5_UART5 ((uint8_t)0x05U) /* UART5 Alternate Function mapping */
  566. #define GPIO_AF5_SPI4 ((uint8_t)0x05U) /* SPI4 Alternate Function mapping */
  567. /**
  568. * @brief AF 6 selection
  569. */
  570. #define GPIO_AF6_SPI2 ((uint8_t)0x06U) /* SPI2/I2S2 Alternate Function mapping */
  571. #define GPIO_AF6_SPI3 ((uint8_t)0x06U) /* SPI3/I2S3 Alternate Function mapping */
  572. #define GPIO_AF6_I2S3ext ((uint8_t)0x06U) /* I2S3ext Alternate Function mapping */
  573. #define GPIO_AF6_TIM1 ((uint8_t)0x06U) /* TIM1 Alternate Function mapping */
  574. #define GPIO_AF6_TIM8 ((uint8_t)0x06U) /* TIM8 Alternate Function mapping */
  575. #define GPIO_AF6_IR ((uint8_t)0x06U) /* IR Alternate Function mapping */
  576. #define GPIO_AF6_TIM20 ((uint8_t)0x06U) /* TIM20 Alternate Function mapping */
  577. /**
  578. * @brief AF 7 selection
  579. */
  580. #define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */
  581. #define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */
  582. #define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */
  583. #define GPIO_AF7_COMP3 ((uint8_t)0x07U) /* COMP3 Alternate Function mapping */
  584. #define GPIO_AF7_COMP5 ((uint8_t)0x07U) /* COMP5 Alternate Function mapping */
  585. #define GPIO_AF7_COMP6 ((uint8_t)0x07U) /* COMP6 Alternate Function mapping */
  586. #define GPIO_AF7_CAN ((uint8_t)0x07U) /* CAN Alternate Function mapping */
  587. /**
  588. * @brief AF 8 selection
  589. */
  590. #define GPIO_AF8_COMP1 ((uint8_t)0x08U) /* COMP1 Alternate Function mapping */
  591. #define GPIO_AF8_COMP2 ((uint8_t)0x08U) /* COMP2 Alternate Function mapping */
  592. #define GPIO_AF8_COMP3 ((uint8_t)0x08U) /* COMP3 Alternate Function mapping */
  593. #define GPIO_AF8_COMP4 ((uint8_t)0x08U) /* COMP4 Alternate Function mapping */
  594. #define GPIO_AF8_COMP5 ((uint8_t)0x08U) /* COMP5 Alternate Function mapping */
  595. #define GPIO_AF8_COMP6 ((uint8_t)0x08U) /* COMP6 Alternate Function mapping */
  596. #define GPIO_AF8_I2C3 ((uint8_t)0x08U) /* I2C3 Alternate Function mapping */
  597. /**
  598. * @brief AF 9 selection
  599. */
  600. #define GPIO_AF9_CAN ((uint8_t)0x09U) /* CAN Alternate Function mapping */
  601. #define GPIO_AF9_TIM1 ((uint8_t)0x09U) /* TIM1 Alternate Function mapping */
  602. #define GPIO_AF9_TIM8 ((uint8_t)0x09U) /* TIM8 Alternate Function mapping */
  603. #define GPIO_AF9_TIM15 ((uint8_t)0x09U) /* TIM15 Alternate Function mapping */
  604. /**
  605. * @brief AF 10 selection
  606. */
  607. #define GPIO_AF10_TIM2 ((uint8_t)0xAU) /* TIM2 Alternate Function mapping */
  608. #define GPIO_AF10_TIM3 ((uint8_t)0xAU) /* TIM3 Alternate Function mapping */
  609. #define GPIO_AF10_TIM4 ((uint8_t)0xAU) /* TIM4 Alternate Function mapping */
  610. #define GPIO_AF10_TIM8 ((uint8_t)0xAU) /* TIM8 Alternate Function mapping */
  611. #define GPIO_AF10_TIM17 ((uint8_t)0xAU) /* TIM17 Alternate Function mapping */
  612. /**
  613. * @brief AF 11 selection
  614. */
  615. #define GPIO_AF11_TIM1 ((uint8_t)0x0BU) /* TIM1 Alternate Function mapping */
  616. #define GPIO_AF11_TIM8 ((uint8_t)0x0BU) /* TIM8 Alternate Function mapping */
  617. /**
  618. * @brief AF 12 selection
  619. */
  620. #define GPIO_AF12_TIM1 ((uint8_t)0xCU) /* TIM1 Alternate Function mapping */
  621. #define GPIO_AF12_FMC ((uint8_t)0xCU) /* FMC Alternate Function mapping */
  622. #define GPIO_AF12_SDIO ((uint8_t)0xCU) /* SDIO Alternate Function mapping */
  623. /**
  624. * @brief AF 15 selection
  625. */
  626. #define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */
  627. #define IS_GPIO_AF(AF) (((AF) <= (uint8_t)0x0CU) || ((AF) == (uint8_t)0x0FU))
  628. /*------------------------------------------------------------------------------------------*/
  629. #endif /* STM32F398xx */
  630. #if defined (STM32F358xx)
  631. /*---------------------------------- STM32F358xx -------------------------------------------*/
  632. /**
  633. * @brief AF 0 selection
  634. */
  635. #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00U) /* RTC_50Hz Alternate Function mapping */
  636. #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */
  637. #define GPIO_AF0_TAMPER ((uint8_t)0x00U) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
  638. #define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */
  639. #define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */
  640. /**
  641. * @brief AF 1 selection
  642. */
  643. #define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */
  644. #define GPIO_AF1_TIM15 ((uint8_t)0x01U) /* TIM15 Alternate Function mapping */
  645. #define GPIO_AF1_TIM16 ((uint8_t)0x01U) /* TIM16 Alternate Function mapping */
  646. #define GPIO_AF1_TIM17 ((uint8_t)0x01U) /* TIM17 Alternate Function mapping */
  647. #define GPIO_AF1_EVENTOUT ((uint8_t)0x01U) /* EVENTOUT Alternate Function mapping */
  648. /**
  649. * @brief AF 2 selection
  650. */
  651. #define GPIO_AF2_TIM1 ((uint8_t)0x02U) /* TIM1 Alternate Function mapping */
  652. #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */
  653. #define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */
  654. #define GPIO_AF2_TIM4 ((uint8_t)0x02U) /* TIM4 Alternate Function mapping */
  655. #define GPIO_AF2_TIM8 ((uint8_t)0x02U) /* TIM8 Alternate Function mapping */
  656. #define GPIO_AF2_TIM15 ((uint8_t)0x02U) /* TIM15 Alternate Function mapping */
  657. #define GPIO_AF2_COMP1 ((uint8_t)0x02U) /* COMP1 Alternate Function mapping */
  658. /**
  659. * @brief AF 3 selection
  660. */
  661. #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */
  662. #define GPIO_AF3_TIM8 ((uint8_t)0x03U) /* TIM8 Alternate Function mapping */
  663. #define GPIO_AF3_COMP7 ((uint8_t)0x03U) /* COMP7 Alternate Function mapping */
  664. #define GPIO_AF3_TIM15 ((uint8_t)0x03U) /* TIM15 Alternate Function mapping */
  665. /**
  666. * @brief AF 4 selection
  667. */
  668. #define GPIO_AF4_TIM1 ((uint8_t)0x04U) /* TIM1 Alternate Function mapping */
  669. #define GPIO_AF4_TIM8 ((uint8_t)0x04U) /* TIM8 Alternate Function mapping */
  670. #define GPIO_AF4_TIM16 ((uint8_t)0x04U) /* TIM16 Alternate Function mapping */
  671. #define GPIO_AF4_TIM17 ((uint8_t)0x04U) /* TIM17 Alternate Function mapping */
  672. #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */
  673. #define GPIO_AF4_I2C2 ((uint8_t)0x04U) /* I2C2 Alternate Function mapping */
  674. /**
  675. * @brief AF 5 selection
  676. */
  677. #define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1/I2S1 Alternate Function mapping */
  678. #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2/I2S2 Alternate Function mapping */
  679. #define GPIO_AF5_SPI3 ((uint8_t)0x05U) /* SPI3/I2S3 Alternate Function mapping */
  680. #define GPIO_AF5_I2S ((uint8_t)0x05U) /* I2S Alternate Function mapping */
  681. #define GPIO_AF5_I2S2ext ((uint8_t)0x05U) /* I2S2ext Alternate Function mapping */
  682. #define GPIO_AF5_TIM8 ((uint8_t)0x05U) /* TIM8 Alternate Function mapping */
  683. #define GPIO_AF5_IR ((uint8_t)0x05U) /* IR Alternate Function mapping */
  684. #define GPIO_AF5_UART4 ((uint8_t)0x05U) /* UART4 Alternate Function mapping */
  685. #define GPIO_AF5_UART5 ((uint8_t)0x05U) /* UART5 Alternate Function mapping */
  686. /**
  687. * @brief AF 6 selection
  688. */
  689. #define GPIO_AF6_SPI2 ((uint8_t)0x06U) /* SPI2/I2S2 Alternate Function mapping */
  690. #define GPIO_AF6_SPI3 ((uint8_t)0x06U) /* SPI3/I2S3 Alternate Function mapping */
  691. #define GPIO_AF6_I2S3ext ((uint8_t)0x06U) /* I2S3ext Alternate Function mapping */
  692. #define GPIO_AF6_TIM1 ((uint8_t)0x06U) /* TIM1 Alternate Function mapping */
  693. #define GPIO_AF6_TIM8 ((uint8_t)0x06U) /* TIM8 Alternate Function mapping */
  694. #define GPIO_AF6_IR ((uint8_t)0x06U) /* IR Alternate Function mapping */
  695. /**
  696. * @brief AF 7 selection
  697. */
  698. #define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */
  699. #define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */
  700. #define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */
  701. #define GPIO_AF7_COMP3 ((uint8_t)0x07U) /* COMP3 Alternate Function mapping */
  702. #define GPIO_AF7_COMP5 ((uint8_t)0x07U) /* COMP5 Alternate Function mapping */
  703. #define GPIO_AF7_COMP6 ((uint8_t)0x07U) /* COMP6 Alternate Function mapping */
  704. #define GPIO_AF7_CAN ((uint8_t)0x07U) /* CAN Alternate Function mapping */
  705. /**
  706. * @brief AF 8 selection
  707. */
  708. #define GPIO_AF8_COMP1 ((uint8_t)0x08U) /* COMP1 Alternate Function mapping */
  709. #define GPIO_AF8_COMP2 ((uint8_t)0x08U) /* COMP2 Alternate Function mapping */
  710. #define GPIO_AF8_COMP3 ((uint8_t)0x08U) /* COMP3 Alternate Function mapping */
  711. #define GPIO_AF8_COMP4 ((uint8_t)0x08U) /* COMP4 Alternate Function mapping */
  712. #define GPIO_AF8_COMP5 ((uint8_t)0x08U) /* COMP5 Alternate Function mapping */
  713. #define GPIO_AF8_COMP6 ((uint8_t)0x08U) /* COMP6 Alternate Function mapping */
  714. /**
  715. * @brief AF 9 selection
  716. */
  717. #define GPIO_AF9_CAN ((uint8_t)0x09U) /* CAN Alternate Function mapping */
  718. #define GPIO_AF9_TIM1 ((uint8_t)0x09U) /* TIM1 Alternate Function mapping */
  719. #define GPIO_AF9_TIM8 ((uint8_t)0x09U) /* TIM8 Alternate Function mapping */
  720. #define GPIO_AF9_TIM15 ((uint8_t)0x09U) /* TIM15 Alternate Function mapping */
  721. /**
  722. * @brief AF 10 selection
  723. */
  724. #define GPIO_AF10_TIM2 ((uint8_t)0xAU) /* TIM2 Alternate Function mapping */
  725. #define GPIO_AF10_TIM3 ((uint8_t)0xAU) /* TIM3 Alternate Function mapping */
  726. #define GPIO_AF10_TIM4 ((uint8_t)0xAU) /* TIM4 Alternate Function mapping */
  727. #define GPIO_AF10_TIM8 ((uint8_t)0xAU) /* TIM8 Alternate Function mapping */
  728. #define GPIO_AF10_TIM17 ((uint8_t)0xAU) /* TIM17 Alternate Function mapping */
  729. /**
  730. * @brief AF 11 selection
  731. */
  732. #define GPIO_AF11_TIM1 ((uint8_t)0x0BU) /* TIM1 Alternate Function mapping */
  733. #define GPIO_AF11_TIM8 ((uint8_t)0x0BU) /* TIM8 Alternate Function mapping */
  734. /**
  735. * @brief AF 12 selection
  736. */
  737. #define GPIO_AF12_TIM1 ((uint8_t)0xCU) /* TIM1 Alternate Function mapping */
  738. /**
  739. * @brief AF 15 selection
  740. */
  741. #define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */
  742. #define IS_GPIO_AF(AF) (((AF) <= (uint8_t)0x0CU) || ((AF) == (uint8_t)0x0FU))
  743. /*------------------------------------------------------------------------------------------*/
  744. #endif /* STM32F358xx */
  745. #if defined (STM32F373xC)
  746. /*---------------------------------- STM32F373xC--------------------------------*/
  747. /**
  748. * @brief AF 0 selection
  749. */
  750. #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00U) /* RTC_50Hz Alternate Function mapping */
  751. #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */
  752. #define GPIO_AF0_TAMPER ((uint8_t)0x00U) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
  753. #define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */
  754. #define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */
  755. /**
  756. * @brief AF 1 selection
  757. */
  758. #define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */
  759. #define GPIO_AF1_TIM15 ((uint8_t)0x01U) /* TIM15 Alternate Function mapping */
  760. #define GPIO_AF1_TIM16 ((uint8_t)0x01U) /* TIM16 Alternate Function mapping */
  761. #define GPIO_AF1_TIM17 ((uint8_t)0x01U) /* TIM17 Alternate Function mapping */
  762. #define GPIO_AF1_EVENTOUT ((uint8_t)0x01U) /* EVENTOUT Alternate Function mapping */
  763. /**
  764. * @brief AF 2 selection
  765. */
  766. #define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */
  767. #define GPIO_AF2_TIM4 ((uint8_t)0x02U) /* TIM4 Alternate Function mapping */
  768. #define GPIO_AF2_TIM5 ((uint8_t)0x02U) /* TIM5 Alternate Function mapping */
  769. #define GPIO_AF2_TIM13 ((uint8_t)0x02U) /* TIM13 Alternate Function mapping */
  770. #define GPIO_AF2_TIM14 ((uint8_t)0x02U) /* TIM14 Alternate Function mapping */
  771. #define GPIO_AF2_TIM15 ((uint8_t)0x02U) /* TIM15 Alternate Function mapping */
  772. #define GPIO_AF2_TIM19 ((uint8_t)0x02U) /* TIM19 Alternate Function mapping */
  773. /**
  774. * @brief AF 3 selection
  775. */
  776. #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */
  777. /**
  778. * @brief AF 4 selection
  779. */
  780. #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */
  781. #define GPIO_AF4_I2C2 ((uint8_t)0x04U) /* I2C2 Alternate Function mapping */
  782. /**
  783. * @brief AF 5 selection
  784. */
  785. #define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1/I2S1 Alternate Function mapping */
  786. #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2/I2S2 Alternate Function mapping */
  787. #define GPIO_AF5_IR ((uint8_t)0x05U) /* IR Alternate Function mapping */
  788. /**
  789. * @brief AF 6 selection
  790. */
  791. #define GPIO_AF6_SPI1 ((uint8_t)0x06U) /* SPI1/I2S1 Alternate Function mapping */
  792. #define GPIO_AF6_SPI3 ((uint8_t)0x06U) /* SPI3/I2S3 Alternate Function mapping */
  793. #define GPIO_AF6_IR ((uint8_t)0x06U) /* IR Alternate Function mapping */
  794. #define GPIO_AF6_CEC ((uint8_t)0x06U) /* CEC Alternate Function mapping */
  795. /**
  796. * @brief AF 7 selection
  797. */
  798. #define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */
  799. #define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */
  800. #define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */
  801. #define GPIO_AF7_CAN ((uint8_t)0x07U) /* CAN Alternate Function mapping */
  802. #define GPIO_AF7_CEC ((uint8_t)0x07U) /* CEC Alternate Function mapping */
  803. /**
  804. * @brief AF 8 selection
  805. */
  806. #define GPIO_AF8_COMP1 ((uint8_t)0x08U) /* COMP1 Alternate Function mapping */
  807. #define GPIO_AF8_COMP2 ((uint8_t)0x08U) /* COMP2 Alternate Function mapping */
  808. /**
  809. * @brief AF 9 selection
  810. */
  811. #define GPIO_AF9_CAN ((uint8_t)0x09U) /* CAN Alternate Function mapping */
  812. #define GPIO_AF9_TIM12 ((uint8_t)0x09U) /* TIM12 Alternate Function mapping */
  813. #define GPIO_AF9_TIM13 ((uint8_t)0x09U) /* TIM13 Alternate Function mapping */
  814. #define GPIO_AF9_TIM14 ((uint8_t)0x09U) /* TIM14 Alternate Function mapping */
  815. #define GPIO_AF9_TIM15 ((uint8_t)0x09U) /* TIM15 Alternate Function mapping */
  816. /**
  817. * @brief AF 10 selection
  818. */
  819. #define GPIO_AF10_TIM2 ((uint8_t)0xAU) /* TIM2 Alternate Function mapping */
  820. #define GPIO_AF10_TIM3 ((uint8_t)0xAU) /* TIM3 Alternate Function mapping */
  821. #define GPIO_AF10_TIM4 ((uint8_t)0xAU) /* TIM4 Alternate Function mapping */
  822. #define GPIO_AF10_TIM12 ((uint8_t)0xAU) /* TIM12 Alternate Function mapping */
  823. #define GPIO_AF10_TIM17 ((uint8_t)0xAU) /* TIM17 Alternate Function mapping */
  824. /**
  825. * @brief AF 11 selection
  826. */
  827. #define GPIO_AF11_TIM19 ((uint8_t)0x0BU) /* TIM19 Alternate Function mapping */
  828. /**
  829. * @brief AF 14 selection
  830. */
  831. #define GPIO_AF14_USB ((uint8_t)0x0EU) /* USB Alternate Function mapping */
  832. /**
  833. * @brief AF 15 selection
  834. */
  835. #define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */
  836. #define IS_GPIO_AF(AF) (((AF) <= (uint8_t)0x0BU) || ((AF) == (uint8_t)0x0EU) || ((AF) == (uint8_t)0x0FU))
  837. /*------------------------------------------------------------------------------------------*/
  838. #endif /* STM32F373xC */
  839. #if defined (STM32F378xx)
  840. /*---------------------------------------- STM32F378xx--------------------------------------*/
  841. /**
  842. * @brief AF 0 selection
  843. */
  844. #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00U) /* RTC_50Hz Alternate Function mapping */
  845. #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */
  846. #define GPIO_AF0_TAMPER ((uint8_t)0x00U) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
  847. #define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */
  848. #define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */
  849. /**
  850. * @brief AF 1 selection
  851. */
  852. #define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */
  853. #define GPIO_AF1_TIM15 ((uint8_t)0x01U) /* TIM15 Alternate Function mapping */
  854. #define GPIO_AF1_TIM16 ((uint8_t)0x01U) /* TIM16 Alternate Function mapping */
  855. #define GPIO_AF1_TIM17 ((uint8_t)0x01U) /* TIM17 Alternate Function mapping */
  856. #define GPIO_AF1_EVENTOUT ((uint8_t)0x01U) /* EVENTOUT Alternate Function mapping */
  857. /**
  858. * @brief AF 2 selection
  859. */
  860. #define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */
  861. #define GPIO_AF2_TIM4 ((uint8_t)0x02U) /* TIM4 Alternate Function mapping */
  862. #define GPIO_AF2_TIM5 ((uint8_t)0x02U) /* TIM5 Alternate Function mapping */
  863. #define GPIO_AF2_TIM13 ((uint8_t)0x02U) /* TIM13 Alternate Function mapping */
  864. #define GPIO_AF2_TIM14 ((uint8_t)0x02U) /* TIM14 Alternate Function mapping */
  865. #define GPIO_AF2_TIM15 ((uint8_t)0x02U) /* TIM15 Alternate Function mapping */
  866. #define GPIO_AF2_TIM19 ((uint8_t)0x02U) /* TIM19 Alternate Function mapping */
  867. /**
  868. * @brief AF 3 selection
  869. */
  870. #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */
  871. /**
  872. * @brief AF 4 selection
  873. */
  874. #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */
  875. #define GPIO_AF4_I2C2 ((uint8_t)0x04U) /* I2C2 Alternate Function mapping */
  876. /**
  877. * @brief AF 5 selection
  878. */
  879. #define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1/I2S1 Alternate Function mapping */
  880. #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2/I2S2 Alternate Function mapping */
  881. #define GPIO_AF5_IR ((uint8_t)0x05U) /* IR Alternate Function mapping */
  882. /**
  883. * @brief AF 6 selection
  884. */
  885. #define GPIO_AF6_SPI1 ((uint8_t)0x06U) /* SPI1/I2S1 Alternate Function mapping */
  886. #define GPIO_AF6_SPI3 ((uint8_t)0x06U) /* SPI3/I2S3 Alternate Function mapping */
  887. #define GPIO_AF6_IR ((uint8_t)0x06U) /* IR Alternate Function mapping */
  888. #define GPIO_AF6_CEC ((uint8_t)0x06U) /* CEC Alternate Function mapping */
  889. /**
  890. * @brief AF 7 selection
  891. */
  892. #define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */
  893. #define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */
  894. #define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */
  895. #define GPIO_AF7_CAN ((uint8_t)0x07U) /* CAN Alternate Function mapping */
  896. #define GPIO_AF7_CEC ((uint8_t)0x07U) /* CEC Alternate Function mapping */
  897. /**
  898. * @brief AF 8 selection
  899. */
  900. #define GPIO_AF8_COMP1 ((uint8_t)0x08U) /* COMP1 Alternate Function mapping */
  901. #define GPIO_AF8_COMP2 ((uint8_t)0x08U) /* COMP2 Alternate Function mapping */
  902. /**
  903. * @brief AF 9 selection
  904. */
  905. #define GPIO_AF9_CAN ((uint8_t)0x09U) /* CAN Alternate Function mapping */
  906. #define GPIO_AF9_TIM12 ((uint8_t)0x09U) /* TIM12 Alternate Function mapping */
  907. #define GPIO_AF9_TIM13 ((uint8_t)0x09U) /* TIM13 Alternate Function mapping */
  908. #define GPIO_AF9_TIM14 ((uint8_t)0x09U) /* TIM14 Alternate Function mapping */
  909. #define GPIO_AF9_TIM15 ((uint8_t)0x09U) /* TIM15 Alternate Function mapping */
  910. /**
  911. * @brief AF 10 selection
  912. */
  913. #define GPIO_AF10_TIM2 ((uint8_t)0xAU) /* TIM2 Alternate Function mapping */
  914. #define GPIO_AF10_TIM3 ((uint8_t)0xAU) /* TIM3 Alternate Function mapping */
  915. #define GPIO_AF10_TIM4 ((uint8_t)0xAU) /* TIM4 Alternate Function mapping */
  916. #define GPIO_AF10_TIM12 ((uint8_t)0xAU) /* TIM12 Alternate Function mapping */
  917. #define GPIO_AF10_TIM17 ((uint8_t)0xAU) /* TIM17 Alternate Function mapping */
  918. /**
  919. * @brief AF 11 selection
  920. */
  921. #define GPIO_AF11_TIM19 ((uint8_t)0x0BU) /* TIM19 Alternate Function mapping */
  922. /**
  923. * @brief AF 15 selection
  924. */
  925. #define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */
  926. #define IS_GPIO_AF(AF) (((AF) <= (uint8_t)0x0BU) || ((AF) == (uint8_t)0x0FU))
  927. /*------------------------------------------------------------------------------------------*/
  928. #endif /* STM32F378xx */
  929. #if defined (STM32F303x8)
  930. /*---------------------------------- STM32F303x8--------------------------------*/
  931. /**
  932. * @brief AF 0 selection
  933. */
  934. #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */
  935. #define GPIO_AF0_TAMPER ((uint8_t)0x00U) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
  936. #define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */
  937. #define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */
  938. /**
  939. * @brief AF 1 selection
  940. */
  941. #define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */
  942. #define GPIO_AF1_TIM15 ((uint8_t)0x01U) /* TIM15 Alternate Function mapping */
  943. #define GPIO_AF1_TIM16 ((uint8_t)0x01U) /* TIM16 Alternate Function mapping */
  944. #define GPIO_AF1_TIM17 ((uint8_t)0x01U) /* TIM17 Alternate Function mapping */
  945. #define GPIO_AF1_EVENTOUT ((uint8_t)0x01U) /* EVENTOUT Alternate Function mapping */
  946. /**
  947. * @brief AF 2 selection
  948. */
  949. #define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */
  950. #define GPIO_AF2_TIM1 ((uint8_t)0x02U) /* TIM1 Alternate Function mapping */
  951. #define GPIO_AF2_TIM15 ((uint8_t)0x02U) /* TIM15 Alternate Function mapping */
  952. #define GPIO_AF2_TIM16 ((uint8_t)0x02U) /* TIM16 Alternate Function mapping */
  953. /**
  954. * @brief AF 3 selection
  955. */
  956. #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */
  957. /**
  958. * @brief AF 4 selection
  959. */
  960. #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */
  961. #define GPIO_AF4_TIM1 ((uint8_t)0x04U) /* TIM1 Alternate Function mapping */
  962. /**
  963. * @brief AF 5 selection
  964. */
  965. #define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1 Alternate Function mapping */
  966. #define GPIO_AF5_IR ((uint8_t)0x05U) /* IR Alternate Function mapping */
  967. /**
  968. * @brief AF 6 selection
  969. */
  970. #define GPIO_AF6_TIM1 ((uint8_t)0x06U) /* TIM1 Alternate Function mapping */
  971. #define GPIO_AF6_IR ((uint8_t)0x06U) /* IR Alternate Function mapping */
  972. /**
  973. * @brief AF 7 selection
  974. */
  975. #define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */
  976. #define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */
  977. #define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */
  978. #define GPIO_AF7_GPCOMP6 ((uint8_t)0x07U) /* GPCOMP6 Alternate Function mapping */
  979. /**
  980. * @brief AF 8 selection
  981. */
  982. #define GPIO_AF8_GPCOMP2 ((uint8_t)0x08U) /* GPCOMP2 Alternate Function mapping */
  983. #define GPIO_AF8_GPCOMP4 ((uint8_t)0x08U) /* GPCOMP4 Alternate Function mapping */
  984. #define GPIO_AF8_GPCOMP6 ((uint8_t)0x08U) /* GPCOMP6 Alternate Function mapping */
  985. /**
  986. * @brief AF 9 selection
  987. */
  988. #define GPIO_AF9_CAN ((uint8_t)0x09U) /* CAN Alternate Function mapping */
  989. #define GPIO_AF9_TIM1 ((uint8_t)0x09U) /* TIM1 Alternate Function mapping */
  990. #define GPIO_AF9_TIM15 ((uint8_t)0x09U) /* TIM15 Alternate Function mapping */
  991. /**
  992. * @brief AF 10 selection
  993. */
  994. #define GPIO_AF10_TIM2 ((uint8_t)0xAU) /* TIM2 Alternate Function mapping */
  995. #define GPIO_AF10_TIM3 ((uint8_t)0xAU) /* TIM3 Alternate Function mapping */
  996. #define GPIO_AF10_TIM17 ((uint8_t)0xAU) /* TIM17 Alternate Function mapping */
  997. /**
  998. * @brief AF 11 selection
  999. */
  1000. #define GPIO_AF11_TIM1 ((uint8_t)0x0BU) /* TIM1 Alternate Function mapping */
  1001. /**
  1002. * @brief AF 12 selection
  1003. */
  1004. #define GPIO_AF12_TIM1 ((uint8_t)0x0CU) /* TIM1 Alternate Function mapping */
  1005. /**
  1006. * @brief AF 13 selection
  1007. */
  1008. #define GPIO_AF13_OPAMP2 ((uint8_t)0x0DU) /* OPAMP2 Alternate Function mapping */
  1009. /**
  1010. * @brief AF 15 selection
  1011. */
  1012. #define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */
  1013. #define IS_GPIO_AF(AF) (((AF) <= (uint8_t)0x0DU) || ((AF) == (uint8_t)0x0FU))
  1014. /*------------------------------------------------------------------------------------------*/
  1015. #endif /* STM32F303x8 */
  1016. #if defined (STM32F334x8) || defined (STM32F328xx)
  1017. /*---------------------------------- STM32F334x8/STM32F328xx -------------------------------*/
  1018. /**
  1019. * @brief AF 0 selection
  1020. */
  1021. #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */
  1022. #define GPIO_AF0_TAMPER ((uint8_t)0x00U) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
  1023. #define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */
  1024. #define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */
  1025. /**
  1026. * @brief AF 1 selection
  1027. */
  1028. #define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */
  1029. #define GPIO_AF1_TIM15 ((uint8_t)0x01U) /* TIM15 Alternate Function mapping */
  1030. #define GPIO_AF1_TIM16 ((uint8_t)0x01U) /* TIM16 Alternate Function mapping */
  1031. #define GPIO_AF1_TIM17 ((uint8_t)0x01U) /* TIM17 Alternate Function mapping */
  1032. #define GPIO_AF1_EVENTOUT ((uint8_t)0x01U) /* EVENTOUT Alternate Function mapping */
  1033. /**
  1034. * @brief AF 2 selection
  1035. */
  1036. #define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */
  1037. #define GPIO_AF2_TIM1 ((uint8_t)0x02U) /* TIM1 Alternate Function mapping */
  1038. #define GPIO_AF2_TIM15 ((uint8_t)0x02U) /* TIM15 Alternate Function mapping */
  1039. #define GPIO_AF2_TIM16 ((uint8_t)0x02U) /* TIM16 Alternate Function mapping */
  1040. /**
  1041. * @brief AF 3 selection
  1042. */
  1043. #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */
  1044. #define GPIO_AF3_HRTIM1 ((uint8_t)0x03U) /* HRTIM1 Alternate Function mapping */
  1045. /**
  1046. * @brief AF 4 selection
  1047. */
  1048. #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */
  1049. #define GPIO_AF4_TIM1 ((uint8_t)0x04U) /* TIM1 Alternate Function mapping */
  1050. /**
  1051. * @brief AF 5 selection
  1052. */
  1053. #define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1 Alternate Function mapping */
  1054. #define GPIO_AF5_IR ((uint8_t)0x05U) /* IR Alternate Function mapping */
  1055. /**
  1056. * @brief AF 6 selection
  1057. */
  1058. #define GPIO_AF6_TIM1 ((uint8_t)0x06U) /* TIM1 Alternate Function mapping */
  1059. #define GPIO_AF6_IR ((uint8_t)0x06U) /* IR Alternate Function mapping */
  1060. /**
  1061. * @brief AF 7 selection
  1062. */
  1063. #define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */
  1064. #define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */
  1065. #define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */
  1066. #define GPIO_AF7_GPCOMP6 ((uint8_t)0x07U) /* GPCOMP6 Alternate Function mapping */
  1067. /**
  1068. * @brief AF 8 selection
  1069. */
  1070. #define GPIO_AF8_GPCOMP2 ((uint8_t)0x08U) /* GPCOMP2 Alternate Function mapping */
  1071. #define GPIO_AF8_GPCOMP4 ((uint8_t)0x08U) /* GPCOMP4 Alternate Function mapping */
  1072. #define GPIO_AF8_GPCOMP6 ((uint8_t)0x08U) /* GPCOMP6 Alternate Function mapping */
  1073. /**
  1074. * @brief AF 9 selection
  1075. */
  1076. #define GPIO_AF9_CAN ((uint8_t)0x09U) /* CAN Alternate Function mapping */
  1077. #define GPIO_AF9_TIM1 ((uint8_t)0x09U) /* TIM1 Alternate Function mapping */
  1078. #define GPIO_AF9_TIM15 ((uint8_t)0x09U) /* TIM15 Alternate Function mapping */
  1079. /**
  1080. * @brief AF 10 selection
  1081. */
  1082. #define GPIO_AF10_TIM2 ((uint8_t)0xAU) /* TIM2 Alternate Function mapping */
  1083. #define GPIO_AF10_TIM3 ((uint8_t)0xAU) /* TIM3 Alternate Function mapping */
  1084. #define GPIO_AF10_TIM17 ((uint8_t)0xAU) /* TIM17 Alternate Function mapping */
  1085. /**
  1086. * @brief AF 11 selection
  1087. */
  1088. #define GPIO_AF11_TIM1 ((uint8_t)0x0BU) /* TIM1 Alternate Function mapping */
  1089. /**
  1090. * @brief AF 12 selection
  1091. */
  1092. #define GPIO_AF12_TIM1 ((uint8_t)0x0CU) /* TIM1 Alternate Function mapping */
  1093. #define GPIO_AF12_HRTIM1 ((uint8_t)0x0CU) /* HRTIM1 Alternate Function mapping */
  1094. /**
  1095. * @brief AF 13 selection
  1096. */
  1097. #define GPIO_AF13_OPAMP2 ((uint8_t)0x0DU) /* OPAMP2 Alternate Function mapping */
  1098. #define GPIO_AF13_HRTIM1 ((uint8_t)0x0DU) /* HRTIM1 Alternate Function mapping */
  1099. /**
  1100. * @brief AF 15 selection
  1101. */
  1102. #define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */
  1103. #define IS_GPIO_AF(AF) (((AF) <= (uint8_t)0x0DU) || ((AF) == (uint8_t)0x0FU))
  1104. /*------------------------------------------------------------------------------------------*/
  1105. #endif /* STM32F334x8 || STM32F328xx */
  1106. #if defined (STM32F301x8) || defined (STM32F318xx)
  1107. /*---------------------------------- STM32F301x8 / STM32F318xx ------------------------------------------*/
  1108. /**
  1109. * @brief AF 0 selection
  1110. */
  1111. #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */
  1112. #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00U) /* RTC Alternate Function mapping */
  1113. #define GPIO_AF0_TAMPER ((uint8_t)0x00U) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
  1114. #define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */
  1115. #define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */
  1116. /**
  1117. * @brief AF 1 selection
  1118. */
  1119. #define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */
  1120. #define GPIO_AF1_TIM15 ((uint8_t)0x01U) /* TIM15 Alternate Function mapping */
  1121. #define GPIO_AF1_TIM16 ((uint8_t)0x01U) /* TIM16 Alternate Function mapping */
  1122. #define GPIO_AF1_TIM17 ((uint8_t)0x01U) /* TIM17 Alternate Function mapping */
  1123. #define GPIO_AF1_EVENTOUT ((uint8_t)0x01U) /* EVENTOUT Alternate Function mapping */
  1124. /**
  1125. * @brief AF 2 selection
  1126. */
  1127. #define GPIO_AF2_I2C3 ((uint8_t)0x02U) /* I2C3 Alternate Function mapping */
  1128. #define GPIO_AF2_TIM1 ((uint8_t)0x02U) /* TIM1 Alternate Function mapping */
  1129. #define GPIO_AF2_TIM15 ((uint8_t)0x02U) /* TIM15 Alternate Function mapping */
  1130. #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */
  1131. /**
  1132. * @brief AF 3 selection
  1133. */
  1134. #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */
  1135. #define GPIO_AF3_I2C3 ((uint8_t)0x03U) /* I2C3 Alternate Function mapping */
  1136. #define GPIO_AF3_TIM15 ((uint8_t)0x03U) /* TIM15 Alternate Function mapping */
  1137. /**
  1138. * @brief AF 4 selection
  1139. */
  1140. #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */
  1141. #define GPIO_AF4_I2C2 ((uint8_t)0x04U) /* I2C2 Alternate Function mapping */
  1142. #define GPIO_AF4_TIM1 ((uint8_t)0x04U) /* TIM1 Alternate Function mapping */
  1143. #define GPIO_AF4_TIM16 ((uint8_t)0x04U) /* TIM16 Alternate Function mapping */
  1144. #define GPIO_AF4_TIM17 ((uint8_t)0x04U) /* TIM17 Alternate Function mapping */
  1145. /**
  1146. * @brief AF 5 selection
  1147. */
  1148. #define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1 Alternate Function mapping */
  1149. #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2/I2S2 Alternate Function mapping */
  1150. #define GPIO_AF5_SPI3 ((uint8_t)0x05U) /* SPI3/I2S3 Alternate Function mapping */
  1151. #define GPIO_AF5_IR ((uint8_t)0x05U) /* IR Alternate Function mapping */
  1152. /**
  1153. * @brief AF 6 selection
  1154. */
  1155. #define GPIO_AF6_TIM1 ((uint8_t)0x06U) /* TIM1 Alternate Function mapping */
  1156. #define GPIO_AF6_IR ((uint8_t)0x06U) /* IR Alternate Function mapping */
  1157. #define GPIO_AF6_SPI2 ((uint8_t)0x06U) /* SPI2/I2S2 Alternate Function mapping */
  1158. #define GPIO_AF6_SPI3 ((uint8_t)0x06U) /* SPI3/I2S3 Alternate Function mapping */
  1159. /**
  1160. * @brief AF 7 selection
  1161. */
  1162. #define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */
  1163. #define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */
  1164. #define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */
  1165. #define GPIO_AF7_GPCOMP6 ((uint8_t)0x07U) /* GPCOMP6 Alternate Function mapping */
  1166. /**
  1167. * @brief AF 8 selection
  1168. */
  1169. #define GPIO_AF8_I2C3 ((uint8_t)0x08U) /* I2C3 Alternate Function mapping */
  1170. #define GPIO_AF8_GPCOMP2 ((uint8_t)0x08U) /* GPCOMP2 Alternate Function mapping */
  1171. #define GPIO_AF8_GPCOMP4 ((uint8_t)0x08U) /* GPCOMP4 Alternate Function mapping */
  1172. #define GPIO_AF8_GPCOMP6 ((uint8_t)0x08U) /* GPCOMP6 Alternate Function mapping */
  1173. /**
  1174. * @brief AF 9 selection
  1175. */
  1176. #define GPIO_AF9_TIM1 ((uint8_t)0x09U) /* TIM1 Alternate Function mapping */
  1177. #define GPIO_AF9_TIM15 ((uint8_t)0x09U) /* TIM15 Alternate Function mapping */
  1178. /**
  1179. * @brief AF 10 selection
  1180. */
  1181. #define GPIO_AF10_TIM2 ((uint8_t)0xAU) /* TIM2 Alternate Function mapping */
  1182. #define GPIO_AF10_TIM17 ((uint8_t)0xAU) /* TIM17 Alternate Function mapping */
  1183. /**
  1184. * @brief AF 11 selection
  1185. */
  1186. #define GPIO_AF11_TIM1 ((uint8_t)0x0BU) /* TIM1 Alternate Function mapping */
  1187. /**
  1188. * @brief AF 12 selection
  1189. */
  1190. #define GPIO_AF12_TIM1 ((uint8_t)0x0CU) /* TIM1 Alternate Function mapping */
  1191. /**
  1192. * @brief AF 15 selection
  1193. */
  1194. #define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */
  1195. #define IS_GPIO_AF(AF) (((AF) <= (uint8_t)0x0CU) || ((AF) == (uint8_t)0x0FU))
  1196. /*------------------------------------------------------------------------------------------*/
  1197. #endif /* STM32F301x8 || STM32F318xx */
  1198. #if defined (STM32F302x8)
  1199. /*---------------------------------- STM32F302x8------------------------------------------*/
  1200. /**
  1201. * @brief AF 0 selection
  1202. */
  1203. #define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */
  1204. #define GPIO_AF0_RTC_50Hz ((uint8_t)0x00U) /* RTC Alternate Function mapping */
  1205. #define GPIO_AF0_TAMPER ((uint8_t)0x00U) /* TAMPER (TAMPER_1 and TAMPER_2) Alternate Function mapping */
  1206. #define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */
  1207. #define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */
  1208. /**
  1209. * @brief AF 1 selection
  1210. */
  1211. #define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */
  1212. #define GPIO_AF1_TIM15 ((uint8_t)0x01U) /* TIM15 Alternate Function mapping */
  1213. #define GPIO_AF1_TIM16 ((uint8_t)0x01U) /* TIM16 Alternate Function mapping */
  1214. #define GPIO_AF1_TIM17 ((uint8_t)0x01U) /* TIM17 Alternate Function mapping */
  1215. #define GPIO_AF1_EVENTOUT ((uint8_t)0x01U) /* EVENTOUT Alternate Function mapping */
  1216. /**
  1217. * @brief AF 2 selection
  1218. */
  1219. #define GPIO_AF2_I2C3 ((uint8_t)0x02U) /* I2C3 Alternate Function mapping */
  1220. #define GPIO_AF2_TIM1 ((uint8_t)0x02U) /* TIM1 Alternate Function mapping */
  1221. #define GPIO_AF2_TIM15 ((uint8_t)0x02U) /* TIM15 Alternate Function mapping */
  1222. #define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */
  1223. /**
  1224. * @brief AF 3 selection
  1225. */
  1226. #define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */
  1227. #define GPIO_AF3_I2C3 ((uint8_t)0x03U) /* I2C3 Alternate Function mapping */
  1228. #define GPIO_AF3_TIM15 ((uint8_t)0x03U) /* TIM15 Alternate Function mapping */
  1229. /**
  1230. * @brief AF 4 selection
  1231. */
  1232. #define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */
  1233. #define GPIO_AF4_I2C2 ((uint8_t)0x04U) /* I2C2 Alternate Function mapping */
  1234. #define GPIO_AF4_TIM1 ((uint8_t)0x04U) /* TIM1 Alternate Function mapping */
  1235. #define GPIO_AF4_TIM16 ((uint8_t)0x04U) /* TIM16 Alternate Function mapping */
  1236. #define GPIO_AF4_TIM17 ((uint8_t)0x04U) /* TIM17 Alternate Function mapping */
  1237. /**
  1238. * @brief AF 5 selection
  1239. */
  1240. #define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1 Alternate Function mapping */
  1241. #define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2/I2S2 Alternate Function mapping */
  1242. #define GPIO_AF5_SPI3 ((uint8_t)0x05U) /* SPI3/I2S3 Alternate Function mapping */
  1243. #define GPIO_AF5_IR ((uint8_t)0x05U) /* IR Alternate Function mapping */
  1244. /**
  1245. * @brief AF 6 selection
  1246. */
  1247. #define GPIO_AF6_TIM1 ((uint8_t)0x06U) /* TIM1 Alternate Function mapping */
  1248. #define GPIO_AF6_IR ((uint8_t)0x06U) /* IR Alternate Function mapping */
  1249. #define GPIO_AF6_SPI2 ((uint8_t)0x06U) /* SPI2/I2S2 Alternate Function mapping */
  1250. #define GPIO_AF6_SPI3 ((uint8_t)0x06U) /* SPI3/I2S3 Alternate Function mapping */
  1251. /**
  1252. * @brief AF 7 selection
  1253. */
  1254. #define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */
  1255. #define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */
  1256. #define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */
  1257. #define GPIO_AF7_GPCOMP6 ((uint8_t)0x07U) /* GPCOMP6 Alternate Function mapping */
  1258. #define GPIO_AF7_CAN ((uint8_t)0x07U) /* CAN Alternate Function mapping */
  1259. /**
  1260. * @brief AF 8 selection
  1261. */
  1262. #define GPIO_AF8_I2C3 ((uint8_t)0x08U) /* I2C3 Alternate Function mapping */
  1263. #define GPIO_AF8_GPCOMP2 ((uint8_t)0x08U) /* GPCOMP2 Alternate Function mapping */
  1264. #define GPIO_AF8_GPCOMP4 ((uint8_t)0x08U) /* GPCOMP4 Alternate Function mapping */
  1265. #define GPIO_AF8_GPCOMP6 ((uint8_t)0x08U) /* GPCOMP6 Alternate Function mapping */
  1266. /**
  1267. * @brief AF 9 selection
  1268. */
  1269. #define GPIO_AF9_TIM1 ((uint8_t)0x09U) /* TIM1 Alternate Function mapping */
  1270. #define GPIO_AF9_TIM15 ((uint8_t)0x09U) /* TIM15 Alternate Function mapping */
  1271. #define GPIO_AF9_CAN ((uint8_t)0x09U) /* CAN Alternate Function mapping */
  1272. /**
  1273. * @brief AF 10 selection
  1274. */
  1275. #define GPIO_AF10_TIM2 ((uint8_t)0xAU) /* TIM2 Alternate Function mapping */
  1276. #define GPIO_AF10_TIM17 ((uint8_t)0xAU) /* TIM17 Alternate Function mapping */
  1277. /**
  1278. * @brief AF 11 selection
  1279. */
  1280. #define GPIO_AF11_TIM1 ((uint8_t)0x0BU) /* TIM1 Alternate Function mapping */
  1281. /**
  1282. * @brief AF 12 selection
  1283. */
  1284. #define GPIO_AF12_TIM1 ((uint8_t)0x0CU) /* TIM1 Alternate Function mapping */
  1285. /**
  1286. * @brief AF 15 selection
  1287. */
  1288. #define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */
  1289. #define IS_GPIO_AF(AF) (((AF) <= (uint8_t)0x0CU) || ((AF) == (uint8_t)0x0FU))
  1290. /*------------------------------------------------------------------------------------------*/
  1291. #endif /* STM32F302x8 */
  1292. /**
  1293. * @}
  1294. */
  1295. /**
  1296. * @}
  1297. */
  1298. /* Exported macro ------------------------------------------------------------*/
  1299. /** @defgroup GPIOEx_Exported_Macros GPIOEx Exported Macros
  1300. * @{
  1301. */
  1302. /** @defgroup GPIOEx_Get_Port_Index GPIOEx_Get Port Index
  1303. * @{
  1304. */
  1305. #if defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
  1306. defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
  1307. #define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\
  1308. ((__GPIOx__) == (GPIOB))? 1U :\
  1309. ((__GPIOx__) == (GPIOC))? 2U :\
  1310. ((__GPIOx__) == (GPIOD))? 3U : 5U)
  1311. #endif /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
  1312. /* STM32F301x8 || STM32F302x8 || STM32F318xx */
  1313. #if defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
  1314. defined(STM32F373xC) || defined(STM32F378xx)
  1315. #define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\
  1316. ((__GPIOx__) == (GPIOB))? 1U :\
  1317. ((__GPIOx__) == (GPIOC))? 2U :\
  1318. ((__GPIOx__) == (GPIOD))? 3U :\
  1319. ((__GPIOx__) == (GPIOE))? 4U : 5U)
  1320. #endif /* STM32F302xC || STM32F303xC || STM32F358xx || */
  1321. /* STM32F373xC || STM32F378xx */
  1322. #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx)
  1323. #define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\
  1324. ((__GPIOx__) == (GPIOB))? 1U :\
  1325. ((__GPIOx__) == (GPIOC))? 2U :\
  1326. ((__GPIOx__) == (GPIOD))? 3U :\
  1327. ((__GPIOx__) == (GPIOE))? 4U :\
  1328. ((__GPIOx__) == (GPIOF))? 5U :\
  1329. ((__GPIOx__) == (GPIOG))? 6U : 7U)
  1330. #endif /* STM32F302xE || STM32F303xE || STM32F398xx */
  1331. /**
  1332. * @}
  1333. */
  1334. /**
  1335. * @}
  1336. */
  1337. /* Exported functions --------------------------------------------------------*/
  1338. /**
  1339. * @}
  1340. */
  1341. /**
  1342. * @}
  1343. */
  1344. #ifdef __cplusplus
  1345. }
  1346. #endif
  1347. #endif /* __STM32F3xx_HAL_GPIO_EX_H */