현재 많은 대학에서 8비트 AVR 수업을 하고 있습니다. 필자가 근무하고 있는 대학에서도 오래전부터 Atmega 128 MCU AVR 수업을 해왔습니다. 기술이 발전함에 따라 기업에서는 ARM MCU를 많이 사용하고 있습니다. 임베디드 AVR 수업을 하는 학교는 이어서 ARM Cotex 수업을 하는 것이 학생들에게 산업체로 갔을 때 많은 도움이 되리라 생각됩니다. 그 이유는 Cotex ARM 가격이 많이 저렴하고, 다양한 메모리 용량과 32비트의 고성능의 기능을 갖추고 있고, 선택의 폭이 아주 넓기 때문입니다. 필자는 어떻게 하면 최소의 예산으로 학부 학생들이 흥미롭게 배울 수 있을까 하는 고민에서 이 책을 쓰게 되었습니다.
학부 AVR 수업 관련 서적은 많이 있으나 ARM MCU 관련 대학교 실습교재는 많지 않습니다. ARM MCU 프로그래밍은 어려워서 대부분 대학원 과정에서 많이 다루는데 이 책은 아주 쉽게 배울 수 있는 것이 특징입니다. 이 책은 전문대학교, 4년제 대학 전자공학, 통신공학, 제어계측공학, 메카트로닉스, 전기공학, 정보보안과, 컴퓨터공학과 등에서 한 학기 실습수업용으로 활용할 수 있도록 짜여 있습니다. 뿐만 아니라 벤처기업, 중소기업에서 ARM MCU를 이용한 펌웨어 개발에도 유용하게 활용할 수 있도록 펌웨어 설계과정과 프로그램 개발방법 등을 제공하고 있습니다.
〈이 책의 구성〉
이 책은 크게 3부로 나누어져 있고 한 학기 15주 수업에 맞추어 15강으로 구성되어 있습니다.
제1부에서는 SW개발방법 UML과 STM32 컴파일러 환경구축으로 전반적인 소프트웨어개발프로세서와 Nucleo 보드 설명, 컴파일러 설치과정, UML(Unified Modeling Language)로 설계하는 방법, STM32CubeMX와 STM32CubeIDE 사용법과 프로젝터 생성하는 방법이 설명되어 있습니다.
제2부에서는 FreeRTOS 환경에서의 실습으로 멀티 Task 환경에서 프로그래밍하는 방법이 설명되어 있고, FreeRTOS 환경에서 모니터 프로그램 개발방법과 모니터 환경하에서 GPIO, 타이머, DHT-11, RTC 등의 실습 예제가 포함되어 있습니다.
제3부에서는 데이터 통신 관련된 실습으로 산업 현장에서 많이 사용하는 I2C 통신과 SPI, UART 통신, 자동차에서 많이 사용하고 있는 CAN 버스 통신, 마지막으로 TCP IP 서버와 클라이언트 실습 예제가 포함되어 있습니다.
〈이 책이 필요한 독자〉
❖ 대학교 전자공학, 정보통신공학, 컴퓨터공학, 제어 계측공학 실습 교재
❖ 마이크로프로세서 혹은 펌웨어 수업 수강을 하는 독자
❖ 32Bit Cortex-M ARM 프로세스에 관심이 많은 독자
❖ ARM 프로세서로 펌웨어 개발 프로젝터를 수행하는 독자
❖ FreeRTOS 환경에서 펌웨어 개발에 관심이 많은 독자
머리말
강의계획서 구성
Part I SW개발방법 UML과 STM 컴파일러 환경구축
1장 SW개발방법 및 ARM Processor
1.1 소프트웨어 개발방법
1) 소프트웨어란?
2) 소프트웨어의 특징
3) 소프트웨어 개발의 기본적인 활동
4) 개발 작업의 특징
5) 소프트웨어의 개발 프로세스
6) 단계적 프로세서
7) 단계적 프로세서와 산출물
8) 소프트웨어 개발비용 비중
1.2 ARM CPU 및 NUCLEO 보드
1) 마이크로프로세서와 마이크로컨트롤러
2) ARM(Advanced RISC Machines)이란?
3) RISC(Reduced Instruction Set Computer) 프로세스란?
4) STM32F429(144Pin)
5) STM32F429Zi ARM MCU 기능
6) NUCLEO 보드 소개
7) NUCLEO-F429Zi/F439Zi 보드 기능
2장 Cortex ARM IDE 환경구축
2.1 선행학습
1) STM32CubeMX 개요
2) STM32CubeIDE
2.2 학습도구 및 기자재
2.3 CubeMX 설치
1) CubeMX 개요
2) CubeMX 설치
3) CubeMX를 실행하고 사용법 익히기
2.4 STM32CubeIDE 설치
2.5 Debugging
2.6 부품 및 사용기기, 프로그램
2.7 예제 1: Project File 만들기 실습
1) CubeMX로 NUCLEO-F429Zi 선택한 후 Project 코드 만들기
2) 시험하기
3장 UML 소개와 LED Blinking
3.1 선행학습
1) UML의 개요
2) UML의 역사와 버전
3) UML 다이어그램
4) UML 모델링 절차
5) USE 케이스
6) 시퀀스 다이어그램
7) 상태 다이어그램
8) Activity Diagram
9) StarUML
3.2 학습도구 및 기자재
3.3 예제 1: LED Blinking
1) 사용자 요구사항 작성하기
2) UML Tool을 이용하여 Activity Diagram 작성하기
3) 구현하기
3.4 예제 2: Digital Input
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) 구현하기
4) 시험하기
4장 GPIO
4.1 선행학습
1) STM32 펌웨어 구성
2) HAL(Hardware Abstraction Layer) 드라이브
3) GPIO(General Purpose Input Output)
4) GPIO 설정용 구조체
5) GPIO Mode
6) Pull
7) Speed
8) GPIO 구동용 함수
9) 인터럽트 처리용 함수
10) GPIO 관련 함수
4.2 학습도구 및 기자재
4.3 예제 1: Switch 입력에 따른 LED 제어
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) 구현하기(CubeMX로 Project 만들기)
4) 시험하기
4.4 예제 2: 프린트문 사용하기
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) CubeMX로 Project를 만들고 code를 generate 한다.
4) 구현하기
5) main.c의 main(void) 함수에 다음과 같이 코딩한다.
6) 시험하기
5장 Analog 전압측정과 scanf
5.1 선행학습
1) ADC 블록다이어그램
2) STM32 ADC 기능
3) ADC 클럭
4) 단일변환모드
5) 연속변환모드
6) STM32CubeMX에서의 ADC 설정
5.2 학습도구 및 기자재
5.3 예제 1: ADC로 전압 표시하기
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) CubeMX로 Project 만들기
4) 구현하기
5) 시험하기
5.4 예제 2: scanf 기능 사용하기
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) CubeMX로 Project 만들기
4) 구현하기
5) 시험하기
6장 인터럽트와 USART
6.1 선행학습
1) 인터럽트의 개념
2) STM32F4xx 인터럽트 Vector Table
6.2 학습도구 및 기자재
6.3 예제 1: Interrupt 방식으로 Switch 처리
1) 사용자 요구사항 작성하기
2) UML Tool을 이용하여 Activity Diagram 작성하기
3) CubeMX를 실행하여 Project를 만들어보라.
4) 구현하기
5) 시험하기
6.4 예제 2: USART를 인터럽트 방식으로 사용
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) CubeMX로 Project 만들기
4) 구현하기
5) 시험하기
Part Ⅱ FreeRTOS 환경에서의 실습
7장 FreeRTOS
7.1 선행학습
1) RTOS의 개념
2) FreeRTOS란?
3) RTOS의 특징
4) Multitasking
5) Message Queue
6) 상용 OS와 FreeRTOS
7.2 학습도구 및 기자재
7.3 예제 1: FreeRTOS Task로 LED Blinking
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) CubeMX 구성하기
4) 구현하기
5) 시험하기
7.4 예제 2: FreeRTOS상에서 2개의 LED On/Off
1) 사용자 요구사항 작성하기
2) UML 작성하기
3) 구현하기
4) 시험하기
8장 FreeRTOS Monitor
8.1 선행학습
1) Monitor에 대한 개념
2) 큐(Queue)의 개념
8.2 학습도구 및 기자재
8.3 예제 1: FreeRTOS 환경에서 모니터 만들기
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) 구현하기
4) Code Generate가 다 끝나면 Open Folder로 들어가보자.
5) 시험하기
9장 Monitor Display Memory, Change Memory 실습
9.1 선행학습
1) STM32F429Zi Memory Map
9.2 학습도구 및 기자재
9.3 예제 1: 모니터 Display Memory 만들기
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) Display Memory Program 구현하기
4) 시험하기
9.4 예제 2: 모니터 Change Memory 만들기
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) 구현하기
4) 시험하기
10장 Timer 실습
10.1 선행학습
1) STM32F429Zi CPU Timer
2) STM32F429Zi CPU Timer 관련 블록다이어그램
3) Advanced-control Timer(Timer 1, Timer 8)의 기능
4) CubeMX Timer 설정
10.2 학습도구 및 기자재
10.3 예제 1: 100ms Timer 만들기
1) 사용자 요구사항 작성하기
2) UML Tool로 구현하기
3) 구현하기
4) 시험하기
10.4 예제 2: Interrupt 모드로 타이머 사용
1) 사용자 요구사항 작성하기
2) UML Tool로 구현하기
3) 구현하기
4) 시험하기
10.5 예제 3: PWM 모드로 Timer 사용
1) 사용자 요구사항 작성하기
2) UML 작성하기
3) 구현하기
4) 시험하기
11장 DHT-11 온습도 센서와 RTC 실험
11.1 선행학습
1) DHT-11 프로토콜
11.2 부품 및 사용기기, 프로그램
11.3 예제 1: DHT-11 실험
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) Project 만들기
4) 코딩하기
5) 시험하기
11.4 예제 2: RTC 실험
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) RTC, Alarm 구현하기
4) 시험하기
Part Ⅲ 데이터 통신 관련된 실습
12장 I2C, SPI 통신과 I2C LCD
12.1 선행학습
1) I2C LCD
2) I2C 통신방법
3) SPI 통신
12.2 학습도구 및 기자재
12.3 예제 1: I2C Loop 시험
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) I2C Loop 구현하기
4) 시험하기
12.4 예제 2: I2C LCD 실험
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) I2C LCD 구현하기
4) 시험하기
12.5 예제 3: SPI Loop 시험
1) 사용자 요구사항 작성하기
2) UML 작성하기
3) SPI Loop 구현하기
4) 시험하기
13장 USART통신
13.1 선행학습
1) 시리얼 통신 개념
2) RS-232 통신
3) RS-422 통신
4) RS-485 통신
13.2 학습도구 및 기자재
13.3 예제 1: 시리얼 통신 Loop 실험
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) CubeMX로 USART 환경 구성하여 구현하기
4) 시험하기
13.4 예제 2: 시리얼과 스마트폰 블루투스 통신
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) 구현하기
4) 시험하기
14장 CAN Bus 통신 실습
14.1 선행학습
1) 개요
2) CAN Bus 특징
3) CAN Bus 등장 배경
4) CAN BUS 네트워크 동작 원리
5) CAN 통신 프로토콜
14.2 학습도구 및 기자재
14.3 예제 1: CAN 통신 루프실험
1) 사용자 요구사항 작성하기
2) UML Tool로 Activity Diagram 설계하기
3) CAN 통신속도 250kbps 설정하기
4) 구현하기
5) 코딩하기
6) 시험하기
15장 TCP/IP Server와 Client 구현하기
15.1 선행학습
1) TCP Protocol
2) TCP Server와 Client
15.2 학습도구 및 기자재
15.3 예제 1: TCP-IP Lwip Ping 실습하기
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) 구현하기
4) 시험하기
15.4 예제 2: TCP-IP Server 실습하기
1) 사용자 요구사항 작성하기
2) UML 설계하기
3) 구현하기
4) 시험하기
15.5 예제 3: TCP-IP Client 실습하기
1) 사용자 요구사항 작성하기
2) UML Tool로 설계하기
3) 구현하기
4) 시험하기