본문 바로가기

stm32 레지스터 직접 접근 (5. Exception / Interrupt [중요 레지스터들 Part 03])

반응형

관련글


잡동사니 세상 :: stm32 레지스터 직접 접근 (5. Exception / Interrupt [설명 & 코드 Part 01]) (tistory.com)

잡동사니 세상 :: stm32 레지스터 직접 접근 (5. Exception / Interrupt [인터럽트 설정 Part 02]) (tistory.com)


잡동사니 세상 :: stm32 레지스터 직접 접근 (소개) (tistory.com)

잡동사니 세상 :: stm32 레지스터 직접 접근 (0. Microcontroller와 ARM ) (tistory.com)

잡동사니 세상 :: stm32 레지스터 직접 접근 (1. STM32F10x란) (tistory.com)

잡동사니 세상 :: stm32 레지스터 직접 접근 (2. 프로그램 설치 및 설정) (tistory.com)

잡동사니 세상 :: stm32 레지스터 직접 접근 (3. RCC) (tistory.com)

잡동사니 세상 :: stm32 레지스터 직접 접근 (4. GPIO [Output]) (tistory.com)

잡동사니 세상 :: stm32 레지스터 직접 접근 (4. GPIO [Input]) (tistory.com)

잡동사니 세상 :: stm32 레지스터 직접 접근 (5. Exception / Interrupt [설명 & 코드 Part 01]) (tistory.com)

잡동사니 세상 :: stm32 레지스터 직접 접근 (5. Exception / Interrupt [인터럽트 설정 Part 02]) (tistory.com)


서론


외부인터럽트 EXTI를 사용하기 위해서는 여러가지 registers를 사용해야만했습니다. 이번 포스트에서는 인터럽트 시리즈를 마치면서 사용된 중요 Registers와 사용한 비트들의 의미들을 알아보고자합니다.


RCC

GPIOG

AFIO

EXTI

NVIC


참고 자료


STM32F103ZET6 Reference Manual

Section 7.3.7 [APB2 peripheral clock enable register] (112 ~ 114 page)

Section 9.2.1 [Port configuration register low] (171 page)

Section 9.2.4 [Port output data register] (173 page)

Section 9.4.4 [External interrupt configuration register 2] (191page)

Section 10.3.4 [Falling trigger selection register] (212 page)

Section 10.3.3 [Rising trigger selection register] (212 page)

Section 10.3.1 [Interrupt mask register] (211 page)

Section 10.3.6 [Pending register] (213 page)

 

STM32F10xxx/20xxx/21xxx/L1xxxx Cortex®-M3 programming manual

Section 4.3.2 [Interrupt set-enable registers] (120 page)

 

RCC


APB2ENR

Address: 0x18

Absolute address: 0x40021000 + 0x18

그림 01 (113 page)

IOPGEN: GPIOG에 클럭을 인가합니다.

AFIOEN: Alternate Function Input / Output 기능에 클럭을 인가합니다.

 

GPIOG


CRL

Address: 0x00

Absolute address: 0x40012000 + 0x00

그림 02 (171 page)

CNF6[1:0], MODE6[1:0]: PG6를 pull-up / pull-down 모드로 설정합니다. (1000)

 


ODR

Address: 0x0C

Absolute address: 0x40012000 + 0x0C

그림 03 (173 page)

ODR6: PG6에 High 신호를 보내 pull-up 모드로 설정합니다.

 

 

AFIO


EXTICR2

Address: 0x0C

Absolute address: 0x40010000 + 0x0C

그림 04 (191 page)

EXTI6: EXTI에 연결할 핀을 설정합니다. (0110)

0000 PA6
0001 PB6
0010 PC6
0011 PD6
0100 PE6
0101 PF6
0110 PG6

 

 

EXTI


FTSR

Address: 0x0C

Absolute address:  0x40010400 + 0x0C

그림 05 (212 page)

TR6: EXTI6가 Falling edge에서도 발생될 수 있도록 합니다.

 


RTSR

Address: 0x08

Absolute address:  0x40010400 + 0x08

그림 06 (212 page)

TR6: EXTI6가 Rising edge에서도 발생될 수 있도록 합니다.

 


IMR

Address: 0x00

Absolute address:  0x40010400 + 0x00

그림 07 (211 page)

MR6: EXTI6의 인터럽트 신호를 받아들일 준비를 합니다.

 


PR

Address: 0x14

Absolute address:  0x40010400 + 0x14

그림 08 (213 page)

PR6: EXTI6가 발생되었는지를 알려줍니다. 

EXTI6 Handler가 발생되면 (정확히는 EXTI9_5 Handler) PR register의 PR6는 0으로 초기화시켜줘야합니다.

 

NVIC


ISER0

Address: 0x00

Absolute address: 0xE000E100 + 0x00

그림 10 [Programming manual] (120 page)

SETENA[23]: EXTI6를 활성화합니다.

EXTI6의 고유 번호는 Interrupt vector table에 나와있는 것처럼 23번입니다.  

반응형