stm32f429zi discovery ai co tai lieu ve con nay k ạ

The Kid

Kỹ sư
#3
mình không có kiến thức chuyên sâu về C, lại đang tìm hiểu con stm32f4 và đang làm theo bài mẫu về UART. Mình thấy có cái hàm điều khiển cho phép ngắt thu UART là
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size). Theo hướng dẫn thì mình biết được đây là hàm cho phép ngắt thu hoạt động, và khi ngắt được kích hoạt thì dữ liệu thu sẽ được chuyển vào một biến do con trỏ pData trỏ đến.
Mình xem nội dung của hàm này


Mã:
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
{
  /* Check that a Rx process is not already ongoing */
  if(huart->RxState == HAL_UART_STATE_READY)
  {
    if((pData == NULL ) || (Size == 0))
    {
      return HAL_ERROR;
    }
    
    /* Process Locked */
    __HAL_LOCK(huart);
    
    huart->pRxBuffPtr = pData;
    huart->RxXferSize = Size;
    huart->RxXferCount = Size;
    
    huart->ErrorCode = HAL_UART_ERROR_NONE;
    huart->RxState = HAL_UART_STATE_BUSY_RX;
    
    /* Process Unlocked */
    __HAL_UNLOCK(huart);
        
    /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */
    SET_BIT(huart->Instance->CR3, USART_CR3_EIE);

    /* Enable the UART Parity Error and Data Register not empty Interrupts */
    SET_BIT(huart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE);
    
    return HAL_OK;
  }
  else
  {
    return HAL_BUSY;
  }
}
Quan sát dòng lệnh
huart->pRxBuffPtr = pData;

Vậy mình hiểu rằng khi thu được dữ liệu, UART sẽ chuyển nội dung dữ liệu đến biến do con trỏ *pRxBuffPtr của cấu trúc điều khiển UART_HandleTypedef trỏ đến có đúng không ạ. và muốn lấy được dữ liệu UART thu được vào 1 biến, chỉ cần gán địa chỉ của biến đó cho con trỏ này là được phải không?
Mình hạn chế về khả năng lập trình, đừng ném đá nhé các bác
 

Quảng cáo Google