티스토리 뷰
10. UART IT(UART Interrupt)
-이번 장은 UART Interrupt에 대해 배운다
-9장은 수신시 일정한 시간을 대기, 데이터가 다 채워질 때까지 Recive함수에서 대기를
하고 있는다 하지만 이번 장은 함수를 실행 하면 데이터가 꽉 찰때까지 Recive함수에서 대기를 하는 것이 아니라 데이터가 들어올 때마다 인터럽트 방식으로 처리를 한다
-아래 예제는 PG14 LED를 1초 간격으로 깜박이며 UART 데이터 전송, 수신이 완료 되었을 경우 PG13의 LED를 On Off 한다
하이퍼 터미널
9장과 같이 설정
CUBE MX 설정
Sorce Code
/* USER CODE BEGIN 0 */
uint8_t tx_buff[] = {"Hello UART"};
uint8_t rx_buff[5];
/* USER CODE END 0 */
.
.
/* USER CODE BEGIN 2 */
HAL_UART_Receive_IT(&huart1, rx_buff,5);//5개의 데이터를 입력 받을 때까지 PA10(RX)핀을 수신 대기
HAL_UART_Transmit_IT(&huart1, tx_buff,sizeof(tx_buff));
/* USER CODE END 2 */
.
.
/* USER CODE BEGIN 3 */
HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_14);
HAL_Delay(1000);
.
.
/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) //수신 완료시
{
if(huart == &huart1){//모든 데이터를 다 받은 경우 실행zx
HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_13);
HAL_UART_Receive_IT(&huart1, rx_buff,4);//4개의 데이터를 입력 받을 때까지 PA10(RX)핀을 수신 대기
}
}
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) //송신 완료시
{
if(huart == &huart1){
HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_13);
}
}
/* USER CODE END 4 */
실행 결과
10.UART 폴더의 동영상 확인
PG14 LED는 while문에 의해 1초마다 ON OFF가 되며 데이터 수신은 들어올 때마다 처리된다
'STM32Fxx' 카테고리의 다른 글
STM32F429-SPI IT (0) | 2018.10.24 |
---|---|
STM32F429 - SPI Poll (0) | 2018.10.18 |
STM32F429 - UART Poll (CUBE MX) (0) | 2018.09.11 |
STM32F429 - ADC Interrupt (CUBE MX) (0) | 2018.09.11 |
STM32F429 - ADC 사용하기 (CUBE MX) (0) | 2018.09.11 |
- Total
- Today
- Yesterday
- 정부주택대출
- STM32F429 GPIO
- atmega128 설치
- Dir
- STM32F
- STM32F429
- 폴더생성
- STM CUBE MX
- 중소기업청년
- Excel
- atmel studio 설치
- 틀고정
- atmega 설치방법
- 수은건전지
- 전세지킴보증서
- vba
- atmega 개발
- STM GPIO
- atmel studio7
- filecopy
- 홈서비스
- 제목행
- GPIO
- CUBE MX GPIO
- MCG
- STM32F GPIO
- STM 입출력
- 중기청
- 착한운전자마일리지
- 파일복사
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |