Brise

STM32F429-DISC1 디스커버리 보드 BSP와 CubeMX 연동하여 사용하기 본문

MCU

STM32F429-DISC1 디스커버리 보드 BSP와 CubeMX 연동하여 사용하기

naudhizb 2017. 11. 11. 23:57
반응형

디스커버리 보드의 BSP는 사용자에게 여러 기능들을 편리하게 사용할 수 있는 기능들을 제공하지만, 예제 프로젝트가 CubeMX기반이 아니다 보니 유저가 설정을 추가하거나 바꾸기 힘든 부분이 있습니다.


때문에 CubeMX로 생성하고 BSP설정을 추가하는 노가다를 해야하는데, 이 부분의 수고를 덜기 위해 CubeMX프로젝트에 BSP을 추가하여 연동하는 방법을 이 포스트에서 소개합니다. 




전체 프로젝트를 올리면 편하겠지만, 용량 문제로 필요한 파일만 업로드 합니다. 



1. CubeMX를 설치합니다.


2. 첨부된 파일을 이용하여 프로젝트 코드를 생성합니다. (프로젝트 생성 디렉토리 변경 필요)

BSP_default.ioc

3. 생성된 프로젝트를 엽니다. 


4. BSP 관련 파일을 추가합니다.


C:\Users\${UserName}\STM32Cube\Repository\STM32Cube_FW_F4_V1.17.0\Drivers\BSP

폴더를 프로젝트의 Drivers 폴더 아래에 복사



C:\Users\${UserName}\STM32Cube\Repository\STM32Cube_FW_F4_V1.17.0\Utilities

폴더를 프로젝트 아래 복사


후 관련 있는 폴더만 남깁니다.


BSP/Components

BSP/STM32F429I-Discovery

Utilities/Fonts



5. 프로젝트 설정 변경


Properties --> C/C++ Build --> Behavior 탭 --> Enable parallel build 체크


Properties -> C/C++ General --> Paths and Symbols --> Source Location 

Add Folder에 Utilities 폴더 추가


Utilties/Fonts 아래 있는 font*.c 파일 선택(fonts.h 빼고 나머지)

마우스 오른쪽 버튼 누르고 Resource Configuration--> Exclude from build-->Select All--> OK


Properties -> C/C++ General --> Paths and Symbols --> Includes --> Languages에서 GNU C 선택

--> Add.. --> Drivers/BSP/STM32F429I-Discovery 추가 



6. BSP 테스트 코드 추가


main.c에서



/* USER CODE BEGIN Includes */

#include "stm32f429i_discovery.h"

#include "stm32f429i_discovery_lcd.h"

#include "stm32f429i_discovery_ts.h"

/* USER CODE END Includes */




/* USER CODE BEGIN 2 */

BSP_LED_Init(LED3);

BSP_LED_Init(LED4);

BSP_LCD_Init();

BSP_LCD_LayerDefaultInit(LCD_BACKGROUND_LAYER, LCD_FRAME_BUFFER);

BSP_LCD_LayerDefaultInit(LCD_FOREGROUND_LAYER, LCD_FRAME_BUFFER);

BSP_LCD_SelectLayer(LCD_FOREGROUND_LAYER);

BSP_LCD_DisplayOn();

BSP_LCD_Clear(LCD_COLOR_WHITE);

BSP_LCD_SetTextColor(LCD_COLOR_DARKGRAY);

/* USER CODE END 2 */



  /* USER CODE BEGIN WHILE */

  while (1)

  {

   BSP_LCD_SetTextColor(LCD_COLOR_DARKGRAY);

   BSP_LCD_DisplayStringAtLine(1,(uint8_t*)"TEST LINE 1");

   BSP_LED_Toggle(LED3);

   HAL_Delay(1000);

   BSP_LCD_Clear(LCD_COLOR_WHITE);

   BSP_LED_Toggle(LED4);

   char str[100] = "ST-Link VCP\n\r";

   HAL_UART_Transmit(&huart1, str, strlen(str), 0xFFFF);

   HAL_Delay(1000);

  /* USER CODE END WHILE */




이후 빌드 후 플래싱 하여 테스트합니다.



STM32F429I-DISC1에서는 ST-LINK를 이용한 VCP를 지원합니다. 

장치관리자에 있는 STMicroelectronics STLink Virtual COM Port(COM??)에 맞는 포트를 찾아 UART연결(여기서는 115200 baudrate)하면 메세지가 뜹니다. 


반응형
Comments