移植emwin造成系统时钟变得很慢,不懂怎么解决

2019-12-28 17:51发布

移植版本:emwin5.32

移植方式通用驱动移植,即使用GUIDRV_Template,只需要提供读点函数和打点函数就可以了。

LCD驱动:SSD1963

遇到的问题:
1、使用通用移植方式会造成系统时钟明显变慢,但是能正常显示。
2、使用官方提供的驱动能够正常运行,就颜 {MOD}读取出现了点问题,不过现在解决了。
3、在线调试没有出现HardFault_Handler,现在搞到我很郁闷,这问题一直烦着我,根本不懂怎么去排查,我已经把程序精简成剩下emwin和LCD驱动了

关键代码
a、emwin的LCD配置

  1. void LCD_X_Config(void) {
  2.   //
  3.   // Set display driver and color conversion for 1st layer
  4.   //
  5.   GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0);
  6.   //
  7.   // Display driver configuration
  8.   //
  9.   if (LCD_GetSwapXY()) {
  10.     LCD_SetSizeEx (0, YSIZE_PHYS, XSIZE_PHYS);
  11.     LCD_SetVSizeEx(0, YSIZE_PHYS, XSIZE_PHYS);
  12.   } else {
  13.     LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS);
  14.     LCD_SetVSizeEx(0, XSIZE_PHYS, YSIZE_PHYS);
  15.   }
  16. }
复制代码
  1. int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData) {
  2.   Init_LCDHard();              //LCD硬件初始化程序
  3.         GUI_USE_PARA(LayerIndex);
  4.   GUI_USE_PARA(Cmd);
  5.   GUI_USE_PARA(pData);
  6.   return 0;
  7. }
复制代码
b、LCD硬件驱动程序
  1. void SSD1963_PutPixelGUI(WORD _psX, WORD _psY, WORD _psColor)
  2. {       
  3.   LCD_SetCursor(_psX,_psY);
  4.         LCD_WR_REG(0x2C);
  5.         LCD_WR_Data(_psColor);
  6. }
复制代码
  1. WORD SSD1963_GetPixelGUI(WORD _psX, WORD _psY)
  2. {
  3.         WORD usRGB;
  4.        
  5.   LCD_SetCursor(_psX,_psY);
  6.         LCD_WR_REG(0x2E);
  7.        
  8. //        usRGB = LCD_RD_DATA();
  9. //        usRGB = LCD_RD_DATA();
  10.         usRGB = LCD_RD_DATA();

  11.         return usRGB;
  12. }
复制代码
c、主函数程序
  1.        
  2.          SystemInit();                              //设置系统时钟72MHz
  3.        
  4.          Bsp_init();                                //初始化系统
  5.         {:cry:}
  6.         PWM_LCD_Brightness(20);
  7.        
  8.         GUI_SetBkColor(GUI_WHITE);
  9.         GUI_Clear();

  10.         GUI_SetColor(GUI_LIGHTBLUE);

  11.         GUI_AA_SetFactor(3);

  12.         GUI_AA_FillCircle(90, 190, 80);
复制代码
有哪位朋友曾经遇到过这个问题,或者有解决这个问题的思路麻烦分享下!跪求