[STM32]CubeIDE USE_HAL_UART_REGISTER_CALLBACK 설정 법

2023. 5. 17. 20:33개발로그/STM32

반응형

개요

USART6를 DMA로 설정하고 Rx/TX Callback을 등록하려고 하는데, Callback 함수를 등록하기 위한 TxCpltCallback, RxEventCallback 멤버가 없다는 에러가 발생했다.

 

void MX_USART6_UART_Init(void)
{

  /* USER CODE BEGIN USART6_Init 0 */

  /* USER CODE END USART6_Init 0 */

  /* USER CODE BEGIN USART6_Init 1 */

  /* USER CODE END USART6_Init 1 */
  huart6.Instance = USART6;
  huart6.Init.BaudRate = 9600;
  huart6.Init.WordLength = UART_WORDLENGTH_8B;
  huart6.Init.StopBits = UART_STOPBITS_1;
  huart6.Init.Parity = UART_PARITY_NONE;
  huart6.Init.Mode = UART_MODE_TX_RX;
  huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart6.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart6) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN USART6_Init 2 */

  HAL_UARTEx_ReceiveToIdle_DMA(&huart6, UART6_DMA_RX_BUFF, DEFAULT_UART_DMA_RX_BUFFER_SIZE);
  __HAL_UART_ENABLE_IT(&huart6, UART_IT_IDLE);
   huart6.TxCpltCallback = HAL_UART6_TxCpltCallback;
   huart6.RxEventCallback = HAL_UART6_RxEventCallback;//register uart1 rx event callback.

  /* USER CODE END USART6_Init 2 */

}

 

error: 'UART_HandleTypeDef' {aka 'struct __UART_HandleTypeDef'} has no member named 'TxCpltCallback'
error: 'UART_HandleTypeDef' {aka 'struct __UART_HandleTypeDef'} has no member named 'RxEventCallback'

 

해결 방법

 

아래 그림과 같이 Advanced Settings - Project Manager - Register CallBack - UART and USART를 Enable로 변경하면 된다.

 

반응형

'개발로그 > STM32' 카테고리의 다른 글

[STM32] UART DMA 이슈  (0) 2023.05.23
[STM32] UART Baudrate Change 기능 구현  (0) 2023.05.16
[STM32] HAL과 LL 라이브러리 차이  (0) 2023.05.15