stm32f4 디스커버리 보드 내장 LED 켜기

nairil·2022년 12월 13일
0

stm32

목록 보기
2/2
post-thumbnail

stm32f4 디스커버리 보드를 사용해서 내장 led를 켜보기 위해서는 설정해야 할 레지스터가 많다.

  1. AHB1 활성화 레지스터
    데이터시트에 따르면 GPIOA ~ GPIOI 포트까지는 AHB1로 연결되므로
    메모리 맵의 RCC에 해당하는 주소인 0x40023800를 찾고
    AHB1 활성화 레지스터인 RCC_AHB1ENR의 오프셋 0x30을 이용해서 GPIOD에 해당하는 3번째 인덱스의 데이터를 변경하면 활성화가 가능하다
uint32_t *pAHB1EnReg = (0x40023800 + 0x30);

*pAHB1EnReg &= (1<<3);
  1. GPIOD 포트 활성화 레지스터 (GPIOx_MODER)
  • GPIOD의 PD12에 연결된 내장 LED를 켜기 위해서는 모드 레지스터에서 해당 포트를 output 모드로 설정해주어야 한다.
  • 메모리 맵에 GPIOD에 해당하는 주소인 0x40020C00 + 레지스터 오프셋 0x00 을 더하여 주소를 찾고
  • 아래 사진에서 MODER12를 01로 바꾸어주면 포트D를 출력 모드로 변경 가능함
uint32_t *pGPIODModeReg = 0x40020C00 + 0x00;
*pGPIODModeReg &= ~(3 << 24); // 초기화
*pGPIODModeReg |= (1 << 24); // 모드 설정
  1. GPIOD 출력 데이터 레지스터 설정(GPIOx_ODR)
  • 위와 같은 구조를 가지고 있으며
  • 주소는 위와 동일하게 0x40020C00 + 주소 오프셋 0x14
uint32_t *pGPIODOutReg = 0x40020C00 + 0x14;

*pGPIODOutReg |= (1 << 12); // 켜기
*pGPIODOutReg &= ~(1 << 12); // 끄기

위 코드들을 사용하면 LED를 켜고 끌 수 있다.

profile
fw 개발

0개의 댓글