본문 바로가기

이론/AVR

무이메이커스_[Cortex-m4 / stm32/mbed] 코르텍스 개발환경구축 & blink 예제실행

안녕하세요 헬스케어 제품 개발회사 허니컴의 무이메이커스 입니다.

오늘은 STM32(cortex-M4)를 다뤄보도록 하겠습니다.

< STM32란? >

STM32는 ST마이크로일렉트로닉스(STMicroelectronics)사가 개발한 MCU(마이크로컨트롤러)로

Cortex-M을 기반으로 제작되었습니다.

 

< Cortex란? >

ARM사에서 1985년 처음으로 ARM1프로세서를 개발하였습니다.

시간이 지나 ARM사는 ARMv7아키텍처의 코어를 갖는 프로세서에

처음으로 Cortex라는 이름을 사용하였습니다.

 

Cortex는 A,R,M 시리즈가 있습니다. 세개 시리즈의 특징과 용도를 아래표와 같습니다.

 

 

Cortex-A

Cortex-R

Cortex-M

설계 방향

높은 클럭 주파수

긴 파이프라인

고 성능

멀티미디어 지원용

높은 클럭 주파수

중간길이 파이프라인

빠른 인터럽트 처리

짧은 파이프라인

저전력

빠른 인터럽트 처리

시스템의 특징

MMU(Memory Management Unit)

캐시 메모리

ARM TrustZone 보안

MPU(Memory Protection Unit)

캐시 메모리

TCM(Tightly Coupled Memory)

MPU(Memory Protection Unit)

NVIC(Nested Vectored Interrupt Controller)

사용 용도

스마트 폰

모바일 컴퓨팅

산업용 마이크로컨트롤러

자동차

마이크로컨트롤러

임베디드 시스템

출처 : STM32F 시리즈를 이용한 ARM Corex-M3/M4 구조와 응용 - 홍릉과학출판사

 

<사용할 보드>

STM32F469I-DISCO 디스커버리 보드 (Cortex -M4기반)

보드의 보드의 특징과 설명은 첨부파일의 사용자 매뉴얼을 확인해주시기 바랍니다.

en.DM00218846.pdf
1.59MB

 

<개발환경 구축 & 예제 다운로드>

개발환경의 종류에는 Keil, IAR, AC6, TrueStudio, STM32CubeIDE, ARM mbed online등이 있습니다.

이중에서 ARM mbed online을 사용하여 개발해보겠습니다.

1) Mbed 홈페이지에 들어갑니다.

https://www.mbed.com/en/

 

2) 로그임 / 회원가입을 합니다.

 

3) 오른쪽 상단 사람모양 아이콘 => [My console]을 클릭합니다.

 

4) 홈페이지 하단 My hardware에 내가가진 모듈, 보드를 추가합니다.

< 보드가 추가된 모습 >

 

 

5) 오른쪽 상단 사람모양 아이콘 옆 [Compiler]를 클릭합니다.

 

 

6) Workspace창이 뜨면 왼쪽 위 [New]버튼을 눌러서 Platform에 내가 사용하고자 하는 보드가 있는지 확인 후, Template에서 원하는 예제를 선택합니다.

< 예제의 종류들>

 

 

7) 생성된 프로그램 하위의 [main.cpp]를 열면 선택한 예제의 코드를 확인할 수 있습니다.

 

8) 중앙 상단에 [Compile]을 클릭하면 .bin 확장자의 파일이 생성됩니다.

 

9) 보드를 컴퓨터와 연결하고 '내 PC'에서 보드가 연결된 것을 확인합니다.

 

 

10) 코드를 보드에 다운로드 하는방법

: 8번에서 생성된 bin파일을 9번에서 확인한 E드라이브에 붙여넣기 합니다.

 

 

 

 

 

<예제 소스코드>

모듈 전면의 4개의 LED가 200ms간 꺼있고, 1sec간 켜있는 동작을 반복합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "mbed.h"
 
DigitalOut led_green(LED1);
DigitalOut led_orange(LED2);
DigitalOut led_red(LED3);
DigitalOut led_blue(LED4);
 
int main() {  
    while(1) {
        // WARNING: LEDs are OFF
        led_green = 1;
        led_orange = 1;
        led_red = 1;
        led_blue = 1;
        wait(0.2); // 200 ms
        // WARNING: LEDs are ON
        led_green = 0;
        led_orange = 0;
        led_red = 0;
        led_blue = 0;
        wait(1.0); // 1 sec
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

<예제 동작확인>

 

 

 

 

 

 

.....................................................................................................................................................

시제품 제작 문의