【 이 책에서 다루는 내용은 다음과 같습니다. 】
◆ ARM Cortex 제품군 및 Cortex-M 제품군의 구성을 알아본다. ◆ Eclipse 와 GCC 컴파일러를 이용해 Windows / Linux 에서 개발 환경을 구축한다. ◆ 기본적인 GPIO 인터페이스를 학습하여 일반 입/출력을 제어한다. ◆ 인터럽트에 관한 기초 작업을 학습하고 외부 인터럽트를 제어한다. ◆ 디버깅 및 Trace 입/출력을 수행하며 여러 디버그 기법을 학습한다. ◆ STM32F103 칩의 클럭 초기화 과정을 학습한다. ◆ ARM의 시스템 틱 타이머와 STM32F103 칩의 일반 타이머를 다뤄본다. ◆ 시스템 타이머를 이용해 정확한 시간 지연 함수를 구현하고 일반 타이머로 7-세그먼트 디스플레이를 다룬다. ◆ UART 기능을 학습한다. ◆ 표준 입출력과 간단한 시스템 호출을 학습한다. 차례 1.1. ARM 프로세서 소개········································································································· 11 1.2. 시작하기 전에····················································································································· 18 1.2.1. 소프트웨어························································································································· 18 1.2.2. 하드웨어····························································································································· 19 1.2.3. 자료형································································································································· 19 2.1. 개발 환경의 구성 요소···································································································· 22 2.1.1. 소스 작성 및 컴파일······································································································· 23 2.1.2. 프로그램 내려 받기········································································································· 24 2.1.3. 디버깅································································································································· 25 2.2. 개발 환경 구축하기·········································································································· 27 2.2.1. 개발 도구 선택하기········································································································· 27 2.2.2. 디버깅 장비 선택하기····································································································· 28 2.2.3. 개발 환경 개요················································································································· 28 2.2.4. Windows 에서 기반 환경 구축하기············································································· 30 2.2.5. Linux 에서 기반 환경 구축하기···················································································· 41 2.2.6. Eclipse IDE 플러그인 설치 및 설정·············································································· 49 2.3. Hello World! 프로젝트··································································································· 56 2.3.1. 프로젝트 생성··················································································································· 56 2.3.2. OpenOCD 를 통한 JTAG 연결······················································································ 68 3.1. 다시 보는 ARM Hello····································································································· 85 3.1.1. delay_ms()·························································································································· 86 3.1.2. main()·································································································································· 88 3.2. 다른 포트로 출력하기··································································································· 108 3.2.1. APB2 분주기··················································································································· 108 3.2.2. 함정··································································································································· 110 3.3. GPIO 입력························································································································· 117 3.3.1. 입력 레지스터················································································································· 117 3.3.2. 미러링······························································································································· 118 3.3.3. 풀업 및 풀다운··············································································································· 122 3.4. 응용: 7-세그먼트 출력하기·························································································· 126 3.4.1. 7-세그먼트 개요············································································································· 126 3.4.2. 7-세그먼트 동작시키기································································································· 131 3.5. 도전 과제 - GPIO··········································································································· 139 3.5.1. 기본 과제························································································································· 139 3.5.2. 응용 과제························································································································· 139 4.1. 인터럽트(Interrupt)······································································································· 142 4.1.1. 인터럽트란 무엇인가?··································································································· 142 4.1.2. NVIC·································································································································· 149 4.2. 외부 인터럽트·················································································································· 180 4.2.1. 외부 인터럽트 개요······································································································· 180 4.2.2. 외부 인터럽트 예제······································································································· 189 4.2.3. 몇 가지 팁······················································································································· 202 4.3. 도전 과제 – 인터럽트··································································································· 206 4.3.1. 기본 과제························································································································· 206 4.3.2. 응용 과제························································································································· 206 5.1. 디버깅(Debugging) 개요···························································································· 209 5.1.1. 버그의 원인····················································································································· 209 5.1.2. 버그를 잡는 방법··········································································································· 209 5.2. Eclipse CDT 디버그 도구···························································································· 211 5.2.1. 간단한 실습····················································································································· 211 5.2.2. 디버그 구성 요소··········································································································· 218 5.2.3. 디버깅 명령····················································································································· 226 5.3. 디버깅 기법······················································································································· 232 5.3.1. 중단점 설정····················································································································· 232 5.3.2. 불필요한 구문 넘기기··································································································· 233 5.4. Trace··································································································································· 235 5.4.1. Trace 프로젝트················································································································ 235 5.4.2. 응용: 예외 추적·············································································································· 244 5.4.3. 디버깅 구문 들어내기··································································································· 246 5.5. 도전 과제 – 디버깅········································································································ 251 5.5.1. 기본 과제························································································································· 251 5.5.2. 응용 과제························································································································· 251 6.1. 타이머 / 카운터?············································································································ 254 6.1.1. 타이머에 클럭이 공급되기까지··················································································· 254 6.1.2. STM32F103 타이머······································································································· 282 6.2. 정확한 1초 시간 지연··································································································· 299 6.2.1. SysTick_1s 프로젝트······································································································ 299 6.2.2. TIM2_1s 프로젝트·········································································································· 307 6.3. 응용: 4자리 7-세그먼트 제어····················································································· 321 6.3.1. 4자리 7-세그먼트 개요································································································· 321 6.3.2. 4자리 7-세그먼트 디스플레이 제어 실제································································· 326 6.4. 도전 과제 – 타이머/카운터························································································· 332 6.4.1. 기본 과제························································································································· 332 6.4.2. 응용 과제························································································································· 332 7.1. U(S)ART 통신·················································································································· 335 7.1.1. U(S)ART? UART? USART?······························································································ 335 7.1.2. RS-232C? RS-485?········································································································ 336 7.1.3. 결선 방법························································································································· 338 7.2. STM32 MCU와 U(S)ART···························································································· 339 7.2.1. STM32 U(S)ART 개요···································································································· 339 7.2.2. 레지스터··························································································································· 342 7.2.3. 핀······································································································································· 351 7.3. U(S)ART 통신 코드······································································································· 353 7.3.1. U(S)ART 문자 송수신···································································································· 353 7.4. 응용: 문자열 출력과 표준 입출력············································································· 368 7.4.1. 일반적인 문자열············································································································· 368 7.4.2. 표준 입출력····················································································································· 371 7.5. 도전 과제 – U(S)ART··································································································· 380 7.5.1. 기본 과제························································································································· 380 7.5.2. 응용 과제························································································································· 380 8.1. ST flash loader··············································································································· 385 8.2. ARM 모듈 ST-CM3 V1.0 매뉴얼············································································· 391 8.3. 개발 보드 ST-CM3-A-MAIN V1.0 매뉴얼···························································· 402 8.4. I-OPENDBG-ARM V1.0 매뉴얼················································································· 409 8.5. 그림, 문서의 출처··········································································································· 418 8.5.1. 문서 출처························································································································· 418 8.5.2. 그림, 사진 출처·············································································································· 419
사용후기
상품문의
|