Brise
[STM32CubeMX] STM32F429-DISC0 LCD 출력하기 본문
위와 같이 설정하고 프로젝트 코드를 생성하면(필자의 경우 TrueStudio) 설정한 폴더에 코드가 생성됩니다..
생성된 코드는 비록 우리가 Discovery보드로 설정을 했더라도, Discovery 보드에서 사용할 수 있는 BSP코드들을 자동으로 포함해주지 않습니다.
때문에 수동으로 BSP관련 코드들을 넣어주어야 합니다.
이를 위하여 펌웨어를 저장한 폴더로 접근합니다.
STM32CubeMX에서는 기본적으로 사용자의 폴더 아래에 펌웨어를 저장합니다.
(C:\Users\${사용자 이름}\STM32Cube\Repository\STM32Cube_FW_F4_V1.16.0)
펌웨어 폴더는 다음과 같습니다.
우리가 복사해야할 폴더는
Driver/BSP/Components
Driver/BSP/STM32F429I-Discovery
Utilities
입니다.
해당 폴더를 복사하여 프로젝트가 생성된 폴더에 붙여넣어줍시다.
붙여 넣은 후 프로젝트를 실행하면 다음과 같은 트리로 프로젝트가 나옵니다.
이제 붙여넣은 BSP 폴더에 대한 Include Path를 잡아줍니다.
프로젝트를 선택한 뒤 Properties(M-<ENTER>) 를 누른뒤
C/C++ General -> Paths and Symbols를 선택한뒤
Include탭에 Add를 클릭 Workspace를 선택한뒤 프로젝트의 Driver/BSP/STM32F429I-Discovery를 선택합니다.
결과는 다음과 같습니다.
다음으로 LCD를 구동하기 위한 예제 코드를 만듭니다.
/Driver/BSP/STM32F429I-Discovery 아래 있는 파일들을 참고하면 비교적 쉽게 만들 수 있습니다.
include, 초기화, while구문을 작성하여 LCD를 사용할 수 있다.
작성 코드는 다음과 같다.
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "stm32f4xx_hal.h" /* USER CODE BEGIN Includes */ #include "stm32f429i_discovery_lcd.h" /* USER CODE END Includes */ /* Private variables ---------------------------------------------------------*/ DMA2D_HandleTypeDef hdma2d; I2C_HandleTypeDef hi2c3; LTDC_HandleTypeDef hltdc; SPI_HandleTypeDef hspi5; TIM_HandleTypeDef htim2; SDRAM_HandleTypeDef hsdram1; /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); void Error_Handler(void); static void MX_GPIO_Init(void); static void MX_DMA2D_Init(void); static void MX_FMC_Init(void); static void MX_I2C3_Init(void); static void MX_LTDC_Init(void); static void MX_SPI5_Init(void); static void MX_TIM2_Init(void); /* USER CODE BEGIN PFP */ /* Private function prototypes -----------------------------------------------*/ /* USER CODE END PFP */ /* USER CODE BEGIN 0 */ /* USER CODE END 0 */ 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(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA2D_Init(); MX_FMC_Init(); MX_I2C3_Init(); MX_LTDC_Init(); MX_SPI5_Init(); MX_TIM2_Init(); /* USER CODE BEGIN 2 */ 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); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { BSP_LCD_SetTextColor(LCD_COLOR_DARKGRAY); BSP_LCD_DisplayStringAtLine(1,(uint8_t*)"TEST LINE 1"); BSP_LCD_DisplayStringAtLine(2,(uint8_t*)"TEST LINE 2"); BSP_LCD_DisplayStringAtLine(3,(uint8_t*)"TEST LINE 3"); BSP_LCD_DisplayStringAtLine(4,(uint8_t*)"TEST LINE 4"); BSP_LCD_DisplayStringAtLine(5,(uint8_t*)"TEST LINE 5"); HAL_Delay(1000); BSP_LCD_Clear(LCD_COLOR_WHITE); HAL_Delay(1000); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } | cs |
'MCU' 카테고리의 다른 글
STM32F429-DISC1 디스커버리 보드 BSP와 CubeMX 연동하여 사용하기 (0) | 2017.11.11 |
---|---|
[STM32CubeMX] STM32F429-DISC0 엔코더값 입력받기(quadrature encoder pulse) -2 (0) | 2017.04.29 |
[STM32CubeMX] STM32F429-disc0 엔코더값 입력받기(quadrature encoder pulse) -1 (0) | 2017.04.28 |
[atmega128] RC servo 예제 (0) | 2017.04.22 |
[atmega128] adc 예제 (0) | 2017.04.22 |
아트메가 인공호흡용 아두이노 소스 (0) | 2017.04.15 |
STM32F429-DISCO TrueStudio 프로젝트 기본 템플릿 (0) | 2016.07.11 |