1. Uart RX/TX port를 설정한다. (PD9 > Uart3 Rx / PD8 > Uart3 Tx)
2. UART3 Mode and Configuration 설정
3. Uart Parameter 설정
4. 저장하면 Uart 속성 설정 관련하여 Code Generate되는 것을 확인 할 수 있다.
main.c
static void MX_USART3_UART_Init(void)
{
...
huart3.Instance = USART3;
huart3.Init.BaudRate = 115200;
huart3.Init.WordLength = UART_WORDLENGTH_8B;
huart3.Init.StopBits = UART_STOPBITS_1;
huart3.Init.Parity = UART_PARITY_NONE;
huart3.Init.Mode = UART_MODE_TX_RX;
huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart3.Init.OverSampling = UART_OVERSAMPLING_16;
...
}
5. HAL_UART_Transmit 사용하여 Uart로 Data를 전송 하고 PC Terminal 프로그램으로 보낸 Data를 확인할 수 있다.
HAL_UART_Transmit(&huart3, "UART4 SEND TEST\r\n", 20, 20);
6. HAL_UART_RxCpltCallback함수를 재정의하여 Uart receive interrupt를 확인 할 수 있으며
HAL_UART_Receive_IT를 이용하여 UART로 받은 데이터를 확인 할 수 있다.
초기화 코드에 HAL_UART_Receive_IT(&huart3, (uint8_t*)&uart3_data, 1);를 추가한다.
이 후에는 Uart로 Data가 들어올때마다 interrupt가 발생하여 HAL_UART_RxCpltCallback함수가 호출된다.
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART3)
{
HAL_UART_Receive_IT(&huart3, (uint8_t*)&uart3_data, 1);
}
}
[STM] TIM7(Timer) 타이머 인터럽트 (0) | 2022.12.23 |
---|---|
[STM32]8bit parallel-in/serial-out shift registers (0) | 2022.12.12 |
[STM32]8bit Serial-in/Parallel-out Shift register Control (0) | 2022.12.12 |
[STM32]GPIO_Output/GPIO_Input/GPIO_EXTI & Systick (0) | 2022.12.09 |
[STM32]IDE Project 생성하기 (0) | 2022.12.08 |