STM32_Tutorial_08 - 8BitsCoding/RobotMentor GitHub Wiki
Timer์ ๋ํ ์ด๋ก ์ค๋ช
๋ง์ดํฌ๋ก ์ปจํธ๋กค๋ฌ์์๋ ์๊ฐ์ ์ธก์ ํ๊ธฐ ์ํด์(ํ์ด๋จธ๋ฅผ ๋์์ํค๊ธฐ ์ํด์) ํด๋ญ์ ์นด์ดํธ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์๊ฐ์ ์ธก์ ํ๋ค.
๊ทธ๋ผ ํด๋ญ์ ์ด๋ป๊ฒ ์นด์ดํธํด์ผํ ๊น?
๊ฐ๋จํ๊ฒ ์ค๋ช ํ๋ฉด, ๋ ์ง์คํฐ์ ํน์ ๊ฐ์ ์ ๋ ฅํ ํด๋ญ์ ์นด์ดํธ ํ์ฌ ๊ทธ ๋ ์ง์คํฐ ๊ฐ์ ์ด๊ณผ ์ ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์ํ๋ ๋ฐฉ์์ผ๋ก ํ์ด๋จธ๋ฅผ ๋์์ํจ๋ค.

ํ ... ๊ทธ๋ฆผ๋ง ๋ด์๋ ๋ฌด์จ๋ง์ธ์ง ์...

์ฐ์ ํ์ด๋จธ๋ ๋ ๊ฐ์ง๊ฐ ์๋ค.
- 16๋นํธ ํ์ด๋จธ (=2^16 = 65535)
- 32๋นํธ ํ์ด๋จธ (=2^32 = 429496795)
๊ฐ ํ์ด๋จธ๋ ํด๋น ๋นํธ์ ๋งํผ ์นด์ดํธ๋ฅผ ์ ์์๋ค
AutoReloadRegister(Period)์ ํน์ ๊ฐ์ ์ ๋ ฅํด ์ฃผ๊ณ ํ์ด๋จธ์ ์นด์ดํธ๊ฐ ํน์ ๊ฐ์ ์ด๊ณผ์ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
๊ทธ๋ผ ์ ๋ฐ์ดํธ๊ฐ ๋๋ ์ฃผ๊ธฐ์ ์ค์ ์ ์ด๋ป๊ฒ ํ๋๊ฐ??
-> ํ์ด๋จธ๊ฐ 1์ฆ๊ฐํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ(ํด๋ญ์ ๋์์๋)์ ์์์ผํ๋ค
์ ์์ ์์๋ 168MHz(=168,000,000)

์ฌ์ฉํ ํ์ด๋จธ๊ฐ APB1, APB2, HCLK๋ฅผ ์ฌ์ฉํ๋์ง์ ๋ฐ๋ผ์ ํด๋ญ์ ์๋๊ฐ ๋ฌ๋ผ์ง๊ฒ ๋๋ค.
์๋ฅผ๋ค์ด APB1 ํ์ด๋จธ๋ฅผ ์ด๋ค๋ฉด ํ์ด๋จธ ์นด์ดํธ๊ฐ 1๊ฐ ์ฆ๊ฐํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด 1/84M์ด(1/84,000,000์ด)๊ฐ ๋๋ค.
์์ฒญ๋๊ฒ ์งง์ ์๊ฐ์ธ๋ฐ... ํ์ด๋จธ๋ฅผ ๋ง๋ค์์์๊น??
Prescaler๋ฅผ ๋์ (=ํ์ด๋จธ๊ฐ ๋๋ฌด๋น ๋ฅด๋ ๋์์ ์ฒ์ฒํ ํ๊ฒ ํด๋ณด์)


๋ค์ํ๋ ์ฌ๊ธฐ์ ํ์ธ๊ฐ๋ฅ
ํต์ฌ์
APB 1์ผ ๊ฒฝ์ฐ ์์คํ ํ์ด๋จธ / 2 ์ฌ์ฉ
APB 2์ผ ๊ฒฝ์ฐ ์์คํ ํ์ด๋จธ์ ๋์ผํ์๋
๊ตฌํ์ ํด๋ณด์...
์ ํ์์๋ณด๋ฉด Timer 6, 7์ด ๊ธฐ๋ณธ(Basic)ํ์ด๋จธ์ธ๋ฐ ์ด๊ฒ์ ๊ธฐ์ค์ผ๋ก ๊ตฌํ
CubeMX ์คํํ๋ค. -> Timer 7 Active

Configuration -> TIM7 ํด๋ฆญ

- Perscaler : 10000 - 1 = 9999
- Counter Period : 8400 - 1 = 8399

NVIC Setting Enabled



Project -> Generation Code
์์ค์ฝ๋ ์ ๋ฆฌ
// main
HAL_TIM_Base_Start_IT(&htim7);
// callback
void HAL_TIM_PeriodFlapsedCallback(TIM_HandleTypeDef* htim)
{
if(htim->Instance == TIM7)
{
// ํ์ด๋จธ ๋์
}
else
{
}
}