STM32- Timer와 PWM

2022. 12. 16. 17:11· Project/나만의 주점(STM32,Arduino,android)
목차
  1. 타이머란
  2. Systick Timer
  3. IWDG/WWDG Timer-Watching timer
  4. Advanced-control timers (TIM1 & TIM8)
  5. Basic timer (TIM6 & TIM7)
  6. General-purpose timers (TIM2 to TIM5)
  7. PWM(Pulse Width Modulation)

타이머란

  • 주기적 시간 처리에 사용하는 디지털 카운터 회로 모듈
  • 펄스폭 계측, 주기적인 interrupt 발생 등에 사용
  • 주파수가 높기 때문에 우선 prescaler를 사용하여 주파수를 낮춘 후 낮아진 주파수로 8,16비트 등의 카운터 회로를 사용하여 주기를 얻는다. 
  • STM32 타이머 종류
    • SysTick Timer
    • Watchdog Timer
    • Advanced-control Timer (TIM1, TIM8)
    • General-purpose Timer (TIM2 ~ TIM5)
    • Basic Timer (TIM6, TIM7)

Systick Timer

Real-time operating system 전용이지만 standard down counter로 사용 할 수도 있음

  • 24bit down counter 
  • Autoreload capability
  • Counter가 0에 도달하면 설정에 따라 인터럽트가 발생
  • Programmable clock source

 

IWDG/WWDG Timer-Watching timer

 

WATCHDOG(WDG)은 임베디드 시스템 등 특수 상황에서 CPU가 올바르게 작동하지 않을 시 강제로 리셋시키는 기능을 의미한다

  • IWDG/WWDG는 모두 소프트웨어 고장으로 인한 오작동을 감지하고 해결하는 역할을 한다.
  • 카운터가 주어진 시간 초과 값에 도달했을 때 시스템 재설정 또는 인터럽트(only WWDG)를 트리거한다.
  • IWDG
    • IWDG는 LSI 클럭 기반으로 메인 클럭 고장에도 활성 상태 유지 가능
    • 타이밍 정확도 제약이 낮은 애플리케이션에 적합하다.
    • 카운터가 0이 되면 Reset 
  • WWDG
    • 7-bit down counter  
    • WWDG의 클럭은 APB1 클럭을 프리스케일해서 정의 가능
    • 비정상적 어플리케이션 동작 감지를 위해 설정 가능한 time-window가 있다.
    • Time-window 내에서 반응하도록 요구하는 애플리케이션에 적합하다.
    • 카운터가 0x40 보다 작을 경우 또는 카운터가 Time-window 밖에 Reload 됐을 경우 Reset 가능하다.
    • Early wakeup interrupt (EWI) : 카운터가 0x40과 같을 때, EWI 인터럽트 발생하게 설정 가능하다.

 

 

Advanced-control timers (TIM1 & TIM8)

  • The advanced-control timers는 prescaler를 이용해 설정 가능한 16-bit auto-reload counter를 포함하고있다.
  • 입력 신호 펄스 길이 측정(input capture)  또는 출력 파형 생성(output compare, PWM, complementary PWM with dead-time insertion) 등에 사용 가능하다.
  • The advanced-control (TIM1&TIM8) and general-purpose (TIMx)는 자원을 공유하지 않는 독립적인 구조이며, 동기화 시키는 것도 가능하다

 

Basic timer (TIM6 & TIM7)

 

  • 16-bit auto-reload 업카운터
  • 설정 가능한 16-bit prescaler를 이용해 the counter clock 주파수를 나눠서 설정 가능
  • DAC 트리거에 사용
  • 카운터 오버플로우 발생 시 인터럽트/DMA 생성

General-purpose timers (TIM2 to TIM5)

  • General-purpose timer은 prescaler를 이용해 설정 가능한 16-bit up, down, up/down auto-reload counter를 포함하고 있다.
  • 입력 신호의 펄스 길이 측정(input capture) 또는 출력 파형 발생(output compare and PWM) 등 다양한 용도로 사용할 수 있다.
  • 펄스 길이와 파형 주기는 timer prescaler와 the RCC clock controller prescaler를 사용하여 몇 μs에서 몇 ms까지 변조할 수 있다. 타이머들은 완전히 독립적이며, 어떤 자원도 공유하지 않으나 동기화 가능하다

 

 

 

  • 분주란 MCU에서 제공하는 Frequency를 우리가 사용하기 쉬운 값으로 바꾸어 주는 것을 말합니다.
  • Counter clock frequency 를 1~65536의 값으로 나누기 위해 16-bit programmable prescaler사용
  • period 로 몇 번 count하는지 설정

 

 

 

 

 

 

 

 

 

PWM(Pulse Width Modulation)

일정한 주기 내에서 Duty ratio를 변화 시켜서 평균 전압을 제어하는 방법

 

ex) 0~5V의 전력 범위에서 2.5V 전압을 가하고 싶다면, 50% 듀티 사이클 적용

대부분의 서보모터는 50Hz ~ 1000Hz 의 주파수를 요구하고

데이터 시트를 반드시 확인해서 사용해야함.

 

STM32보드 PWM 신호 예시

TIM3의 채널 3 사용 예시

- PB0를 사용해야하며, Alternate function사용    (다른 채널 사용시 다른 핀을 사용해야함.)
 
작성코드 및 보고서: https://github.com/yunzae/Embeded-System/tree/main/Embeded/10주차

 

'Project > 나만의 주점(STM32,Arduino,android)' 카테고리의 다른 글

나만의 주점..  (0) 2022.12.29
STM32- DMA  (0) 2022.12.16
STM32- LCD 및 ADC  (0) 2022.12.16
STM32-블루투스  (1) 2022.12.16
STM32- Interrupt 방싱을 활용한 GPIO 제어 및 UART 통신  (0) 2022.12.16
  1. 타이머란
  2. Systick Timer
  3. IWDG/WWDG Timer-Watching timer
  4. Advanced-control timers (TIM1 & TIM8)
  5. Basic timer (TIM6 & TIM7)
  6. General-purpose timers (TIM2 to TIM5)
  7. PWM(Pulse Width Modulation)
'Project/나만의 주점(STM32,Arduino,android)' 카테고리의 다른 글
  • 나만의 주점..
  • STM32- DMA
  • STM32- LCD 및 ADC
  • STM32-블루투스
윤재에요
윤재에요
yunzae.log윤재에요 님의 블로그입니다.
윤재에요
yunzae.log
윤재에요
전체
오늘
어제
  • 분류 전체보기 (438)
    • Computer Science (115)
      • 데이터베이스 (50)
      • 네트워크 (18)
      • 소프트웨어 공학 (1)
      • 알고리즘 (10)
      • 자료구조 (9)
      • 컴퓨터구조 (0)
      • 운영체제 (0)
      • 데이터 통신 (16)
      • 프로그래밍언어론 (11)
    • Project (20)
      • 후크(Flutter) (1)
      • BDSR로그북(App,BackEnd) (2)
      • 나만의 주점(STM32,Arduino,androi.. (9)
      • 공다(App,BackEnd) (2)
      • 카카오쇼핑 클론코딩 (4)
      • 암호화폐자동매매 (2)
    • Problem Solving (208)
      • 자바 문법 (20)
      • 파이썬 문법,함수 (6)
      • 그리디 (5)
      • 구현 (43)
      • DFS (3)
      • BFS (17)
      • 정렬 (15)
      • 이진 탐색 (16)
      • 다이나믹 프로그래밍 (6)
      • 최단 경로 (5)
      • 그래프 (1)
      • 자료구조 (5)
      • 투포인터 (15)
      • SQL (44)
      • 구간합 (7)
    • I leaned (78)
      • 스프링,스프링부트 (31)
      • Git (6)
      • JAVA (5)
      • Etc (30)
    • 취업 (15)
      • PT면접 (6)
      • 기술면접 (9)
      • 인성면접 (0)
    • log (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • 이것이 코딩테스트다.
  • 재시도
  • E-R Model
  • 데이터베이스
  • 제약 사항
  • 다익스트라
  • 카카오테크캠퍼스
  • DP
  • weak entity
  • 계수정렬
  • UML
  • 교환정렬
  • 다이어그램
  • 힙큐
  • 파이썬
  • 플로이드 워셜
  • Relationship model
  • 이것이코딩테스트다
  • 최단거리
  • 부품찾기
  • 이것이 코딩테스트다
  • 효율적인화폐구성
  • 개미전사
  • 최단 거리
  • 그리디
  • 먀
  • 기수정렬
  • 다이나믹프로그래밍
  • 다이나믹
  • 참조 무결성

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
윤재에요
STM32- Timer와 PWM
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.