• <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嵌入式控制器
    赤兔流量卡办理| 视频区图区小说| 一边亲一边摸免费视频| 一级毛片我不卡| 国产视频内射| 国产精品国产av在线观看| 国产免费现黄频在线看| 国产精品一国产av| 国产精品无大码| 欧美日韩成人在线一区二区| 亚洲精品自拍成人| 最近中文字幕2019免费版| 久久鲁丝午夜福利片| 伦精品一区二区三区| 免费看光身美女| 成年人免费黄色播放视频| 99国产精品免费福利视频| 亚洲无线观看免费| 欧美日本中文国产一区发布| 尾随美女入室| 欧美激情国产日韩精品一区| 性高湖久久久久久久久免费观看| 成人亚洲精品一区在线观看| 亚洲中文av在线| 91国产中文字幕| 激情五月婷婷亚洲| 99热6这里只有精品| 国产色爽女视频免费观看| 日韩熟女老妇一区二区性免费视频| 国产精品偷伦视频观看了| 一级a做视频免费观看| 国语对白做爰xxxⅹ性视频网站| 三上悠亚av全集在线观看| 欧美激情 高清一区二区三区| 成人毛片a级毛片在线播放| 七月丁香在线播放| 日韩免费高清中文字幕av| 成年av动漫网址| 亚洲在久久综合| 蜜臀久久99精品久久宅男| 日韩av免费高清视频| 一本大道久久a久久精品| 亚洲不卡免费看| 亚洲中文av在线| 在线观看免费高清a一片| 三级国产精品片| 午夜免费观看性视频| 伊人久久精品亚洲午夜| 欧美日韩一区二区视频在线观看视频在线| av又黄又爽大尺度在线免费看| 亚洲婷婷狠狠爱综合网| 国产亚洲精品第一综合不卡 | 亚洲精品亚洲一区二区| 丰满迷人的少妇在线观看| 久久久久网色| 女的被弄到高潮叫床怎么办| 在线观看人妻少妇| 久久av网站| 2022亚洲国产成人精品| 综合色丁香网| 自线自在国产av| 国产在线免费精品| 七月丁香在线播放| 精品人妻熟女av久视频| 国产伦理片在线播放av一区| 亚洲精品日韩av片在线观看| 久久青草综合色| 成人二区视频| 亚洲成色77777| 人人妻人人澡人人看| 亚洲色图综合在线观看| 三上悠亚av全集在线观看| 精品酒店卫生间| 日韩精品有码人妻一区| 春色校园在线视频观看| 在线观看免费视频网站a站| 中文天堂在线官网| 美女xxoo啪啪120秒动态图| 欧美3d第一页| 久久精品人人爽人人爽视色| 精品久久久久久电影网| 色婷婷久久久亚洲欧美| av专区在线播放| 男的添女的下面高潮视频| 国产男女内射视频| 99久国产av精品国产电影| 国产精品麻豆人妻色哟哟久久| 高清午夜精品一区二区三区| 大片电影免费在线观看免费| 好男人视频免费观看在线| 国产 精品1| 美女视频免费永久观看网站| 久久久久久久久久人人人人人人| 欧美精品国产亚洲| 日韩 亚洲 欧美在线| 成人午夜精彩视频在线观看| av网站免费在线观看视频| 免费av中文字幕在线| 久久精品夜色国产| 欧美日本中文国产一区发布| 亚洲av成人精品一二三区| 啦啦啦中文免费视频观看日本| 亚洲国产欧美日韩在线播放| 久久国产精品大桥未久av| 99热网站在线观看| 中文乱码字字幕精品一区二区三区| 男人添女人高潮全过程视频| 国产精品偷伦视频观看了| 91在线精品国自产拍蜜月| 国产一级毛片在线| 国产精品国产av在线观看| 中文欧美无线码| 久久99热这里只频精品6学生| 国产精品蜜桃在线观看| 亚洲av二区三区四区| 少妇人妻久久综合中文| 熟女人妻精品中文字幕| 国产成人一区二区在线| 精品一区二区免费观看| 少妇人妻精品综合一区二区| 91精品一卡2卡3卡4卡| 在线观看免费日韩欧美大片 | 亚洲av二区三区四区| 成人国语在线视频| 一边摸一边做爽爽视频免费| 久久精品人人爽人人爽视色| 国产男女内射视频| 18禁观看日本| 国产永久视频网站| 午夜免费鲁丝| 亚洲国产毛片av蜜桃av| 男女啪啪激烈高潮av片| 久久 成人 亚洲| 亚洲美女搞黄在线观看| 精品熟女少妇av免费看| 9色porny在线观看| 性色av一级| 丝袜喷水一区| av有码第一页| 国产永久视频网站| 街头女战士在线观看网站| 国产伦精品一区二区三区视频9| 王馨瑶露胸无遮挡在线观看| 两个人免费观看高清视频| 国产一区二区三区av在线| 久久影院123| 午夜激情福利司机影院| 91精品一卡2卡3卡4卡| 精品国产乱码久久久久久小说| 国产免费一区二区三区四区乱码| 少妇被粗大的猛进出69影院 | 日韩不卡一区二区三区视频在线| a级毛片黄视频| 蜜桃在线观看..| 成人黄色视频免费在线看| 美女福利国产在线| 一区二区日韩欧美中文字幕 | 精品久久久久久电影网| 少妇人妻精品综合一区二区| 久久精品人人爽人人爽视色| 黑人猛操日本美女一级片| 国产精品久久久久久久久免| 男女免费视频国产| 日韩成人av中文字幕在线观看| 美女视频免费永久观看网站| 99国产综合亚洲精品| 国产成人精品婷婷| 欧美日韩亚洲高清精品| 日韩一本色道免费dvd| 视频中文字幕在线观看| 99热这里只有精品一区| 91午夜精品亚洲一区二区三区| 国产黄片视频在线免费观看| 国产淫语在线视频| 日本午夜av视频| 一本久久精品| 日本黄色日本黄色录像| 久久久久久伊人网av| 人妻少妇偷人精品九色| 在线精品无人区一区二区三| 人妻一区二区av| 美女主播在线视频| 欧美精品亚洲一区二区| 女性生殖器流出的白浆| av天堂久久9| 在线观看www视频免费| 国产不卡av网站在线观看| 亚洲激情五月婷婷啪啪| 精品久久久精品久久久| 赤兔流量卡办理| 男人操女人黄网站| 中文乱码字字幕精品一区二区三区| 亚洲性久久影院| 国产成人免费观看mmmm| 欧美 亚洲 国产 日韩一| 中国美白少妇内射xxxbb| 人人妻人人澡人人看| 人妻少妇偷人精品九色| 精品国产露脸久久av麻豆| 狂野欧美激情性xxxx在线观看| 三上悠亚av全集在线观看| 两个人的视频大全免费| 91在线精品国自产拍蜜月| 日本欧美视频一区| 日韩不卡一区二区三区视频在线| 国产精品一二三区在线看| .国产精品久久| 丰满乱子伦码专区| 老熟女久久久| av网站免费在线观看视频| 亚洲精品av麻豆狂野| 亚洲av成人精品一区久久| 国产一区二区三区av在线| 国产精品久久久久成人av| 亚洲性久久影院| 各种免费的搞黄视频| 国产日韩欧美视频二区| 亚洲第一区二区三区不卡| 制服人妻中文乱码| av在线老鸭窝| av福利片在线| 亚洲精品成人av观看孕妇| 日韩熟女老妇一区二区性免费视频| 日本猛色少妇xxxxx猛交久久| 久热久热在线精品观看| 久久久亚洲精品成人影院| 热re99久久国产66热| 久久这里有精品视频免费| 精品久久久久久久久亚洲| 色婷婷久久久亚洲欧美| 久久国产精品大桥未久av| 久久午夜综合久久蜜桃| 国产成人精品一,二区| freevideosex欧美| 亚洲欧洲日产国产| 免费日韩欧美在线观看| 少妇精品久久久久久久| 男女免费视频国产| 国产视频首页在线观看| 51国产日韩欧美| 久久国产精品男人的天堂亚洲 | 久久久久久久久久久久大奶| 一边亲一边摸免费视频| 曰老女人黄片| 少妇的逼水好多| 婷婷色麻豆天堂久久| 国产日韩一区二区三区精品不卡 | a级片在线免费高清观看视频| 亚洲av欧美aⅴ国产| 九色成人免费人妻av| 国产精品嫩草影院av在线观看| 中文字幕久久专区| 亚洲国产精品一区二区三区在线| 大码成人一级视频| 亚洲国产成人一精品久久久| 只有这里有精品99| 久久久久精品性色| 全区人妻精品视频| 久久韩国三级中文字幕| 高清视频免费观看一区二区| 国产精品三级大全| 精品一区二区三卡| 亚洲国产av影院在线观看| 国产精品一二三区在线看| 寂寞人妻少妇视频99o| 黄色毛片三级朝国网站| 不卡视频在线观看欧美| 美女xxoo啪啪120秒动态图| 美女中出高潮动态图| 亚洲怡红院男人天堂| 妹子高潮喷水视频| 亚洲av中文av极速乱| 精品久久久精品久久久| 国产精品一区二区在线观看99| 狂野欧美激情性xxxx在线观看| 欧美精品高潮呻吟av久久| 免费人妻精品一区二区三区视频| 久久久久人妻精品一区果冻| 亚洲精品456在线播放app| 欧美人与善性xxx| 少妇丰满av| 亚洲欧美日韩卡通动漫| 中文字幕免费在线视频6| 欧美最新免费一区二区三区| 日本av免费视频播放| 2018国产大陆天天弄谢| 午夜激情av网站| 日韩成人伦理影院| 如日韩欧美国产精品一区二区三区 | 视频区图区小说| 一本久久精品| 日韩电影二区| 亚洲精品久久久久久婷婷小说| 一级二级三级毛片免费看| 国产深夜福利视频在线观看| 国产精品一区二区在线观看99| 爱豆传媒免费全集在线观看| 国产亚洲精品久久久com| 在线观看免费视频网站a站| 成人毛片60女人毛片免费| 97在线视频观看| 飞空精品影院首页| 久久99一区二区三区| 亚洲国产最新在线播放| 亚洲av二区三区四区| 99九九线精品视频在线观看视频| 日韩一区二区视频免费看| 七月丁香在线播放| 国产日韩欧美亚洲二区| 五月伊人婷婷丁香| 亚洲国产成人一精品久久久| 美女主播在线视频| 午夜精品国产一区二区电影| 精品国产乱码久久久久久小说| 国产69精品久久久久777片| 国产免费一级a男人的天堂| 亚洲精品国产av成人精品| 女性生殖器流出的白浆| 毛片一级片免费看久久久久| 久久女婷五月综合色啪小说| 好男人视频免费观看在线| 尾随美女入室| 免费大片18禁| 亚洲无线观看免费| 午夜免费鲁丝| 久久久久国产网址| 美女福利国产在线| 亚洲人成77777在线视频| 久久青草综合色| 人人妻人人爽人人添夜夜欢视频| 国产成人av激情在线播放 | 久久久久视频综合| 免费少妇av软件| 十分钟在线观看高清视频www| 99久久人妻综合| 亚洲精品第二区| 亚洲精品aⅴ在线观看| 亚洲精品国产av成人精品| 久久久久久久久久人人人人人人| 美女内射精品一级片tv| 亚洲人成77777在线视频| 人人澡人人妻人| 日韩成人伦理影院| 色视频在线一区二区三区| 久久久欧美国产精品| 日韩av免费高清视频| 日韩视频在线欧美| 美女国产视频在线观看| 最近的中文字幕免费完整| 国产男女超爽视频在线观看| 大片免费播放器 马上看| 女性生殖器流出的白浆| av国产久精品久网站免费入址| 久久精品人人爽人人爽视色| 久久97久久精品| 高清视频免费观看一区二区| 啦啦啦中文免费视频观看日本| 91精品三级在线观看| 国产日韩一区二区三区精品不卡 | 欧美精品国产亚洲| h视频一区二区三区| 在线观看三级黄色| 国产一区有黄有色的免费视频| 亚洲综合色惰| 亚洲精品一区蜜桃| 99热网站在线观看| 久久久久久久亚洲中文字幕| 欧美精品国产亚洲| 乱人伦中国视频| freevideosex欧美| 成人二区视频| 亚洲美女黄色视频免费看| 亚洲四区av| .国产精品久久| av国产久精品久网站免费入址| 久久国产精品大桥未久av| 好男人视频免费观看在线| 夫妻性生交免费视频一级片| 丰满少妇做爰视频| 欧美+日韩+精品| 国产精品三级大全| 高清在线视频一区二区三区| 国产精品 国内视频| 最近中文字幕高清免费大全6| 在线观看一区二区三区激情| 男的添女的下面高潮视频| 高清不卡的av网站| 亚洲精品中文字幕在线视频| 精品熟女少妇av免费看| 青春草亚洲视频在线观看| 熟妇人妻不卡中文字幕| 视频在线观看一区二区三区| 在线观看美女被高潮喷水网站| 纯流量卡能插随身wifi吗| 亚洲成色77777| 一级毛片 在线播放| 亚洲国产欧美日韩在线播放| 亚洲av二区三区四区| 亚洲国产av新网站| 下体分泌物呈黄色| 日日摸夜夜添夜夜添av毛片| 精品国产乱码久久久久久小说| 精品国产国语对白av| 日韩视频在线欧美| 男女免费视频国产| 亚洲国产精品一区三区| 黑人巨大精品欧美一区二区蜜桃 | 日韩成人伦理影院| 日韩中字成人| 丰满少妇做爰视频| 尾随美女入室| 有码 亚洲区| 老熟女久久久| 亚洲精品久久久久久婷婷小说| 久久国内精品自在自线图片| 欧美人与善性xxx| 啦啦啦在线观看免费高清www| 在线观看www视频免费| 大话2 男鬼变身卡| 高清不卡的av网站| 日韩欧美一区视频在线观看| 精品久久久久久久久亚洲| 欧美xxxx性猛交bbbb| 看十八女毛片水多多多| av又黄又爽大尺度在线免费看| 久热久热在线精品观看| 18在线观看网站| 夜夜骑夜夜射夜夜干| 国产精品一区二区三区四区免费观看| 一级a做视频免费观看| 精品亚洲成国产av| 婷婷色综合大香蕉| 国产视频内射| 91久久精品电影网| 春色校园在线视频观看| 国产精品.久久久| 国产成人av激情在线播放 | 亚洲精品乱码久久久久久按摩| 能在线免费看毛片的网站| 久久久久国产网址| 99九九线精品视频在线观看视频| 久久精品熟女亚洲av麻豆精品| 七月丁香在线播放| 午夜精品国产一区二区电影| 91aial.com中文字幕在线观看| 亚洲人与动物交配视频| 日本-黄色视频高清免费观看| 午夜福利视频精品| 蜜桃在线观看..| 国产国拍精品亚洲av在线观看| 免费黄频网站在线观看国产| 亚洲国产av新网站| 亚洲精品国产av蜜桃| 日本与韩国留学比较| 日韩一区二区三区影片| 午夜日本视频在线| 九色亚洲精品在线播放| 满18在线观看网站| 亚洲,一卡二卡三卡| 免费高清在线观看日韩| 亚洲色图综合在线观看| 狠狠婷婷综合久久久久久88av| 欧美日韩av久久| 国产精品国产三级专区第一集| 欧美日韩亚洲高清精品| 日韩三级伦理在线观看| a级片在线免费高清观看视频| 啦啦啦视频在线资源免费观看| 欧美最新免费一区二区三区| a 毛片基地| 国产精品一国产av| 老女人水多毛片| 久久久精品94久久精品| 少妇高潮的动态图| 亚洲精品日本国产第一区| 国产黄色免费在线视频| 自线自在国产av| 精品午夜福利在线看| 国产午夜精品一二区理论片| 最近中文字幕高清免费大全6| 国产av精品麻豆| 欧美精品亚洲一区二区| 少妇被粗大猛烈的视频| 国产免费又黄又爽又色| 色视频在线一区二区三区| 大陆偷拍与自拍| 国产成人aa在线观看| 五月伊人婷婷丁香| 日本欧美视频一区| 视频中文字幕在线观看| 高清午夜精品一区二区三区| 日韩一区二区三区影片| 菩萨蛮人人尽说江南好唐韦庄| 日本欧美视频一区| 视频中文字幕在线观看| 免费观看av网站的网址| 久久久精品区二区三区| 一级毛片 在线播放| 少妇的逼水好多| 久久 成人 亚洲| 在线看a的网站| 另类精品久久| 黑人高潮一二区| 国产精品人妻久久久久久| 亚洲欧美日韩卡通动漫| 国产成人精品无人区| 蜜桃国产av成人99| 国产一区亚洲一区在线观看| 又粗又硬又长又爽又黄的视频| 欧美激情国产日韩精品一区| 亚洲欧美日韩卡通动漫| 人人妻人人澡人人爽人人夜夜| 国产成人a∨麻豆精品| 成人免费观看视频高清| 国产成人免费无遮挡视频| 国产精品.久久久| 亚洲婷婷狠狠爱综合网| 亚洲成色77777| 欧美日韩国产mv在线观看视频| 大陆偷拍与自拍| 午夜福利影视在线免费观看| 不卡视频在线观看欧美| 色视频在线一区二区三区| 99re6热这里在线精品视频| 精品少妇久久久久久888优播| 色5月婷婷丁香| 久久久久久久精品精品| 亚洲,欧美,日韩| 久久青草综合色| 五月开心婷婷网| 国产免费视频播放在线视频| 亚洲av二区三区四区| 国语对白做爰xxxⅹ性视频网站| 国产精品久久久久久久电影| 老司机亚洲免费影院| 午夜福利网站1000一区二区三区| 老司机影院成人| 成人毛片60女人毛片免费| 国产成人aa在线观看| 18在线观看网站| 蜜桃国产av成人99| 日韩精品有码人妻一区| av在线app专区| 各种免费的搞黄视频| 大又大粗又爽又黄少妇毛片口| 夫妻午夜视频| 亚洲国产精品999| av在线播放精品| 性高湖久久久久久久久免费观看| 精品少妇内射三级| 99精国产麻豆久久婷婷| 高清欧美精品videossex| 高清黄色对白视频在线免费看| 人妻少妇偷人精品九色| 亚洲精品日韩在线中文字幕| 人妻系列 视频| 哪个播放器可以免费观看大片| 国产爽快片一区二区三区| 日本wwww免费看| 国产精品麻豆人妻色哟哟久久| 久久人人爽人人爽人人片va| 两个人免费观看高清视频| 一级二级三级毛片免费看| 亚洲精品美女久久av网站| 美女内射精品一级片tv| 夜夜看夜夜爽夜夜摸| 久久久久精品性色| 免费高清在线观看视频在线观看| 婷婷成人精品国产| 精品久久久久久电影网| 免费少妇av软件| 久久久久人妻精品一区果冻| 人妻制服诱惑在线中文字幕| 一本久久精品| 如日韩欧美国产精品一区二区三区 | 欧美激情国产日韩精品一区| 久久久久网色| 亚洲怡红院男人天堂| 日韩成人伦理影院| 国产精品嫩草影院av在线观看| 欧美bdsm另类| 日韩欧美一区视频在线观看| av国产久精品久网站免费入址| 中文欧美无线码| 精品视频人人做人人爽| 国产免费视频播放在线视频| 国产极品天堂在线| 日本欧美视频一区| av卡一久久| 国产黄频视频在线观看| 国产日韩欧美在线精品| 亚洲色图综合在线观看| 亚洲精品日韩在线中文字幕| 乱码一卡2卡4卡精品| 91在线精品国自产拍蜜月| 男女边摸边吃奶| 国产色爽女视频免费观看| 亚洲欧美日韩卡通动漫| 18在线观看网站| 欧美一级a爱片免费观看看| 在线观看免费高清a一片| 大香蕉久久成人网| 日韩精品免费视频一区二区三区 | 国产黄色视频一区二区在线观看| 日日撸夜夜添| 国产欧美亚洲国产| 欧美xxxx性猛交bbbb| 亚州av有码| 色94色欧美一区二区| 亚洲成人一二三区av| 97在线视频观看| 久久人妻熟女aⅴ| 亚洲不卡免费看| 色视频在线一区二区三区| 男女边摸边吃奶|