ex02.2_SW - withrobot/myCortex-STM32F4 GitHub Wiki

๊ฐœ์š”

SW ์˜ˆ์ œ๋Š” STM32 MCU์˜ GPIO ํ•€์„ ์ž…๋ ฅ ๋ชจ๋“œ๋กœ ์ด์šฉํ•˜๋Š” ์˜ˆ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. myCortex-STM32F4 ๋ณด๋“œ์— ์žฅ์ฐฉ๋œ ์Šค์œ„์น˜๋“ค์€ ๋ถ€ํŠธ์™€ ๋ฆฌ์…‹ ์Šค์œ„์น˜๋กœ ์ผ๋ฐ˜ GPIO์— ์—ฐ๊ฒฐ๋œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ณธ ์˜ˆ์ œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Switch ๋“œ๋ผ์ด๋ฒ„์—์„œ ์•ˆ๋‚ดํ•˜๋Š” ๋ฐ”์™€ ๊ฐ™์ด ๋ณ„๋„์˜ ์Šค์œ„์น˜ ํšŒ๋กœ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ Peripheral

๊ด€๋ จ Driver

์†Œ์Šค ์‚ดํŽด๋ณด๊ธฐ

main.c ํŒŒ์ผ ํ•˜๋‚˜๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

7 line:

#include "stm32f4xx.h"

๊ธฐ๋ณธ์ ์ธ ํ—ค๋” ํŒŒ์ผ์„ includeํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. StdPeriph library๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•„์ˆ˜์ ์œผ๋กœ includeํ•ด์•ผ ํ•˜๋Š” ํ—ค๋” ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

9 line:

#include "switch.h"

drv ํด๋”์— ์žˆ๋Š” ์Šค์œ„์น˜ ๋“œ๋ผ์ด๋ฒ„์˜ ํ—ค๋”ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. PA0์™€ PB10์— ํ‘ธ์‰ฌ ์Šค์œ„์น˜๊ฐ€ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์„ ๊ฐ€์ •ํ•˜๊ณ  ๋งŒ๋“ค์–ด์ง„ ๋“œ๋ผ์ด๋ฒ„์ž…๋‹ˆ๋‹ค.

15 line:

SW_Init();

์Šค์œ„์น˜ ๊ด€๋ จ ํŽ˜๋ฆฌํŽ˜๋Ÿด๋“ค์„ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์Šค์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์ดˆ ํ•œ๋ฒˆ ์ดˆ๊ธฐํ™”๊ฐ€ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

19 line:

// SW1(PE0)์ด ๋ˆŒ๋ ค์ ธ ์žˆ๋Š” ๋™์•ˆ ๋ถ‰์€์ƒ‰ LED๋ฅผ ์ผ ๋‹ค.
if (SW_1_IS_PUSHED())
    LED_R_ON();
else
    LED_R_OFF();

PA0์— ์—ฐ๊ฒฐ๋œ SW1์ด ๋ˆŒ๋ ค์กŒ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์Šค์œ„์น˜๊ฐ€ ๋ˆŒ๋ ค์กŒ๋‹ค๋ฉด ์ ์ƒ‰ LED๋ฅผ ์ผœ๊ณ  ์•„๋‹ˆ๋ผ๋ฉด ์ ์ƒ‰ LED๋ฅผ ๋•๋‹ˆ๋‹ค. ๋’ค์— ์ด์–ด์ง€๋Š” ์ฝ”๋“œ๋Š” SW2์™€ ๋…น์ƒ‰ LED๋ฅผ ์ด์šฉํ•ด ๋™์ผํ•œ ๋กœ์ง์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ๋ฐฉ๋ฒ•

ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•ด์„œ ๋‹ค์šด๋กœ๋“œ ํ•ฉ๋‹ˆ๋‹ค. Switch ๋“œ๋ผ์ด๋ฒ„์—์„œ ์„ค๋ช…ํ•œ ๋ฐ”์™€ ๊ฐ™์ด ์Šค์œ„์น˜ ํšŒ๋กœ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

PA0์— ์—ฐ๊ฒฐ๋œ ์Šค์œ„์น˜๋ฅผ ๋ˆ„๋ฅด๊ณ  ์žˆ๋Š” ๋™์•ˆ ๋ณด๋“œ์˜ ์ ์ƒ‰ LED๊ฐ€ ์ผœ์ง€๊ณ  PB10์— ์—ฐ๊ฒฐ๋œ ์Šค์œ„์น˜๋ฅผ ๋ˆ„๋ฅด๊ณ  ์žˆ๋Š” ๋™์•ˆ ๋ณด๋“œ์˜ ๋…น์ƒ‰ LED๊ฐ€ ์ผœ์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.