1 분 소요

내가 주로 사용하는 MCU는 ST Microelectronics의 Cortex-M4 코어 계열의 IC가 들어간 개발보드이다. Corext-M4 코어는 Single Precision FPU(Floating Point Unit)이 적용되어 float 변수를 한 Clock에 연산할 수 있다.
STM32F401CCU6, STM32F411CEU6 두 가지 IC가 적용된 개발보드는 Aliexpress에서 검색해 보면 4,000원에서 8,000원 정도의 가격으로 쉽게 구매할 수 있다.
image
STM32F411이 STM32F401보다 Clock이 좀 더 높고, Flash 용량이 좀 더 크다. STM32F401정도면 왠만한 펌웨어는 Flash 용량이 넘지 못할 것이고, 성능도 411에 비해 크게 떨어지지 않아서 가성비로는 훨씬 좋은 것 같다.
보드의 Pin map은 다음과 같다. image

1. CubeMX를 이용한 IAR 프로젝트 코드 생성

CubeMX에서 “STM32F401CC” 를 검색하여 프로잭트를 생성한다.
image

보드에 있는 C-Type USB 포트를 이용한 USB CDC(VCP; Virtual COM Port)와 LED, Switch를 이용해 보겠다.

먼저, VCP 설정은 간단하다.
USB_OTG_FSDevice Only 로 활성화 하고,
USB_DEVICE 에서 Communication Device Class (Virtual Port Com) 을 활성화 하면 된다.
USB 통신 핀은 PA11, PA12 하나 뿐이기 때문에 알아서 할당이 된다.
image
image

LED와 Switch는 각각 PC13, PA0이다.
image
Switch는 Pull-up으로 설정하고,
코딩의 편의성을 위해 User Label에 SW, LED라는 이름을 붙여주었다.
image

마지막으로, Clock 설정을 해야하는데, 보드에는 25 MHz 짜리 Crystal Resonator가 달려있다.
외부 Clock Source를 이용하려면, RCC 에서 High Speed Clock (HSE)Crystal/Ceramic Resonator 로 활성화 한다.
HSE Pin은 PH0, PH1 하나 뿐이기 때문에 알아서 할당이 된다.
image

Clock Configuration 탭으로 넘어가서 Clock을 세부적으로 설정해 주어야 한다.
STM32F401CC의 최대 Clock은 84 MHz이고, 내부 버스와 USB 통신쪽 Clock의 한계치를 잘 맞추어서 설정하면된다.
설정값은 여러 시도 끝에 다음과 같이 찾아냈다.
image

이제 프로젝트를 생성해야하는데, 프로젝트 설정을 조금 해주도록 하자.
Project Manager 탭으로 가자.
프로젝트 이름과 저장 위치를 넣어주고,
image
개인적으로는 .c 파일과 .h 파일이 별도로 있는 것이 좋아서 해당 설정을 체크했다.
image
그리고, Advanced Settings에서 Peripheral 코드에서 활용하는 라이브러리를 HAL과 LL 중에서 고를 수 있다. image
HAL(Hardware Abstraction Layer) 라이브러리는 이름 뜻에서 유추할 수 있듯이 Hardware 칩셋에 따른 차이가 User Code 레벨에서 신경쓰지 않아도 될 정도로 Wrapping 되어있는 라이브러리이다. 편리한 반면, 코드가 커지고, 프로그램 실행속도의 퍼포먼스가 떨어지는 단점이 있다. 반면,
LL(Low-Layer) 라이브러리는 ST 사에서 과거에 제공하던 Standard Peripheral Library와 유사하며, Register 셋팅에 직접 관여하는 API를 제공하여 훨씬 실행속도가 빠르다. 반면에, 칩셋마다 다른 Hardware와 Register에 맞게 코드를 달리 짜야 한다는 단점이 있다.

나는 퍼포먼스가 우선이므로, LL로 셋팅하겠다.
하지만, 안타깝게도 USB쪽은 LL 라이브러리를 제공하지 않는다. 아마도 USB는 Software Stack이 복잡해서 Low Layer로 제공하기 까다로워서 그런듯 하다.

이제 image를 클릭하여 코드를 생성한다.
이후의 테스트 코드 작성은 다음 장에서 다루도록 하겠다.

카테고리:

업데이트:

댓글남기기