보드명 : STM32F429ZI
개인 참고용 자료입니다.
새 프로젝트 생성
보드선택
프로젝트명 짓고 생성
프로젝트 매니저에서 다음 체크
주변장치 별로 소스파일, 헤더파일을 따로 생성해준다.
RCC (Reset and Clock Configuration) 을 수정
Debug는 Serial Wire로 설정
이 보도는 ST-Link/V2 가 보드에 포함되어 있어 외부에 별도 장비를 연결할 필요 없이 보드에 usb를 연결해서 디버깅할 수 있다.
타이머 설정
이더넷과 USB_OTG_FS는 disable 되어있는지 확인
클락 다음과 같이 설정
Clock은 External / Internal, Low speed / High Speed 에 따라 LSE, LSI, HSE, HSI 로 구분할 수 있다.
LSE (32.768 KHz)
LSI (32 KHz)
HSE(4-26 MHz)
HSI(16 MHz, CPU clock)
첨부 사진에서는 LSE를 RTC로 사용하고
HSI 를 PLL을 통해 필요한 주파수로 변경한 뒤 SYSCLK(시스템 클락소스)로 사용하며 이를 분주해서 AHB, APB1, APB2 등의 주파수를 설정한다.
그리고 아까 RCC 설정에서 HSE를 disable 해준 이유는 회로도를 보면 실장이 되어있지 않다.
그리고 LSE는 실장되어 있어서 Crystal/Ceramic Resonator 로 설정해 주었다.
참고로 다른 옵션인 Bypass Clock Source 는 다른 장치에서 Clock 을 전달 받아 사용할 때 선택한다.
유저 스위치를 누를 때 LED가 켜지도록 제어해 보겠다.
먼저 LED
원하는 핀은 아래에서 검색하면 찾을 수 있다.
PB7핀 output으로 설정
그리고 유저 스위치
PC13핀 input으로 설정
굳이 GPIO 설정은 따로 안바꿔주도 될 것 같다.
참고로 User Label 에 별칭을 정하면 헤더파일에 typedef 코드가 생성된다.
Alt+K를 눌러 코드 생성하기
main.c의 while문 내에 아래와 같이 코드 작성
if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13))
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, 1);
else
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, 0);
Ctrl+space bar를 누르면 자동완성 기능이 있다.
Output으로 HIGH, LOW 신호를 내보내는 데 GPIO_PIN_SET/RESET 안쓰고 걍 숫자 1, 0을 썼다.
Ctrl을 누른채로 ReadPin 함수를 클릭해 정의를 따라가보면
ReadPin 함수의 반환값의 자료형은 GPIO_PinState이다.
다시 Ctrl을 누른채로 GPIO_PinState 자료형을 클릭해 따라가보면
GPIO 헤더파일 내에 아래와 같이 typedef enum으로 정의되어 있다. 0, 1 값을 가지는 사용자 정의 자료형이다.
아무튼 빌드 클릭
디버그 클릭
그럼 HAL_Init(); 에서 멈춘다.
여기서 여러 디버깅 툴을 사용해 볼 수 있다. (문장 단위/함수 단위로 뛰어넘기 등)
근데 지금은 그냥 F8 resume 을 선택해 보겠다.
유저스위치를 누를 때마다 LD2에 불이 들어오는 것을 확인할 수 있다.
'임베디드 개발 > STM32 (ARM Cortex-M)' 카테고리의 다른 글
STM32 , 4비트 병렬 가산기( IC 7483 ) 소스코드로 구현 ( 호환보드 사용 ) (0) | 2022.05.20 |
---|---|
STM32 , IC 74138 디코더 소스코드로 구현하기 ( Nucleo-144용 I/O 호환보드 사용 ) (0) | 2022.05.20 |
STM32 레지스터 직접 접근해서 LED를 이용한 카운터, 7 segment FND 출력 제어하기 (0) | 2022.05.19 |
STM32 레지스터에 접근해 GPIO 제어하기 (0) | 2022.05.19 |
STM32CubeIDE 다운로드 받고 새 프로젝트 만들기 (0) | 2022.05.16 |