• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    RT-Thread的I2C總線驅(qū)動(dòng)結(jié)構(gòu)分析、移植及應(yīng)用

    2017-01-05 01:40:32
    關(guān)鍵詞:核心層時(shí)序嵌入式

    高 培

    (福建對外經(jīng)濟(jì)貿(mào)易職業(yè)技術(shù)學(xué)院 信息技術(shù)系,福州 350016)

    ?

    RT-Thread的I2C總線驅(qū)動(dòng)結(jié)構(gòu)分析、移植及應(yīng)用

    高 培

    (福建對外經(jīng)濟(jì)貿(mào)易職業(yè)技術(shù)學(xué)院 信息技術(shù)系,福州 350016)

    針對RT-Thread操作系統(tǒng)下I2C總線驅(qū)動(dòng)展開研究,對驅(qū)動(dòng)結(jié)構(gòu)進(jìn)行介紹與分析。以STM32F407VG上的軟件I2C驅(qū)動(dòng)移植為例介紹了驅(qū)動(dòng)移植步驟,并通過STM32F407VG讀寫24LC02B的實(shí)例,詳細(xì)介紹I2C編程步驟及技術(shù)細(xì)節(jié)。最后通過實(shí)驗(yàn)驗(yàn)證I2C驅(qū)動(dòng)移植及編程的有效性。實(shí)驗(yàn)結(jié)果表明,RT-Thread操作系統(tǒng)下的I2C總線驅(qū)動(dòng)結(jié)構(gòu)簡潔,且易于移植及進(jìn)行程序設(shè)計(jì)。

    RT-Thread;I2C;驅(qū)動(dòng)結(jié)構(gòu);移植;應(yīng)用

    引 言

    RT-Thread嵌入式實(shí)時(shí)操作系統(tǒng)(Real-Time Operation System,RTOS)是國人自創(chuàng)的開源實(shí)時(shí)操作系統(tǒng),借鑒了VxWorks、μc/os、RTXC(Real-Time eXecutive in C)等成熟的RTOS的優(yōu)點(diǎn),又具有自己的特點(diǎn),在功能及性能方面不遜色于以上系統(tǒng)[1]。當(dāng)前RT-Thread嵌入式實(shí)時(shí)操作系統(tǒng)在許多嵌入式設(shè)備上特別是物聯(lián)網(wǎng)方面得到了廣泛應(yīng)用[2-5]。I2C(Inter-Integrated Circuit)總線是一種由Philips公司開發(fā)的兩線式串行總線(一根時(shí)鐘線,一根數(shù)據(jù)線),I2C總線可以使具有I2C總線接口的設(shè)備相互連接,它采用主從訪問模式,主設(shè)備通過總線訪問從設(shè)備。I2C總線具有接口線少,控制方式簡單,器件封裝形式小,降低了成本。因此,在嵌入式系統(tǒng)中有著廣泛的應(yīng)用[6-7]。

    RT-Thread下的I2C總線驅(qū)動(dòng)設(shè)計(jì)類似于Linux,但比Linux更加簡潔。本文對RT-Thread(1.2.0版本)下的I2C總線驅(qū)動(dòng)結(jié)構(gòu)進(jìn)行分析,介紹了I2C總線驅(qū)動(dòng)的工作原理和移植方法。最后,以STM32F407VG連接2K位串行CMOS EEPROM(24LC02B)為例[8-9],介紹了RT-Thread及I2C總線驅(qū)動(dòng)移植及應(yīng)用程序設(shè)計(jì)。

    1 I2C總線驅(qū)動(dòng)結(jié)構(gòu)

    RT-Thread下的I2C總線驅(qū)動(dòng)架構(gòu)分為(如圖1所示):設(shè)備層(i2c_dev.c,位于DeviceDrivers目錄下)、總線核心層(i2c_core.c,位于DeviceDrivers目錄下)、軟件方式I2C接口層(i2c-bit-ops.c,位于DeviceDrivers目錄下)、I2C硬件驅(qū)動(dòng)層(移植目標(biāo),本項(xiàng)目中為stm32_i2c.c,位于Drivers目錄下)、I2C外設(shè)驅(qū)動(dòng)層或應(yīng)用程序。

    圖1 RT-Thread下I2C總線驅(qū)動(dòng)架構(gòu)

    1.1 I2C總線設(shè)備層(i2c_dev.c)

    設(shè)備層(i2c_dev.c)是操作系統(tǒng)與總線核心層間的接口,同時(shí)規(guī)范了I2C總線設(shè)備的讀寫接口,一般用于I2C總線設(shè)備驅(qū)動(dòng)。

    設(shè)備層(i2c_dev.c)將I2C總線的操作抽象為基本操作接口(初始化、讀操作、寫操作、控制等),主要函數(shù)如表1所列。

    表1 i2c_dev.c主要函數(shù)

    常用的接口函數(shù)如下所示:

    static rt_err_t i2c_bus_device_control(rt_device_t dev,rt_uint8_t cmd,void *args); // 控制函數(shù)

    static rt_size_t i2c_bus_device_write(rt_device_t dev,rt_off_t pos,const void *buffer,rt_size_t count); //寫操作函數(shù)

    static rt_size_t i2c_bus_device_read(rt_device_t dev,rt_off_t pos, void *buffer, rt_size_t count); //讀操作函數(shù)

    其中,dev為I2C總線設(shè)備rt_device_t類型結(jié)構(gòu)體指針,cmd為操作類型,args為操作類型所對應(yīng)的數(shù)據(jù)(詳見i2c_dev.c),pos包含操作方式與操作地址(分別對應(yīng)pos的高十六位和低十六位),buffer為操作緩存首地址,count為緩存數(shù)據(jù)長度。

    1.2 I2C總線核心層(i2c_core.c)

    總線核心層(i2c_core.c)可作為應(yīng)用程序或者I2C外設(shè)驅(qū)動(dòng)的接口,是操作系統(tǒng)完成初始化及配置I2C驅(qū)動(dòng)及應(yīng)用程序或者I2C外設(shè)驅(qū)動(dòng)實(shí)現(xiàn)I2C配置及通信的媒介。該層所涉及的主要函數(shù)見表2。

    表2 總線核心層(i2c_core.c)主要函數(shù)

    需要說明的是,應(yīng)用程序或者驅(qū)動(dòng)向系統(tǒng)申請指定I2C的控制權(quán)需要通過總線核心層的rt_i2c_bus_device_find函數(shù),其具體形式如下所示:

    struct rt_i2c_bus_device *rt_i2c_bus_device_find (const char *bus_name);

    其中,bus_name為所需申請的I2C總線設(shè)備在系統(tǒng)注冊時(shí)所使用的名字。

    此外,總線核心層提供了三種I2C總線操作方式:傳輸(rt_i2c_transfer)、發(fā)送(rt_i2c_master_send)、接收(rt_i2c_master_recv)。其中rt_i2c_transfer是最常用的接口,具有讀及寫的功能,為驅(qū)動(dòng)或應(yīng)用程序開發(fā)提供了便利。其函數(shù)接口如下:rt_size_t rt_i2c_transfer(struct rt_i2c_bus_device *bus,struct rt_i2c_msg msgs[],rt_uint32_t num);

    其中,bus為所申請到的總線設(shè)備的rt_i2c_bus_device類型結(jié)構(gòu)體指針,msgs為需要進(jìn)行讀寫操作的rt_i2c_msg類型(需要根據(jù)讀寫時(shí)序來安排),num為msgs的維數(shù)。rt_i2c_msg結(jié)構(gòu)體具體如下所示:

    struct rt_i2c_msg{

    rt_uint16_t addr; //設(shè)備地址

    rt_uint16_t flags; //操作方式

    rt_uint16_t len; //讀寫數(shù)據(jù)長度

    rt_uint8_t *buf; //讀寫數(shù)據(jù)的起始地址

    };

    1.3 軟件方式I2C總線接口層(i2c-bit-ops.c)

    軟件方式I2C總線接口層(i2c-bit-ops.c)提供了使用GPIO來實(shí)現(xiàn)I2C總線通信的軟件方式接口函數(shù),將I2C總線通信過程中的開始、停止、發(fā)送、接收等具體操作規(guī)范化。用戶移植驅(qū)動(dòng)程序時(shí),無需再設(shè)計(jì)這些具體操作,只需要完成對應(yīng)GPIO配置及操作函數(shù)(rt_i2c_bit_ops結(jié)構(gòu)體中,詳見i2c-bit-ops.h文件)即可,極大地規(guī)范并方便了驅(qū)動(dòng)移植。其主要函數(shù)見表3。

    表3 i2c-bit-ops.c主要函數(shù)

    1.4 I2C總線硬件驅(qū)動(dòng)層

    I2C總線硬件驅(qū)動(dòng)層是I2C總線驅(qū)動(dòng)與硬件間的接口,是I2C總線驅(qū)動(dòng)的具體實(shí)現(xiàn),也是驅(qū)動(dòng)移植時(shí)必須完成的主要部分。RT-Thread將具體I2C總線操作抽象并封裝為I2C總線設(shè)備操作(rt_i2c_bus_device_ops),主要包括三個(gè)基本操作:主機(jī)傳輸(master_xfer)、從機(jī)傳輸(slave_xfer)、總線控制(i2c_bus_control),因此對于用戶來說,只需要完成所需基本操作的驅(qū)動(dòng)編寫即可完成驅(qū)動(dòng)的移植工作。以下分別介紹硬件I2C總線及軟件I2C總線的硬件驅(qū)動(dòng)層。

    1.4.1 硬件I2C

    對于硬件I2C,其總線的讀寫等具體操作都是通過寄存器的讀寫來完成的,因此驅(qū)動(dòng)移植時(shí),只需要按照所需操作的接口格式,對照寄存器手冊,完成程序編寫[10]。對于本文所使用的STM32F407VG,其I2C硬件驅(qū)動(dòng)層主要函數(shù)如表4所列。

    表4 硬件驅(qū)動(dòng)層(硬件I2C)主要函數(shù)

    其中,函數(shù)rt_hw_i2c_init的功能是初始化I2C總線硬件及驅(qū)動(dòng),其主要任務(wù)為:初始化I2C總線所使用的硬件資源(I2C控制器所涉及的寄存器),并將移植完成的操作函數(shù)入口地址等信息通過rt_i2c_bus_device_register函數(shù)向系統(tǒng)進(jìn)行注冊。

    1.4.2 軟件I2C

    軟件I2C是依據(jù)I2C通信時(shí)序標(biāo)準(zhǔn),通過控制GPIO口來實(shí)現(xiàn)通信。由于RT-Thread驅(qū)動(dòng)框架中已經(jīng)將軟件方式I2C進(jìn)行規(guī)范,提供標(biāo)準(zhǔn)接口層(i2c-bit-ops.c),因此,軟件I2C的移植也得到了簡化。與硬件I2C不同,軟件I2C的基本操作已經(jīng)被封裝在標(biāo)準(zhǔn)接口層中(i2c-bit-ops.c),驅(qū)動(dòng)移植時(shí)無需再重復(fù)這些工作,只需要提供標(biāo)準(zhǔn)接口層的具體實(shí)現(xiàn)函數(shù)(具體形式詳見i2c_bit_ops.h文件中的rt_i2c_bit_ops結(jié)構(gòu)體形式),對于本文所使用的STM32F407VG,其I2C硬件驅(qū)動(dòng)層需要移植的主要函數(shù)如表5所列。

    表5 硬件驅(qū)動(dòng)層(軟件I2C)主要函數(shù)

    此外,對于軟件I2C硬件驅(qū)動(dòng)層中的初始化函數(shù)(rt_hw_i2c_init),其主要編程工作為:①對I2C接口所使用的兩個(gè)I/O口進(jìn)行初始化;②將set_sda等函數(shù)指針及延時(shí)時(shí)間等參數(shù)封裝入rt_i2c_bit_ops結(jié)構(gòu)中;③調(diào)用rt_i2c_bit_add_bus函數(shù),借助rt_i2c_bit_ops結(jié)構(gòu)向標(biāo)準(zhǔn)接口層進(jìn)行注冊,進(jìn)一步由標(biāo)準(zhǔn)接口層向系統(tǒng)完成總線設(shè)備驅(qū)動(dòng)的注冊工作。

    2 I2C總線驅(qū)動(dòng)移植及應(yīng)用

    本節(jié)將詳細(xì)介紹RT-Thread下的I2C總線驅(qū)動(dòng)移植,并以24LC02B的讀寫為例,介紹I2C總線驅(qū)動(dòng)應(yīng)用。本文使用STM32F407VG的PB6和PB7引腳分別作為軟件I2C總線的SCL和SDA,以主模式連接24LC02B模塊。

    2.1 I2C總線驅(qū)動(dòng)移植

    本文所使用的RT-Thread 1.2.0版本提供了簡單的I2C驅(qū)動(dòng)支持。為了使用該模塊,需要將i2c_dev.c、i2c_core.c、i2c-bit-ops.c三個(gè)文件添加到工程項(xiàng)目中。之后,在rtconfig.h添加宏定義:

    #define RT_USING_I2C

    #define RT_USING_I2C_BITOPS

    I2C總線驅(qū)動(dòng)移植主要工作在I2C硬件驅(qū)動(dòng)層,該部分主要函數(shù)介紹見第1.4.2節(jié)。移植工作主要分為: I2C總線驅(qū)動(dòng)硬件初始化及操作方法和延時(shí)子程序。

    2.1.1 I2C總線驅(qū)動(dòng)硬件初始化及操作方法

    I2C總線驅(qū)動(dòng)硬件初始化主要完成I2C總線所涉及的兩個(gè)I/O引腳的硬件初始化及輸入輸出操作。對于STM32F407VG,I2C總線驅(qū)動(dòng)硬件初始化函數(shù)需要完成的操作如圖2所示:①GPIO引腳外設(shè)時(shí)鐘開啟;②GPIO引腳模式初始化;③rt_i2c_bus_device和rt_i2c_bit_ops結(jié)構(gòu)體初始化;④借助標(biāo)準(zhǔn)的接口層向系統(tǒng)注冊I2C總線(rt_i2c_bit_add_bus)。在系統(tǒng)初始化時(shí)(如rt_init_thread_entry中)調(diào)用該函數(shù),即可完成I2C總線驅(qū)動(dòng)的硬件及系統(tǒng)初始化。

    圖2 I2C總線驅(qū)動(dòng)硬件初始化流程圖

    操作方法主要完成set_sda、set_scl、get_sda、get_scl四種基本操作的移植,用戶可以根據(jù)處理器手冊和庫函數(shù)編程實(shí)現(xiàn)。最后需要將這4個(gè)函數(shù)的入口地址通過rt_i2c_bit_ops類型結(jié)構(gòu)體形式傳遞給操作系統(tǒng)。

    需要說明的是,向系統(tǒng)注冊的I2C總線接口函數(shù)如下:

    rt_err_t rt_i2c_bit_add_bus(struct rt_i2c_bus_device *bus, const char *bus_name);

    其中,指針bus是指向包含硬件驅(qū)動(dòng)層信息的rt_i2c_

    bus_device類型結(jié)構(gòu)體,name為向系統(tǒng)注冊的該I2C總線名,用戶可以通過name向系統(tǒng)申請和訪問該I2C總線。

    2.1.2 延時(shí)子程序

    延時(shí)子程序主要用于實(shí)現(xiàn)I2C通信時(shí)序,其默認(rèn)單位為μs,準(zhǔn)確的延時(shí)子程序有助于正確設(shè)置I2C通信速率。對于使用while(i)形式的延時(shí)子程序,用戶需要根據(jù)處理器的頻率進(jìn)行有針對性的調(diào)整。

    2.2 I2C總線設(shè)備驅(qū)動(dòng)應(yīng)用

    24LC02B是一款串行CMOS EEPROM芯片,該芯片使用I2C總線進(jìn)行讀寫等控制。其單字節(jié)寫入時(shí)序、隨機(jī)讀取時(shí)序分別如圖3和圖4所示[9]。本節(jié)將以在指定位置寫入數(shù)據(jù),并讀取該指定位置數(shù)據(jù)為例,來詳細(xì)介紹RT-Thread下I2C總線設(shè)備驅(qū)動(dòng)的總線核心層接口函數(shù)應(yīng)用,并驗(yàn)證驅(qū)動(dòng)移植的有效性(I2C設(shè)備層一般用于驅(qū)動(dòng)編寫,相對復(fù)雜,由于篇幅所限,本文使用簡潔的總線核心層)。

    圖3 24LC02B字節(jié)寫入時(shí)序

    圖4 24LC02B隨機(jī)讀取時(shí)序

    總線核心層接口函數(shù)如第1.2節(jié)中介紹,相比總線設(shè)備層接口函數(shù),其接口函數(shù)格式更簡單、直觀,方便讀寫時(shí)序的實(shí)現(xiàn)。使用總線核心層接口實(shí)現(xiàn)24LC02B讀寫的程序流程圖如圖5所示。

    圖5 24LC02B讀寫程序流程

    首先,調(diào)用rt_i2c_bus_device_find函數(shù)向系統(tǒng)申請所需的總線設(shè)備(如圖中“i2c1”);正確申請到總線設(shè)備后,系統(tǒng)會(huì)將該I2C總線設(shè)備的rt_i2c_bus_device類型結(jié)構(gòu)體指針返回(如圖中存儲(chǔ)在dev中),利用該指針和rt_i2c_transfer函數(shù)(詳見第1.2節(jié))即可實(shí)現(xiàn)24LC02B的字節(jié)寫入與讀取操作,其關(guān)鍵是根據(jù)讀寫時(shí)序合理設(shè)置rt_i2c_msg結(jié)構(gòu)體。

    對于指定位置寫入數(shù)據(jù)操作,其寫入順序?yàn)椋簩懣刂谱帧懭胫付ㄎ恢玫刂?、寫入?shù)據(jù)。因此,只需要一個(gè)rt_i2c_msg結(jié)構(gòu)體(本程序中使用msg_wr),其具體內(nèi)容為:

    msg_wr.addr =24LC02B;

    //24LC02B地址

    msg_wr.buf = msg_buf_wr;

    msg_wr.flags = RT_I2C_WR; //寫操作

    msg_buf_wr[0] = 23; //指定寫入地址

    msg_buf_wr[1]++;

    msg_wr.len = 2; //操作數(shù)據(jù)長度

    len = rt_i2c_transfer(dev,&msg_wr,1); //返回寫入字符數(shù)

    對于讀取指定位置數(shù)據(jù)操作,其寫入順序?yàn)椋簩懣刂谱?、寫入指定位置地址、寫控制字、讀取數(shù)據(jù)。注意:兩次寫控制字間不能有STOP時(shí)序。因此不能使用兩次rt_i2c_transfer來實(shí)現(xiàn)該操作,應(yīng)該使用兩個(gè)rt_i2c_msg結(jié)構(gòu)體來實(shí)現(xiàn)(本程序中記為使用msg_rd[2]),其具體內(nèi)容為:

    // msg_rd[0]初始化

    msg_rd[0].addr = 24LC02B;

    //24LC02B地址

    msg_rd[0].buf = msg_buf_wr;

    msg_rd[0].flags = RT_I2C_WR; //寫操作

    msg_buf_wr[0] = 23; //指定讀取地址

    msg_rd[0].len = 1; //操作數(shù)據(jù)長度

    // msg_rd[1]初始化

    msg_rd[1].addr = 24LC02B; //24LC02B地址

    msg_rd[1].buf = msg_buf_rd;

    msg_rd[1].flags = RT_I2C_RD; //讀操作

    msg_buf_wr[0] = 23; //指定讀取地址

    msg_rd[0].len = 1; //操作數(shù)據(jù)長度

    len = rt_i2c_transfer(dev,msg_rd,2);

    //返回讀取到的字節(jié)數(shù)

    由圖6所示實(shí)驗(yàn)結(jié)果可知,程序正確申請到I2C總線設(shè)備后,在地址為23處,從0開始寫入字節(jié)數(shù)據(jù),隨后讀取該地址上的字節(jié)數(shù)據(jù),通過對比可以看出,讀取到的數(shù)據(jù)與寫入數(shù)據(jù)完全相同。綜上所述,本次I2C總線設(shè)備的驅(qū)動(dòng)移植是成功的,并且利用I2C總線核心層接口進(jìn)行24LC02B的讀寫操作應(yīng)用也是成功的。

    結(jié) 語

    圖6 實(shí)驗(yàn)結(jié)果

    [1] 曹成.嵌入式實(shí)時(shí)操作系統(tǒng)RT-Thread原理分析與應(yīng)用[D].青島:山東科技大學(xué),2011.

    [2] 宋天楹,張紅梅,馮歡.CAN-RS232轉(zhuǎn)換器在實(shí)時(shí)操作系統(tǒng)RT-Thread上的實(shí)現(xiàn)[J].自動(dòng)化儀表,2012,33(4):70-72.

    [3] 蘇憲利,鄭一麟.基于RT-thread的機(jī)床物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2014(6):69-72.

    [4] 張麗彪,駱東佳,張艦航,等.基于RT-Thread和Yeelink的物聯(lián)網(wǎng)平臺(tái)開發(fā)的應(yīng)用設(shè)計(jì)[J].電子技術(shù)與軟件工程,2015(16):70-70.

    [5] 李云紅,田冀達(dá),陳航.RT-Thread操作系統(tǒng)的電池管理系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2015(7):14-17.

    [6] 李祥兵,鄭扣根.Linux中I2C總線驅(qū)動(dòng)程序的開發(fā)[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(1):41-43.

    [7] 朱南皓,李正祥.嵌入式Linux中I2C設(shè)備驅(qū)動(dòng)程序的研究與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2010,26(11):67-69.

    [8] RT-Thread開發(fā)組.RT-Thread編程指南,2014.

    [9] Microchip Technology Inc.24LC01B/02B 1K/2K 2.5V CMOS EEPROMs,1995.

    [10] STMicroelectronics.RM0090 Reference manual STM32 F405xx, STM32F407xx,STM32F415xx and STM32 F417xx advanced ARM-based 32-bit MCUs,2012.

    [4] 邵長彬,李洪亮.用Busybox制作嵌入式Linux根文件系統(tǒng)[J].微計(jì)算機(jī)信息,2007,23(10-2):48-50.

    [5] 查啟鵬.基于嵌入式Linux的Flash驅(qū)動(dòng)與文件系統(tǒng)的研究與實(shí)現(xiàn)[D].南京:東南大學(xué),2008.

    [6] 王學(xué)龍.嵌入式Linux系統(tǒng)設(shè)計(jì)與應(yīng)用[M].北京:清華大學(xué)出版社,2001.

    [7] 彭浩,龔杰,秦建敏.基于S3C2440的嵌入式Linux根文件系統(tǒng)構(gòu)建[J].電子設(shè)計(jì)工程,2010,18(6):20-22.

    [8] 李桂香,常赟杰.嵌入式Linux文件系統(tǒng)研究與應(yīng)用[J].電腦開發(fā)與應(yīng)用,2010,23(5):5-7.

    陳選育(工程師),研究方向?yàn)楣馔ㄐ偶夹g(shù)、嵌入式軟件開發(fā)。

    (責(zé)任編輯:薛士然 收稿日期:2016-06-23)

    Structure Analysis,Migration and Application of I2C Bus Driver for RT-Thread

    Gao Pei

    (Department of Information Technology,Fujian International Business&Economic College,Fuzhou 350016,China)

    Aiming at the I2C bus driver of RT-Thread operating system,the structure of I2C bus driver is presented and analyzed.The I2C driver migration process is introduced with the example of the I2C drive migration for STM32F407VG,and by the read/write 24LC02B through STM32F407VG,the I2C programming steps and technical details are introduced.Finally,an experiment is taken to verify the effectiveness of the migration and programming of I2C driver.The experiment results show that the I2C bus driver structure of RT-Thread is simple and easy for migration.

    RT-Thread;I2C;driver structure;migration;application

    TP316.2

    A

    ?士然

    2016-06-17)

    猜你喜歡
    核心層時(shí)序嵌入式
    時(shí)序坐標(biāo)
    職業(yè)教育教師核心能力結(jié)構(gòu)模型構(gòu)建、特征分析及實(shí)踐價(jià)值
    基于Sentinel-2時(shí)序NDVI的麥冬識(shí)別研究
    搭建基于Qt的嵌入式開發(fā)平臺(tái)
    淺談寬帶IP城域網(wǎng)結(jié)構(gòu)規(guī)劃和建設(shè)
    嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
    一種毫米波放大器時(shí)序直流電源的設(shè)計(jì)
    電子制作(2016年15期)2017-01-15 13:39:08
    校園網(wǎng)核心層設(shè)計(jì)探究
    Altera加入嵌入式視覺聯(lián)盟
    倍福 CX8091嵌入式控制器
    亚洲中文字幕日韩| 他把我摸到了高潮在线观看 | 精品乱码久久久久久99久播| 国产一卡二卡三卡精品| 精品乱码久久久久久99久播| av有码第一页| 日韩大片免费观看网站| 高清视频免费观看一区二区| 国产深夜福利视频在线观看| 丝袜在线中文字幕| 97在线人人人人妻| 精品国产亚洲在线| 嫩草影视91久久| 好男人电影高清在线观看| 久久国产精品男人的天堂亚洲| 精品一品国产午夜福利视频| 日韩精品免费视频一区二区三区| 欧美午夜高清在线| 老汉色av国产亚洲站长工具| 亚洲久久久国产精品| 午夜福利一区二区在线看| av天堂在线播放| 国产亚洲av高清不卡| 日韩一区二区三区影片| 女同久久另类99精品国产91| 成人特级黄色片久久久久久久 | 亚洲 国产 在线| av天堂在线播放| 国产免费av片在线观看野外av| 人妻 亚洲 视频| 另类亚洲欧美激情| 国产在线免费精品| 一夜夜www| 国产成人免费观看mmmm| 老司机深夜福利视频在线观看| 日韩制服丝袜自拍偷拍| 叶爱在线成人免费视频播放| 人妻久久中文字幕网| 欧美 亚洲 国产 日韩一| 国产在线一区二区三区精| 黄色视频不卡| 日韩有码中文字幕| 亚洲欧美一区二区三区久久| 亚洲第一av免费看| 午夜福利在线观看吧| www.精华液| 手机成人av网站| 欧美在线黄色| 久久久久国内视频| 怎么达到女性高潮| 亚洲国产av新网站| 久久久久精品国产欧美久久久| 亚洲午夜精品一区,二区,三区| 美女午夜性视频免费| 18禁美女被吸乳视频| 少妇的丰满在线观看| 夜夜骑夜夜射夜夜干| 91成人精品电影| 俄罗斯特黄特色一大片| 自拍欧美九色日韩亚洲蝌蚪91| 欧美 亚洲 国产 日韩一| 搡老岳熟女国产| 久久精品国产亚洲av高清一级| 国产精品亚洲av一区麻豆| 精品久久久精品久久久| 国产不卡一卡二| 亚洲性夜色夜夜综合| av片东京热男人的天堂| 国产精品熟女久久久久浪| 欧美精品高潮呻吟av久久| 狠狠婷婷综合久久久久久88av| 在线av久久热| 欧美国产精品va在线观看不卡| 免费少妇av软件| 满18在线观看网站| √禁漫天堂资源中文www| 精品福利观看| 亚洲久久久国产精品| 亚洲一卡2卡3卡4卡5卡精品中文| 一本久久精品| 国产精品久久久人人做人人爽| 一边摸一边抽搐一进一小说 | 手机成人av网站| 亚洲精品久久成人aⅴ小说| 亚洲精华国产精华精| 搡老乐熟女国产| 丰满饥渴人妻一区二区三| 99国产精品免费福利视频| 波多野结衣一区麻豆| 免费一级毛片在线播放高清视频 | 欧美另类亚洲清纯唯美| 日韩中文字幕欧美一区二区| 国产免费现黄频在线看| 两人在一起打扑克的视频| 一本大道久久a久久精品| 少妇精品久久久久久久| 中国美女看黄片| 国产一区二区 视频在线| 动漫黄色视频在线观看| 99精国产麻豆久久婷婷| 欧美国产精品一级二级三级| 另类精品久久| 欧美日韩亚洲综合一区二区三区_| 99热网站在线观看| 国产亚洲av高清不卡| 91精品三级在线观看| 女警被强在线播放| 757午夜福利合集在线观看| 日韩精品免费视频一区二区三区| 午夜精品久久久久久毛片777| 在线观看免费高清a一片| 国产精品影院久久| 天堂中文最新版在线下载| 国产麻豆69| 免费av中文字幕在线| 久久久国产成人免费| 最黄视频免费看| 两人在一起打扑克的视频| 精品第一国产精品| 热99国产精品久久久久久7| 久久久久久免费高清国产稀缺| 国产野战对白在线观看| 深夜精品福利| 天堂中文最新版在线下载| 久久性视频一级片| av又黄又爽大尺度在线免费看| 人人妻人人添人人爽欧美一区卜| 国产精品熟女久久久久浪| 老熟女久久久| 老鸭窝网址在线观看| 丰满迷人的少妇在线观看| 亚洲国产欧美日韩在线播放| 男女之事视频高清在线观看| 久久久久久久久免费视频了| 纯流量卡能插随身wifi吗| 黑丝袜美女国产一区| 自拍欧美九色日韩亚洲蝌蚪91| 侵犯人妻中文字幕一二三四区| 十八禁网站免费在线| 国产麻豆69| 五月天丁香电影| 热99久久久久精品小说推荐| 午夜老司机福利片| 成年人午夜在线观看视频| 蜜桃在线观看..| 免费观看a级毛片全部| 亚洲欧美一区二区三区久久| kizo精华| 女人精品久久久久毛片| 动漫黄色视频在线观看| 亚洲精品中文字幕一二三四区 | 人妻一区二区av| 国产精品美女特级片免费视频播放器 | 亚洲色图av天堂| 亚洲av美国av| 国产麻豆69| 9热在线视频观看99| 亚洲久久久国产精品| aaaaa片日本免费| 欧美激情久久久久久爽电影 | 国产亚洲精品一区二区www | 别揉我奶头~嗯~啊~动态视频| 亚洲中文日韩欧美视频| 一区福利在线观看| 午夜老司机福利片| 亚洲欧美激情在线| 肉色欧美久久久久久久蜜桃| 色视频在线一区二区三区| 97在线人人人人妻| 亚洲精华国产精华精| 啦啦啦中文免费视频观看日本| 丝袜喷水一区| 欧美精品一区二区免费开放| 欧美国产精品va在线观看不卡| 精品乱码久久久久久99久播| 热99re8久久精品国产| a级毛片黄视频| 精品人妻熟女毛片av久久网站| 两人在一起打扑克的视频| 在线观看免费午夜福利视频| 成人精品一区二区免费| 日韩欧美一区二区三区在线观看 | 夜夜夜夜夜久久久久| 97人妻天天添夜夜摸| 天堂动漫精品| 老司机午夜福利在线观看视频 | 69av精品久久久久久 | 99国产综合亚洲精品| av一本久久久久| 自线自在国产av| 少妇裸体淫交视频免费看高清 | tocl精华| 97人妻天天添夜夜摸| 男女床上黄色一级片免费看| 亚洲熟女精品中文字幕| 亚洲欧美精品综合一区二区三区| 人人妻人人澡人人爽人人夜夜| 欧美中文综合在线视频| 国产野战对白在线观看| 波多野结衣一区麻豆| 亚洲自偷自拍图片 自拍| 亚洲av美国av| √禁漫天堂资源中文www| 天天躁夜夜躁狠狠躁躁| 久久天躁狠狠躁夜夜2o2o| 在线观看免费高清a一片| 久久亚洲精品不卡| 久久久久久亚洲精品国产蜜桃av| 少妇粗大呻吟视频| 老鸭窝网址在线观看| 一区二区三区国产精品乱码| 午夜福利乱码中文字幕| bbb黄色大片| 欧美精品亚洲一区二区| 少妇裸体淫交视频免费看高清 | 欧美日韩一级在线毛片| 一二三四在线观看免费中文在| 成人免费观看视频高清| 久久人妻av系列| 男女午夜视频在线观看| 日本av免费视频播放| 国产精品熟女久久久久浪| 国产一区二区三区综合在线观看| 国产精品久久电影中文字幕 | 一区福利在线观看| 一本色道久久久久久精品综合| 天堂俺去俺来也www色官网| 欧美日韩亚洲综合一区二区三区_| 国产一区二区 视频在线| 国产精品麻豆人妻色哟哟久久| 青草久久国产| 亚洲色图av天堂| 91成年电影在线观看| 黄色丝袜av网址大全| av天堂在线播放| 在线观看免费日韩欧美大片| 色老头精品视频在线观看| 大香蕉久久网| 色视频在线一区二区三区| 亚洲国产看品久久| 国产区一区二久久| 大型黄色视频在线免费观看| 久久午夜亚洲精品久久| 亚洲专区国产一区二区| 69av精品久久久久久 | 国产精品 国内视频| 午夜日韩欧美国产| 欧美精品高潮呻吟av久久| 亚洲一码二码三码区别大吗| 三级毛片av免费| 久久 成人 亚洲| 亚洲av成人不卡在线观看播放网| 国产午夜精品久久久久久| 国产精品成人在线| 最新美女视频免费是黄的| 一级黄色大片毛片| a级片在线免费高清观看视频| 欧美乱妇无乱码| av一本久久久久| 成人特级黄色片久久久久久久 | 午夜精品久久久久久毛片777| 欧美久久黑人一区二区| 精品国产超薄肉色丝袜足j| 男女床上黄色一级片免费看| 久久香蕉激情| 成人精品一区二区免费| 久久狼人影院| 欧美在线一区亚洲| 久久精品亚洲精品国产色婷小说| 精品久久久久久久毛片微露脸| 黑人欧美特级aaaaaa片| 日韩欧美一区二区三区在线观看 | 欧美久久黑人一区二区| 另类亚洲欧美激情| 成人18禁在线播放| 精品人妻在线不人妻| 99热网站在线观看| 99久久人妻综合| 制服诱惑二区| 激情视频va一区二区三区| 久久久久久久精品吃奶| 两性午夜刺激爽爽歪歪视频在线观看 | 亚洲国产成人一精品久久久| 欧美乱妇无乱码| av免费在线观看网站| 日韩欧美免费精品| 亚洲欧美一区二区三区久久| 露出奶头的视频| 午夜免费鲁丝| 亚洲成av片中文字幕在线观看| 欧美国产精品一级二级三级| 欧美在线黄色| 婷婷丁香在线五月| 国产日韩欧美在线精品| 中文字幕色久视频| 日韩成人在线观看一区二区三区| 桃花免费在线播放| 亚洲少妇的诱惑av| 亚洲人成伊人成综合网2020| 欧美日韩黄片免| 久久久久国内视频| 黑人巨大精品欧美一区二区mp4| 国产男女超爽视频在线观看| 丰满人妻熟妇乱又伦精品不卡| 热re99久久精品国产66热6| 国产淫语在线视频| 亚洲av成人不卡在线观看播放网| 久久久久精品人妻al黑| 日本vs欧美在线观看视频| 在线十欧美十亚洲十日本专区| 国产野战对白在线观看| 精品国产一区二区三区久久久樱花| 成人国产av品久久久| 极品少妇高潮喷水抽搐| 狠狠狠狠99中文字幕| 午夜久久久在线观看| 天堂俺去俺来也www色官网| 国产欧美亚洲国产| 麻豆国产av国片精品| 一本大道久久a久久精品| 精品亚洲成国产av| 国产成人精品久久二区二区免费| 动漫黄色视频在线观看| 丝袜美腿诱惑在线| 99国产精品99久久久久| 亚洲中文av在线| 高潮久久久久久久久久久不卡| 亚洲视频免费观看视频| 久久国产精品人妻蜜桃| 99精品欧美一区二区三区四区| 欧美大码av| av视频免费观看在线观看| 精品午夜福利视频在线观看一区 | 欧美日韩一级在线毛片| 狠狠精品人妻久久久久久综合| 免费观看a级毛片全部| 在线观看www视频免费| 汤姆久久久久久久影院中文字幕| 亚洲精品成人av观看孕妇| 最近最新免费中文字幕在线| 国产精品98久久久久久宅男小说| 色精品久久人妻99蜜桃| 日韩一区二区三区影片| 欧美成狂野欧美在线观看| 女同久久另类99精品国产91| 在线观看免费日韩欧美大片| 亚洲精品中文字幕在线视频| 中文字幕人妻熟女乱码| 天天躁夜夜躁狠狠躁躁| 极品人妻少妇av视频| 自线自在国产av| 亚洲人成电影免费在线| 男人舔女人的私密视频| 国产国语露脸激情在线看| 久久久久久久国产电影| 99久久国产精品久久久| 国产男靠女视频免费网站| 精品久久久久久电影网| 极品少妇高潮喷水抽搐| 日韩中文字幕视频在线看片| 男女无遮挡免费网站观看| 大码成人一级视频| 国产主播在线观看一区二区| 黄色丝袜av网址大全| 国产精品国产av在线观看| 久久久精品94久久精品| 91麻豆精品激情在线观看国产 | 亚洲国产中文字幕在线视频| 热99久久久久精品小说推荐| 青青草视频在线视频观看| 男女床上黄色一级片免费看| 一级毛片精品| 老司机影院毛片| netflix在线观看网站| 亚洲人成77777在线视频| 大片免费播放器 马上看| 日韩熟女老妇一区二区性免费视频| 真人做人爱边吃奶动态| 黑丝袜美女国产一区| 女人爽到高潮嗷嗷叫在线视频| 老司机影院毛片| 咕卡用的链子| 国产免费福利视频在线观看| 国产精品1区2区在线观看. | 国产97色在线日韩免费| 欧美在线黄色| 在线播放国产精品三级| 亚洲成av片中文字幕在线观看| 人人妻人人添人人爽欧美一区卜| 成人免费观看视频高清| 日韩免费高清中文字幕av| 一夜夜www| 国产老妇伦熟女老妇高清| 久久精品国产亚洲av高清一级| 美女国产高潮福利片在线看| 久久精品成人免费网站| 老汉色∧v一级毛片| 亚洲人成电影免费在线| 免费看a级黄色片| 国产精品亚洲av一区麻豆| 巨乳人妻的诱惑在线观看| 免费久久久久久久精品成人欧美视频| 国产一卡二卡三卡精品| 免费在线观看日本一区| 性高湖久久久久久久久免费观看| 国产亚洲精品一区二区www | 国产片内射在线| 国产91精品成人一区二区三区 | 中文字幕另类日韩欧美亚洲嫩草| 中文字幕av电影在线播放| 亚洲成人国产一区在线观看| www.精华液| 免费少妇av软件| 日本撒尿小便嘘嘘汇集6| 国产精品亚洲一级av第二区| 51午夜福利影视在线观看| 亚洲中文日韩欧美视频| 日韩欧美三级三区| 国产成人啪精品午夜网站| 国产亚洲精品第一综合不卡| 大香蕉久久成人网| 久久久久网色| 黄色视频,在线免费观看| 黄色怎么调成土黄色| 另类亚洲欧美激情| 777米奇影视久久| 人人妻,人人澡人人爽秒播| 久久午夜亚洲精品久久| 国产精品1区2区在线观看. | www.999成人在线观看| 久久久久精品国产欧美久久久| tube8黄色片| 菩萨蛮人人尽说江南好唐韦庄| 久久久久久久大尺度免费视频| 在线观看免费日韩欧美大片| 久热爱精品视频在线9| 亚洲av日韩在线播放| 99国产精品一区二区三区| 色综合婷婷激情| 精品国产一区二区三区四区第35| 菩萨蛮人人尽说江南好唐韦庄| 每晚都被弄得嗷嗷叫到高潮| 日韩大码丰满熟妇| 曰老女人黄片| 久久人妻熟女aⅴ| 王馨瑶露胸无遮挡在线观看| 一本一本久久a久久精品综合妖精| 法律面前人人平等表现在哪些方面| tube8黄色片| 桃花免费在线播放| 亚洲av成人不卡在线观看播放网| 99精品久久久久人妻精品| 悠悠久久av| 精品熟女少妇八av免费久了| 亚洲欧美激情在线| 国产成人av教育| 国产精品久久久av美女十八| 欧美大码av| 欧美激情极品国产一区二区三区| 亚洲自偷自拍图片 自拍| 久久天躁狠狠躁夜夜2o2o| 999精品在线视频| 精品一区二区三区四区五区乱码| avwww免费| 9色porny在线观看| 成在线人永久免费视频| 97人妻天天添夜夜摸| 成年人黄色毛片网站| 亚洲精品在线观看二区| 多毛熟女@视频| 天堂动漫精品| 无限看片的www在线观看| 夜夜爽天天搞| 欧美日韩亚洲高清精品| 老司机午夜福利在线观看视频 | 狂野欧美激情性xxxx| 极品少妇高潮喷水抽搐| 免费不卡黄色视频| 欧美在线黄色| 高潮久久久久久久久久久不卡| 精品乱码久久久久久99久播| 9色porny在线观看| 在线天堂中文资源库| 一本大道久久a久久精品| 中国美女看黄片| 三上悠亚av全集在线观看| 99热网站在线观看| 国产欧美日韩一区二区三| 国产成人免费无遮挡视频| 狠狠婷婷综合久久久久久88av| 一级黄色大片毛片| 久久久精品国产亚洲av高清涩受| 午夜福利乱码中文字幕| 一级毛片精品| 久久久精品94久久精品| 成人免费观看视频高清| 欧美日韩av久久| 久久久国产成人免费| 波多野结衣av一区二区av| av天堂久久9| 一个人免费在线观看的高清视频| 黄色视频在线播放观看不卡| 日韩有码中文字幕| 日韩精品免费视频一区二区三区| 精品国内亚洲2022精品成人 | 免费看十八禁软件| 99久久人妻综合| 免费av中文字幕在线| 五月开心婷婷网| 老熟妇乱子伦视频在线观看| 亚洲一卡2卡3卡4卡5卡精品中文| 久久国产精品男人的天堂亚洲| 久久久久久久久免费视频了| 少妇裸体淫交视频免费看高清 | 国产精品电影一区二区三区 | 高清av免费在线| 99re6热这里在线精品视频| 一本久久精品| 久久九九热精品免费| 亚洲美女黄片视频| 国产一区二区 视频在线| 俄罗斯特黄特色一大片| 建设人人有责人人尽责人人享有的| 99热网站在线观看| a级片在线免费高清观看视频| 99九九在线精品视频| 国产黄色免费在线视频| 国产精品影院久久| 搡老乐熟女国产| 国产男女超爽视频在线观看| 国产视频一区二区在线看| 亚洲国产av影院在线观看| 国产精品久久久人人做人人爽| 亚洲中文日韩欧美视频| 亚洲精品自拍成人| 精品人妻1区二区| 久久午夜综合久久蜜桃| 欧美日韩亚洲综合一区二区三区_| 黄网站色视频无遮挡免费观看| 老司机午夜十八禁免费视频| 国产一卡二卡三卡精品| 国产在视频线精品| 国产色视频综合| 国产成人系列免费观看| 黄片播放在线免费| 满18在线观看网站| 天天躁夜夜躁狠狠躁躁| 在线播放国产精品三级| 99精国产麻豆久久婷婷| 久久久精品区二区三区| 老司机午夜福利在线观看视频 | 91大片在线观看| 国产有黄有色有爽视频| 亚洲精品中文字幕在线视频| av网站在线播放免费| 欧美日本中文国产一区发布| 亚洲一区中文字幕在线| 国产国语露脸激情在线看| av视频免费观看在线观看| netflix在线观看网站| 欧美日韩成人在线一区二区| 国产精品麻豆人妻色哟哟久久| 日本av手机在线免费观看| 大型av网站在线播放| 中文字幕制服av| 黑人猛操日本美女一级片| 成在线人永久免费视频| 精品一区二区三区视频在线观看免费 | 国产精品香港三级国产av潘金莲| 一级毛片精品| 久久精品成人免费网站| 无遮挡黄片免费观看| xxxhd国产人妻xxx| av网站免费在线观看视频| 国产在线一区二区三区精| 丰满迷人的少妇在线观看| 久久精品国产亚洲av高清一级| 纯流量卡能插随身wifi吗| www.熟女人妻精品国产| 黄色视频,在线免费观看| 精品一区二区三区视频在线观看免费 | 久久中文看片网| 一本大道久久a久久精品| 亚洲一卡2卡3卡4卡5卡精品中文| 两个人免费观看高清视频| 亚洲午夜理论影院| 日本av免费视频播放| 成年动漫av网址| 久久精品国产综合久久久| 久久九九热精品免费| 日韩精品免费视频一区二区三区| 亚洲av成人一区二区三| 中文欧美无线码| 成年动漫av网址| 久久精品国产综合久久久| 亚洲色图 男人天堂 中文字幕| 精品视频人人做人人爽| 色综合婷婷激情| 国产色视频综合| 亚洲精品久久成人aⅴ小说| 搡老熟女国产l中国老女人| 欧美乱妇无乱码| 欧美黑人精品巨大| 国产在视频线精品| 欧美日韩福利视频一区二区| 一区福利在线观看| 香蕉久久夜色| 欧美日韩一级在线毛片| 亚洲精品一二三| 色婷婷久久久亚洲欧美| 亚洲国产av影院在线观看| 99国产精品免费福利视频| 欧美精品亚洲一区二区| 一本—道久久a久久精品蜜桃钙片| 国产精品九九99|