본문 바로가기

카테고리 없음

[STM32 (ARM Cortex - M)] GPIO 제어하기_1

보드 :  STM32 Nucleo-144 development board

MCU :  STM32F429ZI

 

프로젝트 생성
MCU Selector : STM32F429ZI
BOARD 선택후 NEXT

 

Project Manager => Code Generater => "Generate peripheral initialization as a pair of'.c/.h' files per peripheral" Check

[주변 장치별로 Source File과 Header File을 따로 생성]

Pinout & Configuration => System Core => RCC => Crystal/Ceramic Resonator

Pinout & Configuration => System Core => SYS => Serial Wire

따로 외부 Debug 장치없이 Serial Wire를 통해 Debug 작업을 함 NUCLEO 보드는 ST-LINK/V2 가 보드에 포함 되어 있음

 

 

Pinout & Configuration => Timers => RTC => Active Clock Source

타이머 Set

 

Clock Configuration => Clock set

사용할 Clock과 Prescaler등을 설정해 준다

 

Clock은 

- External / Internal

- Low Speed / High Speed

등의 조합으로 LSE[Low Speed External], LSI[Low Speed Internal], HSE[High Speed External], HSI[High Speed Internal]

로 구분할 수 있다.

 

위의 설정한 바에 따르면

LSE : 32.768 KHz

LSI : 32 KHz

HSE : 4-26 MHz

HSI : 16 MHz

이고 

LSE :  RTC로 사용.

HSI : PLL을 통해 필요한 주파수로 변경한 다음 SYSCLK(System Clock)으로 사용하며 이를 분주하여 AHB, APB1, APB2 등의 주파수를 설정.

 

RCC 설정에서

HSE를 Disable 해준 이유는 8 MHz를 가진 Clock이 Open 되어 있어서 사용하지 않았다.

LSE는 연결이 되어있어서 Cystal / Ceramic Resonator 로 설정해 주었다.

* Bypass Clock Source는 다른 장치에서 Clock을 받아 사용할 때 설정해 준다.

 

여기까지가 기본적인 Setting이고 다음에는 GPIO를 통해 LED를 Control 하는 작업이다.

 

PB7에 내장되어 있는 LED인 LD2가 연결 되어 있음을 회로도에서 확인할 수 있다.

 

PC13에 내장되어 있는 Switch인 B1이 연결되어 있음을 회로도에서 확인할 수 있다.

 

PB7에 GPIO_Ouput : LED

PC13에 GPIO_Input : Switch

로 설정해준다.

 

해당 Pin Configuration이 끝났으면 Generate Code를 해준다.

main.c 안의 While문에 위와 같이 Switch로 LED를 제어하는 코드를 입력한다.

Tip. Ctrl + Space bar를 누르면 자동완성 기능이 있다.

Build를 클릭하고

Debug를 선택해주면

Debuging Tool이 나오는데 이때 Resume를 선택하면 

Switch B1을 누를때마다 LED LD2가 켜짐을 알 수 있다.