본문 바로가기

카테고리 없음

KEIL USART 구동&레지스터

USART를 디버깅하며 알게된 팁

 

1) 레지스터 디버깅

 

- KEIL에서 SYSTEM VIEWER를 클릭하면 원하는 PERIPERAL의 레지스터 상태를 볼 수 있다.

SYSTEM VIEWER 버튼

 

해당 VIEWER를 사용하면 현재 상태의 레지스터 세팅값을 확인할 수 있어 디버깅에 용이하다.

USART1의 현재 레지스터 세팅값

 

 

* USART를 RXINTERUPT 방식으로 사용할때의 동작 흐름

 

1) USART 사용 기본 세팅

- USART를 사용하기 위하여 CR 레지스터의 UE(USART ENABLE),과 TE,RE를 SET 해준다.

- 우리는 USART 수신 인터럽트를 사용할 것이기 때문에 RXNEIE 또한 SET 해준다.

 

2) 데이터 수신

- 정상 패킷이 들어오면 RXNEIE를 DISABLE해주어 동작 프로세스간 INTERUPT를 방지한다.

 

3) 동작 처리& 데이터 전송

- 데이터를 DR에 인가하여 전송한다. 전송이 완료되면 SR의 TC(TRANSMIT COMPLETE)가 SET 된다.

- 데이터를 모두 전송했으면 RXNEIE를 ENABLE 해주어, 수신 인터럽트를 활성화 시킨다. 

 

 

* USART 레지스터 및 플래그 이름 정리

 

SR: 상태 레지스터

 

* TC : Transmit Complete 전송완료
* RXNE : Rx Not Empty 데이터 수신
* ORE : Overrun 에러
* NE : Noise 에러
* FE : Framing 에러
* PE : Parity 에러

 

DR: 데이터 레지스터

 

BRR: Baud Rate Register

 

CR1: control Register

 

* UE : Enable / Disable
* M : World 길이 (8bits or 9bits)
* PCE : Parity Control Enable, 패러티 제어 활성/비활성화
* PS : Parity Selection (Even, Odd Parity)
* PSIE : PE Interrupt Enable / Disable
* TXEIE : TXE 인터럽트 Enable / Disable
* TCIE : TC 인터럽트 Enable / Disable
* RXNEIE : RXNE 인터럽트 Enable / Disable
* IDLEIE : IDLE 인터럽트 Enable / Disable
* TE : Transmitter Enable / Disable
* RE : Receiver Enable / Disable

 

 

 

참조: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=eziya76&logNo=220974083924