책소개
현재 많은 대학에서 8비트 AVR 수업을 하고 있습니다. 필자가 근무하고 있는 대학에서도 오래전부터 Atmega 128 MCU AVR 수업을 해왔습니다. 기술이 발전함에 따라 기업에서는 ARM MCU를 많이 사용하고 있습니다. 임베디드 AVR 수업을 하는 학교는 이어서 ARM Cotex 수업을 하는 것이 학생들에게 산업체로 갔을 때 많은 도움이 되리라 생각됩니다. 그 이유는 Cotex ARM 가격이 많이 저렴하고, 다양한 메모리 용량과 32비트의 고성능의 기능을 갖추고 있고, 선택의 폭이 아주 넓기 때문입니다. 필자는 어떻게 하면 최소의 예산으로 학부 학생들이 흥미롭게 배울 수 있을까 하는 고민에서 이 책을 쓰게 되었습니다.
저자소개
〈이력〉
숭실대학교 전자공학과(학사)
숭실대학교 대학원 소프트웨어공학(석사)
숭실대학교 대학원 컴퓨터공학(공학박사)
LG정보통신 책임연구원
영동영보통신(주) 부사장/연구소장
HPNRT(주) 연구위원
유한대학교 전자공학과 겸임교수
〈수상〉
장영실상(IWF)
〈개발경력〉
No.7, 이동통신 IWF, 무선키폰, PABX, ISDN 교환기,
비상통화장치, 엘리베이터 원격감시 시스템,
에스컬레이터 보조브레이크 제어기 등 국내 다수의 특허를 보유
〈관심분야〉
임베디드 시스템, 자율주행자동차, 인공지능 의료 분야,
ARM Processor, RTOS, CAN통신, 암호통신보안,
사물인터넷, 음성통신, 데이터통신
목차
머리말
강의계획서 구성
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) 시험하기