查看: 7460|回复: 5

[经验] GD32F207移植STemWin(分享三)

[复制链接]
  • TA的每日心情
    开心
    2015-6-14 16:01
  • 签到天数: 87 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2016-1-7 20:19:49 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 wenyangzeng 于 2016-1-14 13:29 编辑

    GD32F207移植STemWin
    这个GD32F207移植STemWin的结果不是很成功,但是还是有必要将移植过程与各位分享。
    使用FSMC模式驱动TFT-SSD1289,硬件的连接和编程请参阅:
    试过几种编译环境,只有采用STM32CUbeMXMDK5下能勉强运行。
    代码中如果有“LCD.h””LCD.C”“GUI.H”同名的文件必须另起新文件名。
    STM32CUbeMX的配置中选择STM32F103ZET6,需要配置的选项有”SYS””CRC”“FSMC”和“RCC”,见下图:
    要注意那个CRC是必须的。
    配置.jpg

    项目中芯片型号则选择GD32F207ZE,还要添加STemWinLibrary5.22库、GUIConfig.CLCDConf_FiexColor_Template.CGUI_X.C,GUIDEMO.C。

    MDK.jpg

    Options-Debug选项:

    DEBUG.jpg

    Driver Setup选项:

    TRAGE DEVICE.jpg
    1. 主函数:
    2. #include "stm32f1xx_hal.h"
    3. #include "SSD1289_lcd.h"
    4. #include "crc.h"
    5. #include "gpio.h"
    6. #include "fsmc.h"
    7. include "GUI.h"
    8. #include "GUIDEMO.h"
    9. #include "GUI_Type.h"
    10. void SystemClock_Config(void);
    11. extern __IO int32_t OS_TimeMS;

    12. int main(void)
    13. { HAL_Init();
    14. SystemClock_Config();
    15. MX_GPIO_Init();
    16. MX_CRC_Init();          //这个CRC是必须要的
    17. MX_FSMC_Init();
    18. STM3210E_LCD_Init();
    19. WM_SetCreateFlags(WM_CF_MEMDEV);
    20. GUI_Init();
    21. GUIDEMO_Main();
    22. }
    23. void SystemClock_Config(void)
    24. { RCC_OscInitTypeDef RCC_OscInitStruct;
    25. RCC_ClkInitTypeDef RCC_ClkInitStruct;
    26. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
    27. RCC_OscInitStruct.HSEState = RCC_HSE_ON;
    28. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
    29. HAL_RCC_OscConfig(&RCC_OscInitStruct);
    30. RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK;
    31. RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;
    32. RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV16;
    33. RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
    34. RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV4;
    35. HAL_RCC_ClockConfig(&RCC_ClkInitStruct,FLASH_LATENCY_0);
    36. HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/200);
    37. HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
    38. HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
    39. }

    40. //GUIConf.C的修改:
    41. #define GUI_NUMBYTES  1024*50

    42. //LCDConf_FlexColor_Template.c的修改:
    43. include "stm32f1xx.h"
    44. #include "SSD1289_lcd.h"
    45. typedef struct
    46. {
    47. __IO uint16_t LCD_REG;
    48. __IO uint16_t LCD_RAM;
    49. } LCD_TypeDef;
    50. #define LCD_BASE           ((uint32_t)(0x60000000 |0x0C000000))
    51. #define LCD                ((LCD_TypeDef *) LCD_BASE)
    52. static void LcdWriteReg(U16 Data) {
    53.   __nop();__nop();
    54. LCD->LCD_REG = Data;
    55. }
    56. static void LcdWriteData(U16 Data) {
    57.   __nop();__nop();
    58. LCD->LCD_RAM =Data;</font>
    59. }
    60. static void LcdWriteDataMultiple(U16 *pData, int NumItems) {
    61. while (NumItems--) {
    62.      __nop();__nop();
    63. LCD->LCD_RAM = *pData++;</font>
    64.   }
    65. }
    66. static void LcdReadDataMultiple(U16 *pData, int NumItems) {
    67. *pData=LCD->LCD_RAM ;
    68. while (NumItems--) {
    69.          __nop();__nop();
    70. *pData++=LCD->LCD_RAM ;
    71. }
    72. }
    73. void LCD_X_Config(void) {
    74. GUI_DEVICE * pDevice;
    75. CONFIG_FLEXCOLOR Config = {0};
    76. GUI_PORT_API PortAPI = {0};
    77. pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_<font color="red">M</font>565, 0, 0);
    78. LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);
    79. LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);
    80. Config.Orientation = GUI_SWAP_XY | GUI_MIRROR_Y;
    81. GUIDRV_FlexColor_Config(pDevice, &Config);
    82. PortAPI.pfWrite16_A0  =LcdWriteReg;
    83. PortAPI.pfWrite16_A1  =LcdWriteData;
    84. PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple;
    85. PortAPI.pfReadM16_A1  =LcdReadDataMultiple;
    86. GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66702,GUIDRV_FLEXCOLOR_M16C0B16);
    87. }
    88. //Stm32f1xx_it.c的修改:
    89. #include "stm32f1xx_hal.h"
    90. #include "stm32f1xx.h"
    91. #include "stm32f1xx_it.h"
    92. extern __IO int32_t OS_TimeMS;
    93. void SysTick_Handler(void)
    94. {
    95. HAL_IncTick();
    96. HAL_SYSTICK_IRQHandler();
    97. <font color="red">OS_TimeMS++;
    98. }
    复制代码
    编译下载运行:
    运行结果并不如意,运行到一半就死机了,提示硬件的失败:
    HARD FAULT.jpg

    高手如果知道问题所在,望指教。
    http://player.youku.com/player.php/sid/XMTQzODE5ODI0MA==/v.swf

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-8-15 09:28
  • 签到天数: 222 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2016-1-8 09:43:50 | 显示全部楼层
    非常好的分享!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-2-18 14:13
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2016-4-9 16:23:14 | 显示全部楼层
    硬件异常多半是数组越界,先定位出现异常的地方,然后看看是否调用了数组!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-11-14 10:54:26 | 显示全部楼层
    楼主,GD32移植STemwin成功了吗?可不可以分享一下源码,学习学习!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-6-14 16:01
  • 签到天数: 87 天

    连续签到: 1 天

    [LV.6]常住居民II

     楼主| 发表于 2016-11-15 13:18:56 | 显示全部楼层
    goust51 发表于 2016-11-14 10:54
    楼主,GD32移植STemwin成功了吗?可不可以分享一下源码,学习学习!

    原代码: GD32.rar (131.83 KB, 下载次数: 53)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-12-26 21:04
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2017-6-13 15:04:02 | 显示全部楼层
    在startup文件里面把heap_size 和 stack_size设置大一些。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-25 22:14 , Processed in 0.166433 second(s), 26 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.