b. 임베디드/STM32
[STM32F407VGT Discovery] GPIO LED점멸
로봇쟁이
2019. 6. 15. 00:41
이번에는 간단한 LED를 점멸해보겠습니다.
DISCOVERY보드는 LED가 아래와 같이 구성되어 있습니다.
PD12, 13, 14, 15에 HIGH신호를 주면 켜지게끔 되어있네요.
그럼 이제 프로젝트를 생성해서 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 우측에 보시면
RCC는 HAL, GPIO는 LL로 설정하세요
<!--[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*/
} |
반응형