์ธ๋ถ ์ธํฐ๋ฝํธ
์ธ๋ถ ์ธํฐ๋ฝํธ๋ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ๊ฐ ์ธ๋ถ ์ ํธ(์: ๋ฒํผ ์ ๋ ฅ, ์ผ์ ์ ํธ ๋ฑ)์ ์ํด ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ์ค๋จํ๊ณ , ํน์ ์ธํฐ๋ฝํธ ์๋น์ค ๋ฃจํด(ISR, Interrupt Service Routine)์ ์คํํ๋๋ก ํ๋ ๋ฉ์ปค๋์ฆ์ด๋ค. STM32 ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ์์๋ ์ด๋ฌํ ์ธ๋ถ ์ธํฐ๋ฝํธ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
๐ 1. ์ธ๋ถ ์ธํฐ๋ฝํธ ๋?
์ธ๋ถ ์ธํฐ๋ฝํธ๋ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ์ ํน์ ํ์ผ๋ก ๋ค์ด์ค๋ ์ ํธ๋ฅผ ๊ฐ์งํ์ฌ ๋ฐ์ํ๋ ์ธํฐ๋ฝํธ์ด๋ค. ์ด๋ฌํ ์ธํฐ๋ฝํธ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ค.
- ๋ฒํผ ๋๋ฆ ๊ฐ์ง
- ์ผ์์ ์ ํธ ๋ณํ ๊ฐ์ง
- ์ธ๋ถ ์ฅ์น์์ ํต์ ์ ํธ ๊ฐ์ง
์ธ๋ถ ์ธํฐ๋ฝํธ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ค์ ๋๊ณ ์ฌ์ฉ๋๋ค.
- ์ธํฐ๋ฝํธ ์์ค ์ค์ : ํน์ GPIO ํ์ ์ธํฐ๋ฝํธ ์์ค๋ก ์ค์ ํ๋ค.
- ์ธํฐ๋ฝํธ ๋ชจ๋ ์ค์ : ์์น ์ฃ์ง, ํ๊ฐ ์ฃ์ง, ๋๋ ์์ฝ(๋ ๋ค)์ ๊ฐ์งํ๋๋ก ์ค์ ํ๋ค.
- ์ธํฐ๋ฝํธ ํ์ฑํ: NVIC(์ค์ ์ธํฐ๋ฝํธ ์ปจํธ๋กค๋ฌ)์์ ํด๋น ์ธํฐ๋ฝํธ๋ฅผ ํ์ฑํํ๋ค.
- ์ธํฐ๋ฝํธ ์๋น์ค ๋ฃจํด(ISR) ์์ฑ: ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ์ ๋ ์คํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == BTN_Pin)
{
if (HAL_GPIO_ReadPin(GPIOA, BTN_Pin) == GPIO_PIN_SET){
HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, GPIO_PIN_SET);
}else{
HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, GPIO_PIN_RESET);
}
}
}
/* USER CODE END 4 */
๐ 2. ์ธ๋ถ ์ธํฐ๋ฝํธ๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ์ค์๊ฐ ์๋ต: ์ธ๋ถ ์ด๋ฒคํธ์ ๋ํด ์ฆ๊ฐ์ ์ผ๋ก ์๋ตํ ์ ์๋ค. ํ๋ก๊ทธ๋จ์ ๋ฉ์ธ ๋ฃจํ๋ฅผ ๊ธฐ๋ค๋ฆด ํ์ ์์ด ๋ฐ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
- ์ ๋ ฅ ํจ์จ์ฑ: ์ ์ ๋ ฅ ๋ชจ๋์์ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ๊ฐ ๋๊ธฐ ์ํ๋ก ์๋ค๊ฐ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ฉด ๊นจ์ด๋์ ์ฒ๋ฆฌํ ์ ์๋ค.
- ํจ์จ์ ์ธ ์์ ์ฌ์ฉ: ์ง์์ ์ผ๋ก ์ด๋ฒคํธ๋ฅผ ํด๋ง(polling)ํ๋ ๋์ , ์ธํฐ๋ฝํธ๋ฅผ ์ฌ์ฉํ๋ฉด CPU ์๊ฐ์ ์ ์ฝํ ์ ์๋ค.
๐ 3. while๋ฌธ ๋์ ์ธ๋ถ ์ธํฐ๋ฝํธ๋ฅผ ์ฌ์ฉํ๋ ์ด์
์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋จ์์๋ ๋ฉ์ธ ๋ฃจํ(while ๋ฌธ)์์ ํน์ ์กฐ๊ฑด์ ์ง์์ ์ผ๋ก ํ์ธํ๋ ๋ฐฉ์์ผ๋ก ๋ฒํผ ์ ๋ ฅ์ ์ฒ๋ฆฌํ ์ ์๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๋นํจ์จ์ ์ด๋ค. ํด๋ง ๋ฐฉ์์ผ๋ก ๋ฒํผ ์ ๋ ฅ์ ํ์ธํ๋ฉด CPU ์์์ ๋ญ๋นํ๊ฒ ๋๋ค. ๋ค์์ ์ธ๋ถ ์ธํฐ๋ฝํธ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ด๋ค.
'๐ง STM32' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[STM32] 9. Volatile ํค์๋ (0) | 2024.11.22 |
---|---|
[STM32] 8. ์ค์์น ์ฑํฐ๋ง (์ํํธ์จ์ด ๋๋ฐ์ด์ฑ) (0) | 2024.11.18 |
[STM32] 6. ํ์ ์ ํญ ๊ธฐ๋ณธ ์๋ฆฌ (0) | 2024.11.18 |
[STM32] 5. ๋ด์ฅ ์ค์์น ์ ์ด (0) | 2024.11.17 |
[STM32] 4. GPIO Output ์ค๋ช (0) | 2024.09.07 |