STemWin是SEGGER公司授权给ST(意法半导体)的。使用ST芯片的用户可以免费使用STemWin。
下F7的CUBE中就有STemWin的目录
我的在F:\360Downloads\STM32Cube_FW_F7_V1.5.0\Middlewares\ST\STemWin
先建立两个工程子目录:
GUI_CONFIG
GUI_LIB
得用个能显示图片的例程就选上次的JPEG,这样图像初始化就省下了
工程路径:
F:\360Downloads\STM32Cube_FW_F7_V1.5.0\Projects\STM32F769I-Discovery\Examples\JPEG\JPEG_DecodingUsingFs_DMA
在GUI_LIB子目录中加入库文件:
STemWin532_CM7_IAR.a
路径:F:\360Downloads\STM32Cube_FW_F7_V1.5.0\Middlewares\ST\STemWin\Lib
在GUI_CONFIG中加入如下:
STM32769I_DISCO_STemWin_Addons_IAR.a
路径F:\360Downloads\STM32Cube_FW_F7_V1.5.0\Projects\STM32F769I-Discovery\Demonstration\STemWin_Addons
GUI_X.c
路径F:\360Downloads\STM32Cube_FW_F7_V1.5.0\Projects\STM32F769I-Discovery\Demonstration\Config
GUIConf.c
路径F:\360Downloads\STM32Cube_FW_F7_V1.5.0\Projects\STM32F769I-Discovery\Demonstration\Config
LCDConf_CmdMode_TE.c
路径:F:\360Downloads\STM32Cube_FW_F7_V1.5.0\Middlewares\ST\STemWin\OS
加完后的情况如下图:
然后在MAIN.c中修改下显示的内容:
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stm32F769i_discovery.h"
#include "stm32F769i_discovery_ts.h"
#include "GUI.h"
/** @addtogroup STM32F7xx_HAL_Examples
* @{
*/
/** @addtogroup JPEG_DecodingUsingFs_DMA
* @{
*/
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#if (JPEG_RGB_FORMAT == JPEG_ARGB8888)
#define BYTES_PER_PIXEL 4 /* Number of bytes in a pixel */
#elif (JPEG_RGB_FORMAT == JPEG_RGB888)
#define BYTES_PER_PIXEL 3 /* Number of bytes in a pixel */
#elif (JPEG_RGB_FORMAT == JPEG_RGB565)
#define BYTES_PER_PIXEL 2 /* Number of bytes in a pixel */
#else
#error "unknown JPEG_RGB_FORMAT "
#endif /* JPEG_RGB_FORMAT */
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
FATFS SDFatFs; /* File system object for SD card logical drive */
char SDPath[4]; /* SD card logical drive path */
FIL JPEG_File; /* File object */
uint32_t JpegProcessing_End = 0;
static uint32_t LCD_X_Size = 0;
JPEG_HandleTypeDef JPEG_Handle;
static DMA2D_HandleTypeDef DMA2D_Handle;
static JPEG_ConfTypeDef JPEG_Info;
/* Private function prototypes -----------------------------------------------*/
static void SystemClock_Config(void);
static void LCD_BriefDisplay(void);
static void LCD_FileErrorDisplay(void);
static void DMA2D_CopyBuffer(uint32_t *pSrc, uint32_t *pDst, uint16_t x, uint16_t y, uint16_t xsize, uint16_t ysize);
static void CPU_CACHE_Enable(void);
extern void LCD_SetUpdateRegion(int idx);
extern void LCD_ReqTear(void);
extern void DSI_IRQHandler(void);
/* Private functions ---------------------------------------------------------*/
/**
* [url=home.php?mod=space&uid=247401]@brief[/url] Main program
* @param None
* @retval None
*/
int main(void)
{
uint32_t xPos = 0, yPos = 0;
uint8_t lcd_status = LCD_OK;
/* Enable the CPU Cache */
CPU_CACHE_Enable();
/* STM32F7xx HAL library initialization:
- Configure the Flash ART accelerator on ITCM interface
- Systick timer is configured by default as source of time base, but user
can eventually implement his proper time base source (a general purpose
timer for example or other time source), keeping in mind that Time base
duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and
handled in milliseconds basis.
- Set NVIC Group Priority to 4
- Low Level Initialization
*/
HAL_Init();
/* Configure the system clock to 200 MHz */
SystemClock_Config();
/* Initialize the LED1 (Red LED , set to On when error) */
BSP_LED_Init(LED1);
/*##-1- JPEG Initialization ################################################*/
/* Init The JPEG Look Up Tables used for YCbCr to RGB conversion */ /* Init The JPEG Color Look Up Tables used for YCbCr to RGB conversion */
JPEG_InitColorTables();
/* Init the HAL JPEG driver */
JPEG_Handle.Instance = JPEG;
HAL_JPEG_Init(&JPEG_Handle);
/*##-2- LCD Configuration ##################################################*/
/* Initialize the LCD */
lcd_status = BSP_LCD_Init();
if(lcd_status != LCD_OK)
{
OnError_Handler();
}
__HAL_RCC_CRC_CLK_ENABLE();
__HAL_RCC_BKPSRAM_CLK_ENABLE();
GUI_Init();
GUI_SetLayerVisEx (1, 0);
GUI_SelectLayer(0);
GUI_SetBkColor(GUI_BLUE);
GUI_Clear();
GUI_DispStringAt(" STM32F769I Discovery",60,40);
GUI_SetFont(&GUI_Font32B_ASCII);
GUI_DispStringAt("Hello world! www.21ic.com", 0, 180);
GUI_SetFont(&GUI_FontD48);
GUI_DispStringAt("1234567890", 0, 250);
/* Infinite loop */
while (1)
{
}
}
最后运行的结果如下:
到此在IAR上STemwin移植成功,至于更多功能,得慢慢体验了。
|