OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11373|回复: 25

STM32F103VET6 FSMC驱动R61581液晶屏的奇葩问题,恳请大神指点

[复制链接]

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-11-18
在线时间
3 小时
发表于 2013-11-18 21:11:54 | 显示全部楼层 |阅读模式

             长话短说。stm32f103vet6采用FSMC驱动3.5寸tft液晶屏(320*480)驱动芯片R61581。驱动成功了,但是刷屏速度非常慢大概刷一屏600~700ms,肯定有问题。下面说一下我使用的软硬件:
(1)软件环境IAR5.4
(2)重庆DQ电子的stm32开发板//12年买板子的时候没看到原子哥的开发板,早知道就买了
(3)stm32的V3.5.0固件库
(4)移植的ucos2.92系统
我的系统下除了一个led闪烁任务,就是一个液晶屏刷屏任务,刷屏任务优先级最高。固件库中选的#define SYSCLK_FREQ_72MHz  72000000,系统时钟配置为72Mhz,采用固件库默认的/* HCLK = SYSCLK */ RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;(即AHB总线速度是72Mhz,FSMC也是72Mhz吧?)这时刷屏特别慢600~700ms!!后来我把系统时钟定义为 #define SYSCLK_FREQ_56MHz  56000000,居然比72Mhz时快很多,刷屏速度能达到100ms左右,为真是怪了,请大神指点一下,不知道怎么回事!
最后我再把系统时钟又重新定义为72Mhz,然后把/* HCLK = SYSCLK */ RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV2;//修改后,居然速度比1分频快,大概刷屏速度也能达到100ms左右了,但是用printf打印出此时系统频率为36Mhz,

难道是stm32的FSMC不能达到72Mhz吗?

 真心求教!
以下是系统设置配置,和FSMC配置:
defined SYSCLK_FREQ_72MHz
/**
  * @brief  Sets System clock frequency to 72MHz and configure HCLK, PCLK2
  *         and PCLK1 prescalers.
  * @NOTE   This function should be used only after reset.
  * @param  None
  * @retval None
  */
static void SetSysClockTo72(void)
{
  __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
  
  /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/   
  /* Enable HSE */   
  RCC->CR |= ((uint32_t)RCC_CR_HSEON);

  /* Wait till HSE is ready and if Time out is reached exit */
  do
  {
    HSEStatus = RCC->CR & RCC_CR_HSERDY;
    StartUpCounter++;  
  } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));

  if ((RCC->CR & RCC_CR_HSERDY) != RESET)
  {
    HSEStatus = (uint32_t)0x01;
  }
  else
  {
    HSEStatus = (uint32_t)0x00;
  }  

  if (HSEStatus == (uint32_t)0x01)
  {
    /* Enable Prefetch Buffer */
    FLASH->ACR |= FLASH_ACR_PRFTBE;

    /* Flash 2 wait state */
    FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
    FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2;   


    /* HCLK = SYSCLK */
    RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;//这里我要是改成RCC_CFGR_HPRE_DIV2,居然刷屏速度比1分频快很多!不知道怎么回事
       
     /* PCLK2 = HCLK */
    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
   
    /* PCLK1 = HCLK */
    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;

#ifdef STM32F10X_CL
    /* Configure PLLs ------------------------------------------------------*/
    /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */
    /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */
        
    RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL |
                              RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);
    RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 |
                             RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5);
  
    /* Enable PLL2 */
    RCC->CR |= RCC_CR_PLL2ON;
    /* Wait till PLL2 is ready */
    while((RCC->CR & RCC_CR_PLL2RDY) == 0)
    {
    }
   
   
    /* PLL configuration: PLLCLK = PREDIV1 * 9 = 72 MHz */
    RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL);
    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 |
                            RCC_CFGR_PLLMULL9);
#else   
    /*  LL configuration: PLLCLK = HSE * 9 = 72 MHz */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
                                        RCC_CFGR_PLLMULL));
    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);//如果以上不改成RCC_CFGR_HPRE_DIV2分频,这里把PLL倍频改为7,即频率为56Mhz刷屏速度也会比原来快
#endif /* STM32F10X_CL */

    /* Enable PLL */
    RCC->CR |= RCC_CR_PLLON;

    /* Wait till PLL is ready */
    while((RCC->CR & RCC_CR_PLLRDY) == 0)
    {
    }
   
    /* Select PLL as system clock source */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
    RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;   

    /* Wait till PLL is used as system clock source */
    while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)
    {
    }
  }
  else
  { /* If HSE fails to start-up, the application will have wrong clock
         configuration. User can add here some code to deal with this error */
  }
}


void FSMC_Configuration(void)
{
        FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
        FSMC_NORSRAMTimingInitTypeDef p;
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC , ENABLE);
               
        p.FSMC_AddressSetupTime = 1;
        p.FSMC_AddressHoldTime = 0;
        p.FSMC_DataSetupTime = 1;//改成2也试了,没效果
        p.FSMC_BusTurnAroundDuration = 0;
        p.FSMC_CLKDivision = 0;
        p.FSMC_DataLatency = 0;
        p.FSMC_AccessMode = FSMC_AccessMode_B;
       
        FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
        FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
        FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
        FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
        FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
        FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
        FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
        FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
        FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
        FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
        FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
        FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
        FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
        FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
        FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);

        FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);
}

刷屏函数应该没问题,已经优化了。

纠结了,虽然没买原子哥的板子,也真心希望能得到您的帮助。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-11-18
在线时间
3 小时
 楼主| 发表于 2013-11-18 21:44:47 | 显示全部楼层
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-19 10:59:40 | 显示全部楼层
你软件仿真,看看系统时钟,是不是倍频到了72M了?
还是在跑8M?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-11-18
在线时间
3 小时
 楼主| 发表于 2013-11-19 17:43:27 | 显示全部楼层
谢谢原子哥关注,系统时钟频率是72Mhz。
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-11-18
在线时间
3 小时
 楼主| 发表于 2013-11-19 17:45:12 | 显示全部楼层
今天还是没调试好,HCLK在72Mhz的时候依然很慢,如果设置为56Mhz就快很多。
还有就是:
买液晶屏的时候卖家给的是在MDK4.2下面的刷屏程序(用FSMC驱动,刷屏挺快的大概100ms以内),我自己改成IAR5.4下了,结果慢死了,刷一屏需要700~800ms左右,像拉窗帘。
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-11-18
在线时间
3 小时
 楼主| 发表于 2013-11-19 17:50:31 | 显示全部楼层
官方的资料上面说FSMC总线时钟来自与AHB时钟频率分频,FSMC总线时钟频率最快36MHZ,不知道我理解的对不对?
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-11-18
在线时间
3 小时
 楼主| 发表于 2013-11-19 21:02:45 | 显示全部楼层

上源码,请大神看看我的程序,如果定义system_stm32f10x.c中的
 

//#define SYSCLK_FREQ_56MHz  56000000  //如果使用这个,刷屏速度居然比定义72Mhz快
 #define SYSCLK_FREQ_72MHz  72000000

请您看看什么原因,我快崩溃了


源码介绍,v3.5.0固件库,ucos2.92系统,ucgui3.90a(编译的时候我去掉了,加上即可)

IAR5.4-stm32-MB.zip

7.76 MB, 下载次数: 539

回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-11-18
在线时间
3 小时
 楼主| 发表于 2013-11-19 21:04:54 | 显示全部楼层
我用的这个函数测的系统主频:
INT32U  BSP_CPU_ClkFreq (void)
{
    RCC_ClocksTypeDef  rcc_clocks;    
    RCC_GetClocksFreq(&rcc_clocks);
    return ((INT32U)rcc_clocks.HCLK_Frequency);
}
串口1调试输出:
 printf("  CPU Speed:%ld MHz  \r\n", BSP_CPU_ClkFreq() / 1000000L);

打印信息是:CPU Speed:72Mhz
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-11-18
在线时间
3 小时
 楼主| 发表于 2013-11-19 21:08:30 | 显示全部楼层
坐等原子哥
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-11-18
在线时间
3 小时
 楼主| 发表于 2013-11-19 21:47:51 | 显示全部楼层
刷屏都inline进去了,应该不是刷屏函数的问题吧
///////////////////////////////////////////////////////////////////////////////
 //函数名:LCD_WR_REG
 //描述  :R61851 写寄存器函数
//输入  :-index 寄存器
//输出  :无
//调用  :内部调用        
 //////////////////////////////////////////////////////////////////////////////
static inline void LCD_WR_REG(u16 index)
 {
     *(__IO u16 *) (Bank1_LCD_C) = index;
 }

 ///////////////////////////////////////////////////////////////////////////////
 //函数名:LCD_WR_Data
 //描述  :R61851 向GRAM写入数据
//输入  :-val 写入的数据,16bit  
 //输出  :无
//调用  :内部调用        
 //////////////////////////////////////////////////////////////////////////////
static inline void LCD_WR_Data(unsigned int val)
 {   
     *(__IO u16 *) (Bank1_LCD_D) = val;         
 }

 inline void LCD_Set_Window(u16 StartX,u16 StartY,u16 EndX,u16 EndY)       
 {                                                                             
     LCD_WR_REG(0x002A);  //设置列地址
    LCD_WR_Data(StartX>>8);
     LCD_WR_Data(0x00FF&StartX);
     LCD_WR_Data(EndX>>8);
     LCD_WR_Data(0x00FF&EndX);

     LCD_WR_REG(0x002B);  //设置行地址
    LCD_WR_Data(StartY>>8);
     LCD_WR_Data(0x00FF&StartY);
     LCD_WR_Data(EndY>>8);
     LCD_WR_Data(0x00FF&EndY);

     LCD_WR_REG(0x003A);// 16/18 bits
     LCD_WR_Data(0x55);//16bits
     LCD_WR_REG(0x002C);//写液晶准备
}

void LCD_ColorBox(u16 xStart,u16 yStart,u16 xLong,u16 yLong,u16 Color)
 {
     u32 temp;
     LCD_Set_Window(xStart,yStart,xStart+xLong-1,yStart+yLong-1);
     for (temp=0; temp<xLong*yLong; temp++)
     {        
         *(__IO u16 *) (Bank1_LCD_D) = Color;
     }
 }>
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-19 22:30:50 | 显示全部楼层
回复【8楼】jianghs521:
---------------------------------
打印这个没用.
要看寄存器的值.
MDK的软件仿真,很容易啊.有寄存器页面,你查看下就知道了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-11-18
在线时间
3 小时
 楼主| 发表于 2013-11-23 09:41:48 | 显示全部楼层
这两天出差了,回来之后按照原子哥说的,RCC->CR R寄存器里的值是0x03034b83 , RCC-> CFGR寄存器里的值是0x001d040a,配置是对的啊.可是还是不行。我看了一下keil工程下的寄存器和IAR里面这两个是一样的,可是IAR软件下面的数度比KEIL刷屏居然慢很多,救命啊!!
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-11-18
在线时间
3 小时
 楼主| 发表于 2013-11-23 09:49:54 | 显示全部楼层
补充一下:KEIL4下面用的官方3.3的固件库,IAR5.4下面用的3.5的固件库(我已经把ucos去掉了),其编程配置余均相同,可是iar下面速度就是慢!真无语
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-11-18
在线时间
3 小时
 楼主| 发表于 2013-11-23 11:55:12 | 显示全部楼层
经过几天的折腾终于发现问题了(IAR里的代码优化等级改为none就好了),但是还是不明白为什么?请大神指点。
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-11-18
在线时间
3 小时
 楼主| 发表于 2014-1-18 14:43:09 | 显示全部楼层
结贴:除了上述代码优化问题之外,初始化FSMC时最好关闭中断,等初始化完之后再打开中断,否则就有可能出现刷屏非常慢的情况。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2014-4-17
在线时间
0 小时
发表于 2014-4-17 19:12:56 | 显示全部楼层
回复【楼主位】jianghs521:
---------------------------------
楼主位用这个有没有做动画出来。
回复 支持 反对

使用道具 举报

1

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2014-12-5
在线时间
6 小时
发表于 2015-5-5 22:35:29 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
原子哥,您的显示图片例程适合 480*320的ILI9325,R61581,SSD1289吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-5 23:18:07 | 显示全部楼层
回复【17楼】justin_1ee:
---------------------------------
据我所知,9325,1289都不可能驱动480*320的屏。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2014-12-5
在线时间
6 小时
发表于 2015-5-6 17:21:59 | 显示全部楼层
回复【18楼】正点原子:
---------------------------------
ILI9320对应的水平RAM起始终止地址是0x50,0x51,垂直RAM起始终止地址是0x52,0x53。那R61581对应的水平垂直RAM起始终止地址是多少?怎么查?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-6 23:27:34 | 显示全部楼层
回复【19楼】justin_1ee:
---------------------------------
没有研究,你看看数据手册。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2014-12-5
在线时间
6 小时
发表于 2015-5-28 15:30:08 | 显示全部楼层
回复【20楼】正点原子:
---------------------------------
原子大哥,ILI9320可以显示Image2LCD转换的16位真彩色图片,可显示黑白的用Image2LCD 单色取模方式的显示可以用同样的函数吗。函数如下:
void ili9320_DrawPicture(u16 StartX,u16 StartY,u16 EndX,u16 EndY,u16 *pic)
{
  u16  i,mod;
  ili9320_SetWindows(StartX,StartY,EndX,EndY);
  ili9320_SetCursor(StartX,StartY);
  
  LCD_WriteRAM_Prepare();
  for (i=0;i<(EndX*EndY);i++)
  {
mod = *pic++;
    LCD_WriteRAM(mod);
  }
ili9320_SetWindows(0,0,240,320);
}
求解答
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-28 22:57:55 | 显示全部楼层
回复【21楼】justin_1ee:
---------------------------------
你试试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2014-12-5
在线时间
6 小时
发表于 2015-5-28 23:11:38 | 显示全部楼层
回复【22楼】正点原子:
---------------------------------
不行。。我想问如何显示一副单色图片呢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-28 23:16:07 | 显示全部楼层
回复【23楼】justin_1ee:
---------------------------------
看输出的图片颜色数据如何,然后根据规律输出数据即可。
你研究下
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2014-12-5
在线时间
6 小时
发表于 2015-5-28 23:20:09 | 显示全部楼层
回复【24楼】正点原子:
---------------------------------
单色是否就是黑白两色,我是否可以 小于哪个值就打白色点,大于哪个值就打黑色点,这样做?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-28 23:20:55 | 显示全部楼层
回复【25楼】justin_1ee:
---------------------------------
你试试
这个自己多做研究。
显示黑白图片不难的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-28 23:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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