장바구니 담기 close

장바구니에 상품을 담았습니다.

Cortex M4 무작정 따라하기

Cortex M4 무작정 따라하기

  • 염호준
  • |
  • 사이버북스
  • |
  • 2020-02-25 출간
  • |
  • 329페이지
  • |
  • 188 X 257 mm
  • |
  • ISBN 9791190435086
판매가

25,000원

즉시할인가

24,250

배송비

2,300원

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
24,250

이 상품은 품절된 상품입니다

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평




■ 머리말
Cotrex시리즈의 등장으로 기존의 8비트 MCU의 대표적인 AVR에서 ARM사의 Cortex시리즈로 이동하고 있다. 그 이유는 흔히 말하는 가성비에서 많은 차이가 나기 때문이다. 아래표는 ATmega329 (AVR계열)와 STM32F373(Cortex 계열)을 비교하였다.

신호처리가 필요한 어플리케이션의 경우 부동소수점연산을 하드웨어적으로 처리할 수 있는 FPU(floating point processing unit)를 내장하고 있다는 것은 비교할 수 없을 정도의 성능의 차이가 난다.
32비트 MCU의 프로그래밍의 용이성

과거에 ARM7, ARM9, ARM11 시절에도 32비트 프로세서의 장점을 알면서도 고가이고 또한 레지스터직접지정방식으로 프로그래밍을 하기 위해서는 최소 5년 이상의 경력자만이 가능하였으므로, 중소기업이나 중견기업에서는 성능은 부족하지만 다루기 쉬운 AVR을 사용하였고, 대학에서도 역시 배우기 쉬운 AVR을 이용한 수업을 진행하였다.
그러나 Cortex 시리즈가 출시되면서 CMSIS(Cortex Microcontroller Software Interface Standard)와 SPL(Standard Peripheral Library)이 제공되면서 지금은 컴퓨터나 전자공학과가 아닌 학과에서도 GPIO, 타이머, PWM, DMA와 ADC, DAC, 그리고 UART등의 주변장치 사용방법에 대한 코딩교육이 한 학기에 이루어질 만큼 용이해졌다.

CMSIS는 ARM사에서 프로그래머가 이해하고, 사용하기 쉽게 정의를 해놓은 것이고, SPL은 이러한 CMSIS를 바탕으로 주변장치들의 동작에 필요한 함수등이 정의되어 있는 라이브러리이다. 그러므로 이 책에서는 레지스터를 직접처리하는 방식을 지양하고, SPL을 사용하여 아두이노와 같이 프로그램밍의 편의성을 위주로 구성하였다.

이 책은 라이브러리 및 예제가 잘 정의되어 있는 STMicroelectronics(이하 ST사)에서 제공하는 MCU중에 STM32F407을 사용하였다. MCU를 사용하기 위해 STM32F407VG와 ST-LINK라는 디버거까지 탑재한 STM32F407VG-DISC1의 디스커버리보드를 기반으로 예제프로그램을 구성하였다.

[이 책의 구성]
책의 순서는 1부에서 컴파일러, 디버거등 필요한 소프트웨어 설치방법 및 사용법에 대해 설명하고 2부에서는 기본적으로 사용되는 주변장치들 (RCC, GPIO, 타이머, 외부인터럽트)에 대해 설명하고 3부에서는 조금 난이도가 있는 주변장치들 (PWM, UART, ADC, DAC)을 설명하고 , HC-06을 이용하는 블루투스도 추가하였다. 각 챕터는 해당 주변장치의 개요를 설명하고 SPL방식의 예제를 작성 및 실행해보고, 각각의 예제를 한줄 한줄 설명하는 방식으로 구성되어있다.

아울러 교재에 대한 추가설명 및 필요한 자료등은 아래 네이버 블로그에 업로드할 예정이다. 또한 문의사항이나 의견도 올려주기 바란다. https://blog.naver.com/hojoonmk


목차


제1부 개발환경 설치 및 Keil uVision 사용하기 1
1. 개발환경 설치 3
2. uVision 컴파일러 설정 및 새 프로젝트 생성하기 29
3. MCU 프로그래밍의 3가지방식 65

제2부 예제를 따라하며 기본주변장치 이해하기 75
4. RCC와 GPIO 77
5. 타이머 113
6. EXTI 143

제3부 예제를 따라하며 다양한 주변장치 이해하기 165
7. PWM 167
8. UART 181
9. ADC 235
10. DAC 259
11. DMA 277

제2부 예제를 따라하며 기본주변장치 이해하기 75

4. RCC와 GPIO 77
4.1 RCC 및 GPIO 개요 77
4.1.1 RCC 77
4.1.2 GPIO와 해당 핀 79
4.1.3 GPIO와 AFIO 80
4.1.4 STM32F407 보드에 연결된 GPIO 81
4.2 GPIO를 이용한 스위치입력과 LED 점멸 82
4.2.1 하드웨어 구성 및 동작 82
4.2.2 실행 82
4.2.3 main.c 소스코드 83
4.2.4 소스코드 분석 84
4.3 GPIO의 출력과 시간지연을 통한 LED 깜빡이기 89
4.3.1 하드웨어 구성 및 동작 89
4.3.2 실행 89
4.3.3 main.c 소스코드 90
4.3.4 소스코드 분석 91
4.4 자주 사용되는 함수를 Header 파일에 정의 92
4.5 시스템 클럭과 주변장치 클럭에 관하여 98
4.6 RCC와 GPIO의 추가설명 99
4.6.1 풀업 99
4.6.2 풀다운 100
4.6.3 푸시풀 (Push-Pull) 101
4.6.4 RCC사용시 각 주변장치에 속한 버스 102
4.6.5 GPIO_Write 함수 104
4.7 SPL에 정의되어 있는 함수를 사용하기 위한 구조체의 이해 104
4.7.1 구조체와 SPL 함수 104
4.7.2 구조체 선언 105
4.7.3 SPL에서의 구조체 선언 108
4.8 펌웨어 프로그래밍에서 사용되는 volatile과 uint32_t 110

5. 타이머 113
5.1 인터럽트 개요 113
5.2 타이머 개요 118
5.3 타이머를 이용한 LED 점멸 프로그램 118
5.3.1 하드웨어 구성 및 동작 118
5.3.2 실행 119
5.3.3 main.c 소스코드 119
5.3.4 소스코드 분석 120
5.4 타이머함수를 이용하여 아두이노 millis 함수를 구현하기 127
5.5 타이머 2개를 동시에 사용하기 130
5.5.1 하드웨어 구성 및 동작 130
5.5.2 실행 130
5.5.3 main.c 소스코드 131
5.5.4 소스코드 분석 132
5.6 SysTick 타이머 136
5.6.1 하드웨어 구성 및 동작 136
5.6.2 실행 137
5.6.3 main.c 소스코드 137
5.6.4 소스코드 분석 138
5.6.5 타이머 인터럽트 핸들러 이름과 설명 141

6. EXTI 143
6.1 EXTI 개요 143
6.2 EXTI와 타이머 인터럽트를 이용한 프로그램 144
6.2.1 하드웨어 구성 및 동작 144
6.2.2 실행 145
6.2.3 main.c 소스코드 146
6.2.4 소스코드 분석 149
6.2.5 main.h 에 외부인터럽트 설정 추가 156
6.3 EXTI 추가설명 162

제3부 예제를 따라하며 다양한 주변장치 이해하기 165

7. PWM 167
7.1 PWM 개요 167
7.2 PWM을 이용한 LED 밝기 조절 168
7.2.1 하드웨어 구성 및 동작 168
7.2.2 실행 169
7.2.3 main.c 소스코드 169
7.2.4 소스코드 분석 172
7.3 PWM 출력 확인 178

8. UART 181
8.1 UART 개요 181
8.2 USB-to-Serial 변환보드와 시리얼통신 소프트웨어 설정 및 통신 184
8.3 STM32F407 보드와 PC의 UART통신을 통한 에코 프로그램 190
8.3.1 하드웨어 구성 및 동작 190
8.3.2 실행 192
8.3.3 main.c 소스코드 192
8.3.4 소스코드 분석 194
8.4 STM32F407 보드와 PC의 UART통신을 통한 LED 제어 프로그램 199
8.4.1 하드웨어 구성 및 동작 199
8.4.2 실행 199
8.4.3 main.c 소스코드 200
8.4.4 main.c 소스코드 분석 203
8.5 PC의 UART통신을 위한 printf 사용 205
8.5.1 하드웨어 구성 및 동작 206
8.5.2 실행 206
8.5.3 main.c 소스코드 206
8.6 블루투스모듈 설정 및 APP설치 211
8.6.1 블루투스 211
8.6.2 AT명령어 212
8.6.3 HC-06 연결 220
8.6.4 안드로이드 앱설치 221
8.7 시리얼 통신과 블루투스통신을 이용하여 PC와 스마트폰에 printf로 동일 문자열을 표시하기 227
8.7.1 하드웨어 구성 및 동작 227
8.7.2 실행 227
8.7.3 main.c 소스코드 227
8.7.4 실행결과 233

9. ADC 235
9.1 ADC 개요 235
9.1.1 SA ADC 과정 개념 설명 235
9.1.2 아날로그 전압값을 디지털값으로 변환하는 과정 238
9.1.3 샘플&홀드(Sample and Hold) 회로 241
9.2 ADC를 통한 전압변화 측정 243
9.2.1 하드웨어 구성 및 동작 243
9.2.2 실행 244
9.2.3 main.c 소스코드 244
9.2.4 소스코드 분석 247
9.3 여러 채널의 ADC 사용시 참조 258

10. DAC 259
10.1 DAC 개요 259
10.2 DAC를 통한 삼각파출력 261
10.2.1 하드웨어 구성 및 동작 261
10.2.2 실행 261
10.2.3 main.c 소스코드 261
10.2.4 소스코드 분석 263
10.2.5 출력파형 268
10.2.6 프로그램 변경을 통한 DAC 이해 269
10.3 DAC를 통한 정현파출력 269
10.3.1 하드웨어 구성 및 동작 269
10.3.2 실행 269
10.3.3 main.c 소스코드 270
10.3.4 소스코드 분석 271
10.3.5 동작 확인 274
11. DMA 277
11.1 DMA 개요 277
11.2 DMA를 통한 ADC예제 282
11.2.1 하드웨어 구성 및 동작 282
11.2.2 실행 283
11.2.3 main.c 소스코드 284
11.2.4 소스코드 분석 287

부 록 293

A1. STMstudio 다운로드 및 설치하기 295
A2. STMstudio 사용하기 301
B STM32F407 최대 클럭스피드를 사용하기 위한 system_stm32f4xx.c 변경 프로그램 311

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.