wenyangzeng 发表于 2016-12-7 13:04:49

【F769IDISCOVERY评测】评测八 STemWin移植(终结篇)

本帖最后由 wenyangzeng 于 2016-12-20 10:07 编辑

   在F769I DISCOVERY板上移植STemWin能否成功,没有把握,但总得试试才知道。
   选择要移植的STemWin版本是5.32 CM7。文件在..\STM32Cube_FW_F7_V1.5.0\Middlewares\ST\STemWin\Lib文件夹中。相关的驱动在..\MyWorks\STM32Cube_FW_F7_V1.5.0\Projects\STM32F769I-Discovery\Demonstration\Config文件夹中。
它们在工程中的安装见下图:


红线标注的文件是必须添加的。同时记得在main()中打开ST的CRC校验:
__HAL_RCC_CRC_CLK_ENABLE();
有关移植的详细过程和指令应用在Segger官方发布的参考介绍的很详细,不敢在此班门弄斧。本例中演示了不同大小字符的显示和BMP图形的显示。最后运行了Segger官方的彩条COLOR_DemoLUT。
http://player.youku.com/player.php/sid/XMTg1MzA1MzYwNA==/v.swf



#include "main.h"
#include "stm32F769i_discovery.h"
#include "stm32F769i_discovery_sdram.h"
#include "stm32F769i_discovery_ts.h"
#include "GUI.h"
#include "GUIDEMO.h"
static void SystemClock_Config(void);
static void MPU_Config(void);
static void CPU_CACHE_Enable(void);
void MainTask(void);
extern GUI_CONST_STORAGE GUI_FONT GUI_Fontfont96;
extern GUI_CONST_STORAGE GUI_FONT GUI_Fontfont114;
extern GUI_CONST_STORAGE GUI_BITMAP bmbmp1;
WM_HWIN CreateFramewin(void);
int main(void)
{
MPU_Config();
CPU_CACHE_Enable();
HAL_Init();
SystemClock_Config();
BSP_SDRAM_Init();
      BSP_TS_Init(800, 480);      
         __HAL_RCC_CRC_CLK_ENABLE();
         __HAL_RCC_BKPSRAM_CLK_ENABLE();
      GUI_Init();
      WM_MULTIBUF_Enable(1);
GUI_SetLayerVisEx (1, 0);
GUI_SelectLayer(0);
GUI_SetBkColor(GUI_BLUE);
GUI_Clear();
GUI_DispStringAt(" STM32F769I Discovery",60,40);
      GUI_Delay(3500);
      GUI_SetFont(&GUI_Font13B_ASCII);
      GUI_DispStringAt(" STM32F769I Discovery",60,70);
      GUI_Delay(3500);
      GUI_SetFont(&GUI_Font24B_ASCII);
      GUI_DispStringAt(" STM32F769I Discovery",60,100);
      GUI_Delay(3500);
      GUI_SetFont(&GUI_Font32B_ASCII);
      GUI_DispStringAt(" STM32F769I Discovery",60,140);
      GUI_Delay(3500);
      GUI_SetFont(&GUI_Fontfont96);
      GUI_DispStringAt("STM32F769I",60,200);
      GUI_SetFont(&GUI_Fontfont114);
      GUI_DispStringAt("Discovery",60,300);
      GUI_Delay(3500);
      GUI_DrawBitmap(&bmbmp1,0,0);//
      GUI_Delay(3500);
      GUI_SetBkColor(GUI_BLACK);
GUI_Clear();
      MainTask();
while (1)
{
}
}
void SystemClock_Config(void)
{
RCC_ClkInitTypeDef RCC_ClkInitStruct;
RCC_OscInitTypeDef RCC_OscInitStruct;
HAL_StatusTypeDef ret = HAL_OK;
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 25;
RCC_OscInitStruct.PLL.PLLN = 400;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 9;
RCC_OscInitStruct.PLL.PLLR = 7;
ret = HAL_RCC_OscConfig(&RCC_OscInitStruct);
if(ret != HAL_OK)
{
    while(1) { ; }
}
ret = HAL_PWREx_EnableOverDrive();
if(ret != HAL_OK)
{
    while(1) { ; }
}
RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;

ret = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_7);
if(ret != HAL_OK)
{
    while(1) { ; }
}
}
static void MPU_Config(void)
{
MPU_Region_InitTypeDef MPU_InitStruct;
HAL_MPU_Disable();
MPU_InitStruct.Enable = MPU_REGION_ENABLE;
MPU_InitStruct.BaseAddress = 0x20010000;
MPU_InitStruct.Size = MPU_REGION_SIZE_256KB;
MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;
MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
MPU_InitStruct.Number = MPU_REGION_NUMBER0;
MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
MPU_InitStruct.SubRegionDisable = 0x00;
MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
HAL_MPU_ConfigRegion(&MPU_InitStruct);
HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);
}
static void CPU_CACHE_Enable(void)
{
SCB_EnableICache();
SCB_EnableDCache();
}


再次感谢ST,感谢社区。




jackten 发表于 2016-12-7 13:18:15

谢谢分享                     

leo121_3006061 发表于 2016-12-7 21:51:12

谢谢分享

modu8888 发表于 2017-9-22 14:42:33

有关移植的详细过程和指令应用在Segger官方发布的参考介绍的很详细,不敢在此...

_______________________

请教楼主,您说的详细过程和指令是不是指1000多页的那个emWin的参考手册中呢?我不知道哪里去找手册中所讲的几个批处理命令(makelib.bat、Prep.bat、CC.bat、lib.bat)。若看到回帖,请不吝指教~ 谢啦

wenyangzeng 发表于 2017-9-22 15:16:24

modu8888 发表于 2017-9-23 13:16:27

谢楼主。

斜阳__ 发表于 2017-9-23 13:56:41

谢谢分享            

wenyangzeng 发表于 2017-9-23 19:54:06

斜阳__ 发表于 2017-9-23 13:56
谢谢分享

:handshake....

ruanwu 发表于 2018-4-16 16:41:46

谢谢分享

wenyangzeng 发表于 2018-4-16 19:37:49

ruanwu 发表于 2018-4-16 16:41
谢谢分享

:)....
页: [1]
查看完整版本: 【F769IDISCOVERY评测】评测八 STemWin移植(终结篇)