b. 임베디드/STM32

[STM32F407VGT Discovery] GPIO LED점멸

로봇쟁이 2019. 6. 15. 00:41

이번에는 간단한 LED를 점멸해보겠습니다.

DISCOVERY보드는 LED가 아래와 같이 구성되어 있습니다.

PD12, 13, 14, 15HIGH신호를 주면 켜지게끔 되어있네요



그럼 이제 프로젝트를 생성해서 LED를 토글하는 프로젝트를 만들어보겠습니다.

일단 CubeIDE를 실행 후 STM32F407VGT6를 찾아서 프로젝트 생성하세요.

생성하면 LQFP타입 100핀짜리가 생성됩니다. ^^;

<!--[if !supportEmptyParas]--> <!--[endif]-->


그럼 그림처럼 LED가 연결된 포트를 클릭하여 GPIO_Output으로 설정하세요

 

Discovery보드에는 8MHz 크리스탈이 부착되어 있으므로 이를 사용하기 위하여 

RCC에 있는 High Speed Clock (HSE)를 하단과 같이 설정해 줍니다.







그리고 Clock Configuration 란에서 다음과 같이 클럭을 설정해줍니다.

Input Freq = 8로 수정 HSE 클릭하시고 HCLK(MHz) = 168 로 변경 후 엔터 치시면 자동으로 다 변경됩니다 ^^;



저는 GPIO LL드라이버를 사용하려고 했기 때문에

Project Manager -> Advanced Settings 우측에 보시면

RCCHAL, GPIOLL로 설정하세요

<!--[if !supportEmptyParas]--> <!--[endif]-->

프로젝트에서 Generate Code를 선택하시면 다음과 같은 목록이 왼쪽에 생성됩니다.




LED가 1초간격으로 점멸하는 코드입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
int main(void)
{
    /*USER CODE BEGIN 1*/
    /*USER CODE END 1*/
    /*MCU Configuration--------------------------------------------------------*/
    /*Reset of all peripherals,Initializes the Flash interface and the Systick.*/
    HAL_Init();
    /*USER CODE BEGIN Init*/
    /*USER CODE END Init*/
    /*Configure the system clock*/
    SystemClock_Config();
    /*USER CODE BEGIN SysInit*/
    /*USER CODE END SysInit*/
    /*Initialize all configured peripherals*/
    MX_GPIO_Init();
    /*USER CODE BEGIN 2*/
    /*USER CODE END 2*/
    /*Infinite loop*/
    /*USER CODE BEGIN WHILE*/
    while(1)
    {
        /*USER CODE END WHILE*/
        /*USER CODE BEGIN 3*/
        LL_GPIO_TogglePin(GPIOD,LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_14|LL_GPIO_PIN_15);
        HAL_Delay(1000);
    }
    /*USER CODE END 3*/
}


반응형