国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

STM32CUBEMX開發(fā)GD32F303(14)----IIC之配置OLED

發(fā)布者:幸福如意最新更新時間:2024-09-13 來源: elecfans關(guān)鍵字:STM32CUBEMX  GD32F303  IIC 手機看文章 掃描二維碼
隨時隨地手機看文章

概述

本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發(fā),同時通過開發(fā)板內(nèi)進行驗證。 使用IIC進行驅(qū)動SSD1306的12864OLED。 最近在弄ST和GD的課程,需要GD樣片的可以加群申請:615061293 。

視頻教學

https://www.bilibili.com/video/BV1Q8411t7sK/

csdn課程

課程更加詳細。 https://download.csdn.net/course/detail/37152

樣品申請

https://www.wjx.top/vm/mB2IKus.aspx

生成例程

這里準備了自己繪制的開發(fā)板進行驗證。在這里插入圖片描述查看原理圖,PB8和PB9設置為開發(fā)板的IIC。在這里插入圖片描述

配置時鐘樹

配置時鐘為64M。在這里插入圖片描述

IIC配置

本次實驗使用的IIC與顯示屏通信,配置如下。在這里插入圖片描述

OLED

查看文檔可以知道地址為b0111100或者b0111101,當R/W位置寫0的時候,才能進行寫的操作,那么地址默認為0x78(b01111000)或者0x7A(b01111010)

在這里插入圖片描述

參考程序

這里使用0.96OLED顯示屏_STM32F103C8_IIC_V1.0來進行移植在這里插入圖片描述在這里插入圖片描述查看工程可以知道主要是有3個文件來進行OLED的驅(qū)動,移入OLE.h .c 、oledfont.h 、 bmp.h 移入文件之后要注意導入C文件。在這里插入圖片描述

刪除沒有用的頭文件 刪除sys.h文件在這里插入圖片描述

刪除delay.h文件在這里插入圖片描述

可以查看stdint.h在這里插入圖片描述

在oled.h中添加u8 u32定義 也可以直接修改

typedef unsigned          char u8;

typedef unsigned           int u32;


在這里插入圖片描述先把oled.h添加主程序中。在這里插入圖片描述

查看oled.h,可以看到IIC定義,同時也是模擬IIC,可以注釋掉在這里插入圖片描述

查看oled.c,可以看到是模擬iic,這些都可以注釋不要,我們使用的是iIC,不是模擬。

在這里插入圖片描述

HAL_I2C_Mem_Write()

IIC寫固定的設備寫入數(shù)據(jù)。 記得導入#include 'i2c.h'在這里插入圖片描述

將HAL_I2C_Mem_Write函數(shù)放入oled.c中。 例如將Write_IIC_Command函數(shù)修改為HAL_I2C_Mem_Write發(fā)送方式。在這里插入圖片描述

向0x78設備寫命令0x00的IIC_Command指令。

/**********************************************

// IIC Write Command

**********************************************/

void Write_IIC_Command(unsigned char IIC_Command)

{

//   IIC_Start();

//   Write_IIC_Byte(0x78);            //Slave address,SA0=0

//    IIC_Wait_Ack();    

//   Write_IIC_Byte(0x00);            //write command

//    IIC_Wait_Ack();    

//   Write_IIC_Byte(IIC_Command); 

//    IIC_Wait_Ack();    

//   IIC_Stop();



     HAL_I2C_Mem_Write(&hi2c1 ,0x78,0x00,I2C_MEMADD_SIZE_8BIT,&IIC_Command,1,0x100);


}

IIC寫數(shù)據(jù) 向0x78設備寫數(shù)據(jù)0x40的IIC_Data指令。


/**********************************************

// IIC Write Data

**********************************************/

void Write_IIC_Data(unsigned char IIC_Data)

{

//   IIC_Start();

//   Write_IIC_Byte(0x78);            //D/C#=0; R/W#=0

//    IIC_Wait_Ack();    

//   Write_IIC_Byte(0x40);            //write data

//    IIC_Wait_Ack();    

//   Write_IIC_Byte(IIC_Data);

//    IIC_Wait_Ack();    

//   IIC_Stop();

     HAL_I2C_Mem_Write(&hi2c1 ,0x78,0x40,I2C_MEMADD_SIZE_8BIT,&IIC_Data,1,0x100);



}


在oled.c中,OLED_Init初始化可以注釋掉gpio初始化在這里插入圖片描述

在oled.c中,OLED_Init初始化中有個延時800ms。 導入

#include 'stm32f1xx_hal.h' 可以使用HAL_Delay(800);

在這里插入圖片描述

取模

在這里插入圖片描述

在這里插入圖片描述

在oledfont.h中放入字庫在這里插入圖片描述

char Hzk[][32]={


// 記(0) 帖(1) 年(2) 月(3) 日(4)


{0x40,0x40,0x42,0xCC,0x00,0x00,0x00,0x84,0x84,0x84,0x84,0x84,0xFC,0x00,0x00,0x00},

{0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x3F,0x40,0x40,0x40,0x40,0x41,0x40,0x70,0x00},/*'記',0*/

/* (16 X 16 , 宋體 )*/


{0x00,0xF8,0x08,0xFF,0x08,0xF8,0x00,0x00,0x00,0x00,0xFF,0x10,0x10,0x10,0x10,0x00},

{0x00,0x0F,0x00,0xFF,0x08,0x0F,0x00,0xFF,0x41,0x41,0x41,0x41,0x41,0xFF,0x00,0x00},/*'帖',1*/

/* (16 X 16 , 宋體 )*/


{0x00,0x20,0x18,0xC7,0x44,0x44,0x44,0x44,0xFC,0x44,0x44,0x44,0x44,0x04,0x00,0x00},

{0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00},/*'年',2*/

/* (16 X 16 , 宋體 )*/


{0x00,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,0x00},

{0x80,0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00},/*'月',3*/

/* (16 X 16 , 宋體 )*/


{0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x00,0x00,0x00,0x00},/*'日',4*/

/* (16 X 16 , 宋體 )*/





};


在main.c中添加顯示


OLED_Init();            //初始化OLED  

        OLED_Clear()      ; 

        OLED_ShowCHinese(0,0,0);//記

        OLED_ShowCHinese(16,0,1);//帖



        OLED_ShowNum(0,2,2022,4,16);//顯示ASCII字符的碼值             

        OLED_ShowCHinese(32,2,2);//年    

        OLED_ShowNum(48,2,9,1,16);//顯示ASCII字符的碼值         

        OLED_ShowCHinese(64,2,3);//月

        OLED_ShowNum(80,2,10,2,16);//顯示ASCII字符的碼值                 

        OLED_ShowCHinese(96,2,4);//日


字體大小只有2個在這里插入圖片描述顯示字符

OLED_ShowString(40,2,'ZXY',8);

在這里插入圖片描述

圖片放在bmp.h中。


#ifndef __BMP_H

#define __BMP_H        


unsigned char BMP1[]={

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x1F,0x1F,0x7F,0xFF,0xFF,

0xFF,0xFF,0xFF,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x0F,0x0F,

0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,

0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC7,0xC7,0xC7,0xC4,0x04,0x04,0x04,0x07,0xFF,

0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x8F,0x80,0x80,

0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE3,0xE3,0xE3,0xE3,0xE3,0xE3,

0xE3,0xE3,0xE3,0xE3,0xE3,0xE3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x1F,

0x1F,0x1F,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0x8F,0x8F,

0x8F,0x8F,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,

0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x06,0x06,0x07,0x0F,

0xFF,0xFF,0xFF,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0x00,0x00,

0x00,0x00,0xF8,0xF8,0xF8,0xF8,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,

0x00,0xC7,0xC7,0xC7,0xC7,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,

0xFF,0x00,0x00,0x00,0xFF,0xFF,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,

0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x03,0x03,0x03,0xE3,0xE0,0xE0,0xE0,

0xE0,0xE3,0xE3,0x03,0x03,0x03,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,

0xFF,0xF0,0xF0,0xF0,0xFF,0xFF,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,

0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF1,0xF1,0xF1,0xF1,

0xF1,0xF1,0xF1,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*'D:GD32F303GD32F30x_Firmware_Library_V2.1.4_iic_oled記帖.bmp',0*/

/* (64 X 64 )*/


};



#endif


顯示圖片

delay_1ms(2000);

        OLED_Clear();      

        OLED_DrawBMP(0,0,64,8,BMP1);  //圖片顯示(圖片顯示慎用,生成的字表較大,會占用較多空間,F(xiàn)LASH空間8K以下慎用)


在這里插入圖片描述


OLED.C

//////////////////////////////////////////////////////////////////////////////////     

//  功能描述   : 0.69寸OLED 接口演示例程(STM32F103ZE系列IIC)

//              說明: 

//              ----------------------------------------------------------------

//              GND   電源

//              VCC   接5V或3.3v電源

//              SCL   接PA5(SCL)

//              SDA   接PA7(SDA)            

//              ----------------------------------------------------------------

//All rights reserved

//////////////////////////////////////////////////////////////////////////////////

#include 'oled.h'

#include 'stdlib.h'

#include 'oledfont.h'       

//#include 'delay.h'

#include 'stm32f1xx_hal.h'

#include 'i2c.h'


//OLED的顯存

//存放格式如下.

//[0]0 1 2 3 ... 127    

//[1]0 1 2 3 ... 127    

//[2]0 1 2 3 ... 127    

//[3]0 1 2 3 ... 127    

//[4]0 1 2 3 ... 127    

//[5]0 1 2 3 ... 127    

//[6]0 1 2 3 ... 127    

//[7]0 1 2 3 ... 127                

/**********************************************

//IIC Start

**********************************************/

/**********************************************

//IIC Start

**********************************************/

//void IIC_Start()

//{


//    OLED_SCLK_Set() ;

//    OLED_SDIN_Set();

//    OLED_SDIN_Clr();

//    OLED_SCLK_Clr();

//}


///**********************************************

////IIC Stop

//**********************************************/

//void IIC_Stop()

//{

//OLED_SCLK_Set() ;

////    OLED_SCLK_Clr();

//    OLED_SDIN_Clr();

//    OLED_SDIN_Set();

//    

//}


//void IIC_Wait_Ack()

//{


//    //GPIOB- >CRH &= 0XFFF0FFFF;    //設置PB12為上拉輸入模式

//    //GPIOB- >CRH |= 0x00080000;

////    OLED_SDA = 1;

////    delay_us(1);

//    //OLED_SCL = 1;

//    //delay_us(50000);

///*    while(1)

//    {

//        if(!OLED_SDA)                //判斷是否接收到OLED 應答信號

//        {

//            //GPIOB- >CRH &= 0XFFF0FFFF;    //設置PB12為通用推免輸出模式

[1] [2] [3] [4]
關(guān)鍵字:STM32CUBEMX  GD32F303  IIC 引用地址:STM32CUBEMX開發(fā)GD32F303(14)----IIC之配置OLED

上一篇:在STM32CubeIDE中創(chuàng)建工程
下一篇:基于stm32單片機的通用定時器配置

推薦閱讀最新更新時間:2025-06-21 16:33

STM32CUBEMX開發(fā)GD32F303(17)----內(nèi)部Flash讀寫
概述 本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發(fā),同時通過開發(fā)板內(nèi)進行驗證。 本例程主要講解如何對芯片自帶Flash進行讀寫,用芯片內(nèi)部Flash可以對一些需要斷電保存的數(shù)據(jù)進行保存,無需加外部得存儲芯片,本例程采用的是STM32F103ZET6進行移植,512K大小的Flash。 樣品申請 https://www.wjx.top/vm/mB2IKus.aspx 生成例程 這里準備了自己繪制的開發(fā)板進行驗證。 配置時鐘樹,配置時鐘為64M。 查看原理圖,PA9和PA10設置為開發(fā)板的串口。 配置串口。 串口重定向 在main.c中,添加頭文件,若不添加會出現(xiàn) iden
[單片機]
<font color='red'>STM32CUBEMX</font>開發(fā)<font color='red'>GD32F303</font>(17)----內(nèi)部Flash讀寫
GD32F303 低功耗模式要點
我們都知道,MCU有低功耗模式,比如GD32F303芯片,就有Sleep、Deepsleep和Standby三種模式。關(guān)于這三種模式的具體使用方法,小伙伴們可以參考《GD32F30x系列用戶手冊》。 今天我們來聊下幾個低功耗模式要點。 1、進入低功耗模式后IO口的狀態(tài): Sleep和Deepsleep模式:IO口保持進入低功耗前的狀態(tài),即本來是輸出高的繼續(xù)輸出高,本來是輸出低的繼續(xù)輸出低(一個重要提示:在進入Deepsleep前,要將不需要保持狀態(tài)的IO口配置為模擬輸入,這樣可以達到最低功耗) Standby模式:所有IO口都被強制設置為浮空輸入,即IO口不保持; 2、關(guān)于外部晶振狀態(tài) Sleep模式:外部晶振保持振動狀態(tài) D
[單片機]
<font color='red'>GD32F303</font> 低功耗模式要點
為什么GD32F303代碼運行在flash比sram更快?
我們知道一般MCU的flash有等待周期,隨主頻提升需要插入flash讀取的等待周期,以stm32f103為例,主頻在72M時需要插入2個等待周期,故而代碼效率無法達到最大時鐘頻率。 所以STM32F103將代碼加載到sram運行速度更快。 但使用GD32F303時將代碼加載到SRAM后速度反而下降了一些,這是為什么呢? 我們前面了解過GD32F303 flash的code area區(qū)是零等待的,GD32F系列MCU片上Flash中Code區(qū)和Data區(qū)使用解密 零等待訪問理論上就應該和在sram運行速度一樣,那么為何會比sram更快一些呢? 通過查閱GD32F303用戶手冊系統(tǒng)架構(gòu)章節(jié)我們可以知道,訪問flash時可以直接通
[單片機]
為什么<font color='red'>GD32F303</font>代碼運行在flash比sram更快?
STM32CUBEMX(11)--外部中斷(EXTI)
概述 外部中斷和事件控制器 (EXTI) 管理外部和內(nèi)部異步事件 / 中斷,并生成相應的事件請求到CPU/ 中斷控制器和到電源管理的喚醒請求。本例程主要講解如何使用外部中斷觸發(fā)LED。 硬件準備 首先需要準備一個開發(fā)板,這里我準備的是NUCLEO-F030R8的開發(fā)板: 選擇芯片型號 使用STM32CUBEMX選擇芯片stm32f030r8,如下所示: 配置時鐘源 HSE與LSE分別為外部高速時鐘和低速時鐘,在本文中使用內(nèi)置的時鐘源,故都選擇Disable選項,如下所示: 配置時鐘樹 STM32F0的最高主頻到48M,所以配置48即可: 中斷口配置 開發(fā)板上的PC13為藍色按鈕,故配置此端口為中斷口。 GPI
[單片機]
<font color='red'>STM32CUBEMX</font>(11)--外部中斷(EXTI)
STM32cubeMX使用心得
使用STM32cubeMX創(chuàng)建工程 首先你需要下載STM32cubeMX軟件版本,我使用的是——5.0.1.軟件版本可以去官網(wǎng)下載。 其次你需要一個合適你工程的《STMcube_FW_F1_Vxx》庫鏈接如下:提取碼:uqbw https://pan.baidu.com/s/1x-tMOqPwUC0R9O2xAx2QfQ 當我們使用STM32cubeMX創(chuàng)建一個工程時選擇MCU selector - core,series。 最后在選擇具體什么型號的芯片。 工程配置說明: 系統(tǒng)核心- systeam core 數(shù)模轉(zhuǎn)換- analog 定時器功能- timers 通訊功能- connectivity 音頻- multi
[單片機]
<font color='red'>STM32cubeMX</font>使用心得
如何使用STM32CubeMX配置ETH(RMII)
最近,剛接觸STM32CubeMX,感覺功能非常強大,特別是對于ETH、USB、FAT等特別方便,不用再像以前那樣去找各種移植方法(移植起來既麻煩也耽誤時間)。 此處,我以自己手頭上的一個板子(STM32F207VCT6)為例,記錄一下以太網(wǎng)的配置過程,中間也走了一些彎路,希望其他同志今后在配置ETH的時候可以借鑒參考,以節(jié)省自己的開發(fā)周期。 具體配置過程: 1、打開STM32CubeMX,并選擇好相應的芯片。文中的芯片為STM32F207VCT6,選擇后如下圖: 2、配置RCC時鐘、ETH、PA8以及使能LWIP; 由于此處我們的開發(fā)板硬件上為RMII方式,因此選擇ETH-RMII,若有同志的開發(fā)板為
[單片機]
如何使用<font color='red'>STM32CubeMX</font><font color='red'>配置</font>ETH(RMII)
STM32CubeMx + SD Card + FatFs 讀寫SD卡死等問題
Cube Mx使用較新版本 Version:4.24.0 MDK v5.20 STM32F429ZGT6 兩年以前記得試過SD卡讀寫,好像不是單純的Read和Write,應該是用了文件系統(tǒng),很順利的試驗成功了,所以源碼和記錄都沒留,這次要做一個新的板子,真所謂苦難重重啊,到現(xiàn)在32.768K的晶振一直沒起振,由原來的10P電容換了6P的,還是不行,應該說偶爾可以,但生產(chǎn)代碼中MX_RTC_Init() 依然死在里面,LSE未就緒啊~, 言歸正傳,寫了一個試驗SD卡的程序,f_open 死在路上了,經(jīng)調(diào)試發(fā)現(xiàn)ReadStatus 始終不會置1,唯一修改其值的方法BSP_SD_ReadCpltCallback根本沒人調(diào)用,先是懷疑自己
[單片機]
STM32CubeMX的SDIO模式下對SD卡讀寫測試
1.問題描述:使用STM32CubeMX,配置SDIO的4bit模式,對SD卡進行讀寫測試。 2.準備工作: 軟件版本:STM32CubeMX–4.22.0 ;KEIL5 硬件平臺:原子戰(zhàn)艦V3 (1)軟件設置: I. SDIO選擇,這里選擇4bits模式,實際選1bits也可以。 II. 時鐘樹配置 III. SDIO模式時鐘分頻設置,其他默認。 其他詳細配置請自行打開源碼壓縮包里的MP3_Test.ioc查看。 (2)Keil工程測試代碼: 測試代碼參考硬石的HAL庫例程,其資料下載地址在最下方。 I.首先是測試要用到的宏定義及變量的聲明。 II.接下來是對主函數(shù)代碼的添加與修改。 III.主要代碼段修
[單片機]
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved