본문 바로가기

개발/임베디드

ARM Cortex M3 프로그래밍1 - 기본 팁, GPIO, UART 제어

반응형

ARM M3 프로세서

 

 

 

- 기본 환경 세팅 -

1. TeraTerm 설치

2. IAR Embedded Workbench IDE 설치

3. 테라텀에서 보드 연결 확인(장치관리자를 통해 com4~)

4. 구현한 코드 빌드해서 .bin파일을 TeraTerm 통해서 Y모뎀 전송

 

 

 

- RISC -> 명령어 크기를 줄여서 전력 down

 

- 저전력 프로세서 -> IoT에 활용 가능한 이점

 

- GPIO 입출력 제어 -> 각종 포트, LED, Key, Memory Mapped I/O를 이용한 메모리 접근

- 비트별 SET-RST 레지스터 제공: 비트연산 없이 빠르게 GPIO 비트 제어 (GPIOx->BSRR)

- 비트별 RESET 레지스터 제공:  "  (GPIOx->BRR)

- PORT 설정 잠금 기능

: 실수 방지를 위한 LOCK 필요 (GPIOx->LCKR)

 

- 비트 밴딩: 일반 비트 연산보다 빠른 비트제어

 

- 시간 지연용으로 for문 이용할 때, for문에 사용되는 변수는 volatile 선언하여 최적화 방지

 

- volatile 필요한 경우 (프로세스 외부적으로 바뀔 가능성이 있는 곳에 volatile적용!

- Memory Mapped I/O: 하드웨어적인 원인으로 값 변경되는 경우

- IPC: 다른 프로세스에서 그 값을 변경하는 경우

- DMA에 의한 전송: DMA 사용하여 데이터 이동하는 경우 (CPU는 그러한 메모리 변화를 알 수 없음)

- 인터럽트 처리루틴: 인터럽트 처리루틴과 Main 루틴의 공유 변수의 경우

컴파일러는 인터럽트 처리 함수가 CPU 호출 함수인지 알 수 없음

- 멀티코어: 다른 코어가 변수 변경하는 경우

 

- ARM CMSIS(Cortex Microcontroller Software Interface Standard)

: 제조사와 무관하게 호환성을 위한 공통의 함수 제공 목적 (독립적인 디바이스 인터페이스)

: ARM이 CMSIS 기반 레지스터 정의 및 헤더 제공

-> 덕분에 RTOS 커널을 그대로 보드에 올릴 수 있음

-> 제조사 독립적인 기능을 제공하여 코드 호환성 유지 (제조사가 달라져도 포팅하기 수월해짐)

 

- Clock Enable

- AHB

: RCC->AHBENR: AHB에 속한 주변장치들의 clock을 ON-off

: 주변장치 사용 전에 반드시 해당 장치 clock ON

- APB1

: RCC->APB1ENR: APB1 " "

- APB2

: RCC->APB2ENR: APB2 " "

 

 

- Peripheral Reset

- APB1

: RCC->APB1RSTR: APB1에 속한 주변 장치들을 RESET

- APB2

: RCC->APB2RSTR: APB2 " "

 

- USART

- USARTx->CR1: USART의 기본적인 동작 설정

->CR2: 주로 LIN에 관한 설정

->CR3: 흐름제어 및 IrDA, Smart Cart 설정

->BRR: Baud Rate 제어

->SR: 상태 확인

->DR: 송수신 데이터 읽거나 쓰는 역할

 

 

타이머와 카운터, NVIC, 인터럽트, DMA는 다음 게시글로 작성합니다.

 

 

 

 

 

 

https://developer.arm.com/ip-products/processors/cortex-m/cortex-m3

 

본 게시글은 개인 공부용으로 작성하여 내용의 퀄리티가 부족할 수 있습니다. 

상세한 회로도나 스펙을 보시려면 arm 매뉴얼 참고 바랍니다.

반응형

'개발 > 임베디드' 카테고리의 다른 글

RTOS 3 - ECB  (0) 2021.05.12
RTOS 2 - uC/OS 실시간 커널 구조  (0) 2021.05.12
RTOS 1 - 개요  (0) 2021.05.12
ARM Cortex M3 프로그래밍3 - 인터럽트, NVIC, DMA  (0) 2021.05.12
ARM Cortex M3 프로그래밍2 - 카운터, 타이머  (0) 2021.05.12