搜索
bottom↓
回复: 5

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

[复制链接]

出0入0汤圆

发表于 2017-5-12 18:32:29 | 显示全部楼层 |阅读模式
移植版本:emwin5.32

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

LCD驱动:SSD1963

遇到的问题:
1、使用通用移植方式会造成系统时钟明显变慢,但是能正常显示。
2、使用官方提供的驱动能够正常运行,就颜色读取出现了点问题,不过现在解决了。
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);
复制代码

有哪位朋友曾经遇到过这个问题,或者有解决这个问题的思路麻烦分享下!跪求






出0入0汤圆

 楼主| 发表于 2017-5-12 18:33:34 | 显示全部楼层
看到不懂的求顶

出0入0汤圆

发表于 2017-5-12 19:59:10 | 显示全部楼层
先确定不跑emwin的时候 时钟正常,比如设置一个波特率,可以正常通讯,或者点亮一个呼吸灯,频率正常
再考虑emwin的时候

出0入0汤圆

发表于 2017-5-12 23:31:27 | 显示全部楼层
楼主,你采用GUIDRV_Template这种方式来驱动,刷屏就是会比较慢的,并不是时钟变慢了~~~

出0入0汤圆

 楼主| 发表于 2017-5-13 12:03:33 来自手机 | 显示全部楼层
7802848 发表于 2017-5-12 19:59
先确定不跑emwin的时候 时钟正常,比如设置一个波特率,可以正常通讯,或者点亮一个呼吸灯,频率正常
再考 ...

我只是看现象,就是gui_init那跑得比较慢,看了两位的建议,我怀疑还真时钟没变慢,只是我使用的这种驱动方式本身具有的特性。感谢指点

出0入0汤圆

 楼主| 发表于 2017-5-13 12:05:15 来自手机 | 显示全部楼层
zhuisuoji 发表于 2017-5-12 23:31
楼主,你采用GUIDRV_Template这种方式来驱动,刷屏就是会比较慢的,并不是时钟变慢了~~~ ...

一点就通了,很可能就是这个原因了,我定时器运行时钟应该是正常的。太感谢了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 06:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表