일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 텐서
- 일귀
- ML
- torch
- conda: command not found
- 리눅스
- conda
- Machine Learning
- 머신러닝
- anaconda오류
- essential deep learning paper reading
- 리눅스 오류
- conda오류
- 공부
- pyTorch
- Ai
- stm32f 시리즈를 이용한 arm cortex-m3/m4 구조와 응용
- pytorch tensor
- Tensor
- Today
- Total
Embedded World
Timer를 이용한 입출력 제어 본문
서론
STM32를 활용한 임베디드 프로젝트를 진행하며, ST사의 HAL 라이브러리에 익숙하지 않아 프로그래밍 과정에 많은 어려움을 겪는 문제가 생겼다. 따라서, 책 "STM32F 시리즈를 이용한 ARM Cortex-M3/M4 구조와 응용"의 Timer 내용을 공부해 HAL 라이브러리를 활용한 Timer 기능 활용에 익숙해지고자 한다.
1. 범용(General-purpose) 타이머의 구조 및 기능
STM32F103RB 보드의 Spec을 기준으로 합니다.
1.1 STM32F 타이머 종류
- General-purpose Timer
- Advanced Timer
- Basic Timer
- Channel Timer
1.2 General-purpose Timer의 구조
- Prescaler (PSC) : 16비트의 프리스케일러는 공급되는 클럭(TIMx_CLK 혹은 CK_PSC)을 1~65536의 값으로 나누어 카운터의 동작 클럭을 만들어내는 분주기이다.
- Counter (CNT) : 16비트의 카운터는 타이머의 핵심적인 요소로써, 공급되는 클럭을 이용한 up, down, up-down 카운팅이 가능하다.
- Auto Reload Register (ARR) : 업 카운터의 경우, CNT가 ARR이 되면 0부터 다시 카운트를 시작한다. 다운 카운터의 경우, CNT가 0이되면 ARR부터 카운트를 다시 시작한다.
- Capture Compare Register (CCR) : 입력 신호가 주어질 때 CNT값을 캡쳐하거나, CNT==CCR 이 될 때 인터럽트를 발생하거나 출력채널로 0 혹은 1을 출력한다.
1.3 범용 타이머의 주요 기능
1.3.1 카운터 모드
업카운팅, 다운카운팅, 업/다운 카운팅(센터 얼라인 모드) 모드로 총 3가지 모드가 있다.
< TIM_Base_InitTypeDef 구조체에서 타이머가 가질 수 있는 카운팅 모드 >
1. TIM_COUNTERMODE_UP
2. TIM_COUNTERMODE_DOWN
3. TIM_COUNTERMODE_CENTERALIGNED1 : 다운 카운팅 때 OC 인터럽트가 발생
4. TIM_COUNTERMODE_CENTERALIGNED2 : 업 카운팅 때 OC 인터럽트가 발생
5. TIM_COUNTERMODE_CENTERALIGNED3 : 업/다운 카운팅 모두 OC 인터럽트가 발생
1.3.2 입력 캡쳐 모드
입력 캡쳐 모드는, 외부에서 입력 값이 들어오는 순간 그 때의 CNT값을 캡쳐하는 모드이다.
입력 신호인 ICx가 입력되면, 그 때의 CNT값이 CCR 레지스터에 저장되며 캡쳐 플래그 CCxIF 가 설정된다. 그리고 인터럽트가 인에이블 되어있는 경우는 인터럽트 CCxI 가 발생한다. CCxIF가 이미 설정되어 있는데 캡쳐가 또 발생할 경우는 오버 캡쳐 플래그 CCxOF가 설정되게 된다.
1.3.3 출력 비교 모드
Output Compare 모드는 카운터의 출력값이 캡쳐/비교기에 설정된 비교값 CCRx과 일치할 때 인터럽트나(CCx)나 해당 핀에 출력(OCx)이 발생하는 모드이다.
1.3.4 PWM 출력 모드
1.3.5 원 펄스 모드
'Embedded Systems' 카테고리의 다른 글
USB 통신 (0) | 2025.06.07 |
---|---|
UART 통신 (0) | 2025.06.07 |