cubeIDE 에서 설정할 때 기본으로 잡혀있는 핀이 있는데
그게 아닌 다른 것을 설정하려면 alternative function 으로 지정해서 pin mux 설정이 되어야 한다.
CubeIDE 에서는 ioc 파일 열어 gui 에서 대충~ 핀 설정해주고 기능 enable 시키면 알아서 매핑되어 생성된다.
[링크 : https://m.blog.naver.com/harkjael/222315747541]
 
해당 alt func는
_AF_ 라는 접두를 붙여서 msp 소스에 구현된다.
  else if(huart->Instance==USART1)   {   /* USER CODE BEGIN USART1_MspInit 0 */
    /* USER CODE END USART1_MspInit 0 */     /* Peripheral clock enable */     __HAL_RCC_USART1_CLK_ENABLE();
      __HAL_RCC_GPIOB_CLK_ENABLE();     /**USART1 GPIO Configuration     PB14     ------> USART1_TX     PB15     ------> USART1_RX     */     GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15;     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;     GPIO_InitStruct.Pull = GPIO_NOPULL;     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;     GPIO_InitStruct.Alternate = GPIO_AF4_USART1;     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
    /* USER CODE BEGIN USART1_MspInit 1 */
    /* USER CODE END USART1_MspInit 1 */   }
  ...
      GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_5|GPIO_PIN_6;     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;     GPIO_InitStruct.Pull = GPIO_NOPULL;     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;     GPIO_InitStruct.Alternate = GPIO_AF5_SPI4;     HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); | 
 
stm32h7xx_hal_gpio_ex.h
#define GPIO_AF5_SPI1          ((uint8_t)0x05)  /* SPI1 Alternate Function mapping   */ #define GPIO_AF5_SPI2          ((uint8_t)0x05)  /* SPI2 Alternate Function mapping   */ #define GPIO_AF5_SPI3          ((uint8_t)0x05)  /* SPI3 Alternate Function mapping   */ #define GPIO_AF5_SPI4          ((uint8_t)0x05)  /* SPI4 Alternate Function mapping   */ #define GPIO_AF5_SPI5          ((uint8_t)0x05)  /* SPI5 Alternate Function mapping   */ #define GPIO_AF5_SPI6          ((uint8_t)0x05)  /* SPI6 Alternate Function mapping   */ #define GPIO_AF5_CEC           ((uint8_t)0x05)  /* CEC  Alternate Function mapping   */
  #define GPIO_AF4_I2C1          ((uint8_t)0x04)  /* I2C1 Alternate Function mapping   */ #define GPIO_AF4_I2C2          ((uint8_t)0x04)  /* I2C2 Alternate Function mapping   */ #define GPIO_AF4_I2C3          ((uint8_t)0x04)  /* I2C3 Alternate Function mapping   */ #define GPIO_AF4_I2C4          ((uint8_t)0x04)  /* I2C4 Alternate Function mapping   */ #if defined(I2C5) #define GPIO_AF4_I2C5          ((uint8_t)0x04)  /* I2C5 Alternate Function mapping   */ #endif /* I2C5*/ #define GPIO_AF4_TIM15         ((uint8_t)0x04)  /* TIM15 Alternate Function mapping  */ #define GPIO_AF4_CEC           ((uint8_t)0x04)  /* CEC Alternate Function mapping    */ #define GPIO_AF4_LPTIM2        ((uint8_t)0x04)  /* LPTIM2 Alternate Function mapping */ #define GPIO_AF4_USART1        ((uint8_t)0x04)  /* USART1 Alternate Function mapping */ #if defined(USART10) #define GPIO_AF4_USART10       ((uint8_t)0x04)  /* USART10 Alternate Function mapping : available on STM32H72xxx/STM32H73xxx */ #endif /*USART10*/ #define GPIO_AF4_DFSDM1        ((uint8_t)0x04)  /* DFSDM  Alternate Function mapping */ #if defined(DFSDM2_BASE) #define GPIO_AF4_DFSDM2        ((uint8_t)0x04)  /* DFSDM2 Alternate Function mapping */ #endif /* DFSDM2_BASE */ #define GPIO_AF4_DCMI          ((uint8_t)0x04)   /* DCMI Alternate Function mapping : available on STM32H7A3xxx/STM32H7B3xxx/STM32H7B0xxx and STM32H72xxx/STM32H73xxx */ #if defined(PSSI) #define GPIO_AF4_PSSI          ((uint8_t)0x04)  /* PSSI Alternate Function mapping   */ #endif /* PSSI */ #if defined(OCTOSPIM) #define GPIO_AF4_OCTOSPIM_P1   ((uint8_t)0x04)  /* OCTOSPI Manager Port 1 Alternate Function mapping  : available on STM32H72xxx/STM32H73xxx */ #endif /* OCTOSPIM */ | 
stm32h7xx_hal_msp.c 에서 핀 설정이 변경되는데, 파일 이름의 msp는 mcu 지원 패키지의 약자랜다.
msp - mcu support package
[링크 : https://community.st.com/t5/stm32cubemx-mcus/hal-peripheral-msp-init-why-does-stm32cubeide-generated-code-not/td-p/219207]