티스토리 뷰

Digital Developer

[STM32] 타이머 설정

Escaper 2021. 1. 17. 09:27
반응형

목적

STM32CubeMX를 이용하여 NUCLEO-F767ZI 보드에서 원하는 주파수로 타이머(TIMER3) 설정을 하고, ISR에서 GPIO 토글을 구현하여 이를 확인할 수 있다.  

준비물

  • NUCLEO-F767ZI 
  • STM32CubeMX
  • IAR WB for ARM
  • Digilent Analog Discovery 2

1. 주파수 설정

타이머의 업데이트 주기를 설정해 준다. 여기서는 임의로 100ms로 정하고 설정을 해본다.

먼저 데이터쉬트에서 블록다이어 그램을 찾아 Timer3가 어떤 버스에 연결되어 있는지 확인한다.

위 블록다이어그램의 일부에서 확인 가능하듯이 Timer3는 APB1 버스에 연결되어 있다.

 

다음엔, STM32Cube-MX Clock Configuration에서 APB1 버스의 클럭이 얼마로 설정되어 있는지 확인한다. (디바이더로 조정 가능하다)

확인 결과 96MHz.

 

아래 공식에 의거 Prescaler 와 ARR 값을 정한다.

우리가 원하는 update frequency는 10Hz (100ms마다 한번) 이므로 ARR = 59999, Prescaler = 159 로 설정한다.

아래와 같이 CubeMX에서 입력한다.

여기까지가 타이머의 주파수 설정이다. 이후에는 인터럽트와 GPIO를 이용해 설정이 제대로 되었는지 확인해준다.

2. 인터럽트 설정

코드에 Timer3에 해당하는 ISR을 생성하기 위해 아래와 같이 NVIC Settings에서 체크박스에 클릭! 만 하면 끝.

이제 CubeMX에서 전체 코드를 생성하고 Timer3 설정부분의 코드가 아래와 같은지 확인한다.

또한 Timer3 ISR에 아래와 같이 토글 코드를 추가해 준다.

3. 실행 및 확인

오실로스코프로 우리가 원하는 100ms 이벤트가 발생하는지 확인한다.

위 그림에서 확인 가능하듯이 우리가 원하는 100ms 이벤트가 발생하고 있다.

끝.

댓글
최근에 올라온 글
Total
Today
Yesterday