Home > Study > C Language > ARM System Programming > [ex39] #1 CMSIS 직접 접근을 통한 GPIOA LED 점멸 실습

[ex39] #1 CMSIS 직접 접근을 통한 GPIOA LED 점멸 실습
Study Language

문제 설명


CMSIS 기반 레지스터 접근 방식을 사용하여 GPIOA 핀을 직접 제어하는 LED 점멸 프로그램을 작성하라.

  • RCC 레지스터를 이용해 포트 A 클럭을 활성화
  • GPIOA의 CRL, ODR 레지스터를 직접 설정하여 LED ON/OFF 구현
  • LED 상태를 일정 시간 간격으로 토글하여 깜빡이도록 함

정답 코드


#include "device_driver.h"

void Main(void)
{
   volatile int i;

   Uart_Init(115200);
   Uart_Printf("CMSIS Based Register Define\n");

   // 이 부분은 수정하지 말 것
   RCC->APB2ENR |= (1<<2);

   // LED Pin을 출력으로 설정
   GPIOA->CRL = 0x600;

   for(;;)
   {
      // LED 모두 ON
      GPIOA->ODR = 0x0;
      for(i=0; i<0x40000; i++);

      // LED 모두 OFF
      GPIOA->ODR = 0x4;
      for(i=0; i<0x40000; i++);
   }
}

메모


printf 내부의 \n 습관화 필요