+#if defined (ARM_STM32) // STM32\r
+# define _CONCAT(a,b) a##b\r
+# define CONCAT(a,b) _CONCAT(a,b)\r
+# define IRSND_PORT CONCAT(GPIO, IRSND_PORT_LETTER)\r
+# if defined (ARM_STM32L1XX)\r
+# define IRSND_PORT_RCC CONCAT(RCC_AHBPeriph_GPIO, IRSND_PORT_LETTER)\r
+# define IRSND_GPIO_AF CONCAT(GPIO_AF_TIM, IRSND_TIMER_NUMBER)\r
+# elif defined (ARM_STM32F10X)\r
+# define IRSND_PORT_RCC CONCAT(RCC_APB2Periph_GPIO, IRSND_PORT_LETTER)\r
+# elif defined (ARM_STM32F4XX)\r
+# define IRSND_PORT_RCC CONCAT(RCC_AHB1Periph_GPIO, IRSND_PORT_LETTER)\r
+# define IRSND_GPIO_AF CONCAT(GPIO_AF_TIM, IRSND_TIMER_NUMBER)\r
+# endif\r
+# define IRSND_BIT CONCAT(GPIO_Pin_, IRSND_BIT_NUMBER)\r
+# define IRSND_TIMER CONCAT(TIM, IRSND_TIMER_NUMBER)\r
+# define IRSND_TIMER_CHANNEL CONCAT(TIM_Channel_, IRSND_TIMER_CHANNEL_NUMBER)\r
+# if ((IRSND_TIMER_NUMBER >= 2) && (IRSND_TIMER_NUMBER <= 5)) || ((IRSND_TIMER_NUMBER >= 12) && (IRSND_TIMER_NUMBER <= 14))\r
+# define IRSND_TIMER_RCC CONCAT(RCC_APB1Periph_TIM, IRSND_TIMER_NUMBER)\r
+# elif (IRSND_TIMER_NUMBER == 1) || ((IRSND_TIMER_NUMBER >= 8) && (IRSND_TIMER_NUMBER <= 11))\r
+# define IRSND_TIMER_RCC CONCAT(RCC_APB2Periph_TIM, IRSND_TIMER_NUMBER)\r
+# else\r
+# error IRSND_TIMER_NUMBER not valid.\r
+# endif\r
+# ifndef USE_STDPERIPH_DRIVER\r
+# warning The STM32 port of IRSND uses the ST standard peripheral drivers which are not enabled in your build configuration.\r
+# endif\r