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

    基于ARMCortex?M+KL系列MCU的匯編構(gòu)件設(shè)計

    2018-01-20 18:28:14蔡伯峰王宜懷
    現(xiàn)代電子技術(shù) 2018年1期
    關(guān)鍵詞:寄存器底層串口

    蔡伯峰+王宜懷

    摘 要: 匯編編程的復(fù)雜性及有關(guān)32位ARM Cortex?M0+等內(nèi)核匯編開發(fā)資料和樣例程序的短缺,使編程者學(xué)習(xí)、研究和開發(fā)微處理器匯編程序難度很大。針對這一現(xiàn)狀,在對ARM Cortex?M0+內(nèi)部寄存器、匯編指令系統(tǒng)等進行深入分析的基礎(chǔ)上,以NXP半導(dǎo)體公司KL系列MCU為藍本,提出一種規(guī)范、易用、實用的匯編構(gòu)件設(shè)計編程方法。該方法根據(jù)軟件工程構(gòu)件設(shè)計思想,基于構(gòu)件封裝要點分析和匯編工程框架,設(shè)計并實現(xiàn)匯編構(gòu)件,并給出了典型UART模塊的匯編底層驅(qū)動構(gòu)件的樣例程序。通過對匯編構(gòu)件設(shè)計編程方法的使用和樣例程序的學(xué)習(xí)與理解,降低嵌入式匯編學(xué)習(xí)和編程難度,并進而輕松設(shè)計其他類似的規(guī)范化的匯編構(gòu)件和程序。

    關(guān)鍵詞: ARM Cortex?M0+; 匯編構(gòu)件設(shè)計; KL系列MCU; 底層驅(qū)動構(gòu)件; 匯編工程框架; UART

    中圖分類號: TN919?34; TP311 文獻標識碼: A 文章編號: 1004?373X(2018)01?0038?05

    Abstract: It is difficult for programmer to learn, study and develop the microprocessor assemble program due to the complexity of assembly programming and the shortage of assembly development data and sample programs of the 32?bit ARM Cortex?M0+, and other kernels. In view of this situation, on the basis of the deep analysis of the ARM Cortex?M0+ internal register and assembly instruction system, the KL Series MCU made by NXP is taken as the exsample to present a standardized, usable and practical design method for assembly component. According to the design thought of software engineering component, analysis of component packaging key points and assembly engineering framework, the assembly component was designed and implemented. The sample program of the assembly bottom?driven component of the typical UART module is given. With application of design and programming methods of the assembly component, and by learning and understanding of the sample programaim, the difficulty of the embedded assembly learning and programming is reduced, and the design of other similar standardized assembly components and programs becomes easy.

    Keywords: ARM Cortex?M0+; assembly component design; KL series MCU; bottom?layer driving component; assembly project framework; UART

    0 引 言

    ARM Cortex?M0+微處理器是ARM公司的一款耗電量僅為9 μA/MHz的全球最低功耗的32位微處理器,性價比高、易用,并具有良好的軟件兼容性,可方便地移植到更高性能的Cortex?M3/M4上。該微處理器基于ARMv6M架構(gòu),支持Thumb指令集和部分Thumb2指令集[1]。NXP半導(dǎo)體公司的KL系列MCU是業(yè)內(nèi)首款采用ARM Cortex?M0+內(nèi)核的MCU,具有應(yīng)用設(shè)計方便、可擴展性好、超低功耗、品種齊全等特點[2]。目前,對微處理器的應(yīng)用開發(fā)絕大多數(shù)編程者使用C語言,構(gòu)件設(shè)計和研究也是針對C語言驅(qū)動構(gòu)件進行的[3?5],這些研究成果并不適合匯編編程,尤其是匯編底層驅(qū)動構(gòu)件設(shè)計,因此,匯編資料、樣例程序和相關(guān)研究成果非常短缺。匯編編程是嵌入式開發(fā)的基本功,掌握好匯編編程可增加編程者的“內(nèi)力”。學(xué)習(xí)研究一些組織結(jié)構(gòu)完整、清晰的匯編程序如硬件底層匯編驅(qū)動等,對嵌入式開發(fā)有很大幫助,也有助于更深層次地理解微處理器軟件的設(shè)計。實際上,一些微處理器深層次應(yīng)用開發(fā)如MCU初始化、操作系統(tǒng)調(diào)度、快速響應(yīng)[6]等特殊功能的實現(xiàn)必須使用匯編完成。

    本文通過對NXP公司生產(chǎn)的采用ARM Cortex?M0+內(nèi)核的KL系列MCU進行深入研究,在分析內(nèi)核特點、內(nèi)部寄存器及匯編指令系統(tǒng)的基礎(chǔ)上,以提高嵌入式軟件的可重用性和可移植性,降低嵌入式匯編語言學(xué)習(xí)、開發(fā)難度為目標,基于對匯編構(gòu)件封裝要點分析和筆者研制的匯編工程框架,規(guī)范地設(shè)計匯編構(gòu)件,并針對MCU必不可少的典型模塊UART進行具體實現(xiàn)。

    1 匯編構(gòu)件封裝要點分析

    在嵌入式軟件領(lǐng)域,由于軟、硬件緊密聯(lián)系的特性,使得底層驅(qū)動程序開發(fā)成為嵌入式軟件開發(fā)的重要內(nèi)容,其好壞直接影響嵌入式系統(tǒng)的穩(wěn)定性和可靠性。因此,驅(qū)動程序開發(fā)要按照構(gòu)件化設(shè)計原則進行分析設(shè)計,并按照規(guī)范的過程實現(xiàn),以提高其可重用性與可移植性。endprint

    匯編底層驅(qū)動構(gòu)件是具有獨立性的功能或函數(shù)集合,對其進行封裝要點分析就是要分析出應(yīng)設(shè)計哪些函數(shù)及出入口參數(shù)。通??筛鶕?jù)MCU各個模塊所具有的基本操作來確定應(yīng)設(shè)計哪些函數(shù)。以MCU典型的串口模塊——UART模塊為例,由于它具有初始化、發(fā)送和接收三種基本操作,按照構(gòu)件設(shè)計思想,可將其封裝成各個獨立的功能函數(shù),分別為初始化、發(fā)送單個字節(jié)、接收單個字節(jié)。其中,初始化函數(shù)用來設(shè)定UART模塊工作屬性,發(fā)送和接收單個字節(jié)函數(shù)用來實現(xiàn)實際的通信,但從實際使用出發(fā),還應(yīng)封裝發(fā)送[N]個字節(jié)、發(fā)送字符串、接收[N]個字節(jié)及串口接收中斷使能與禁止等功能函數(shù)。

    要實現(xiàn)編程的構(gòu)件化,在分析出各個功能函數(shù)后,還要充分設(shè)計好函數(shù)出入口參數(shù),并提供對外服務(wù)接口的使用注釋,因為出入口參數(shù)設(shè)計的好壞會直接影響構(gòu)件化編程的成敗。以初始化函數(shù)uart_init為例,由于串口可能有多個,每個串口使用的MCGIRCLK,MCGPLLCLK,BUSCLK等時鐘源并不相同[7],收發(fā)數(shù)據(jù)時的波特率也可有多種選擇,所以串口號、時鐘源、波特率都被設(shè)計為入口參數(shù),而函數(shù)不必有返回值,這樣當應(yīng)用程序和高層構(gòu)件在調(diào)用時將具有極大的靈活性。

    按照uart_init函數(shù)設(shè)計方法設(shè)計的UART構(gòu)件的所有功能函數(shù)見表1。

    2 用于匯編構(gòu)件開發(fā)的匯編工程框架

    架構(gòu)清晰、規(guī)范易用的匯編工程框架是匯編底層驅(qū)動開發(fā)的基礎(chǔ),能極大地降低嵌入式匯編語言學(xué)習(xí)難度、提高開發(fā)效率。筆者經(jīng)過多年的研究,研制了在主流嵌入式集成開發(fā)環(huán)境KDS下使用的樹狀結(jié)構(gòu)的匯編工程框架,其文件組織結(jié)構(gòu)見表2。該工程框架為底層驅(qū)動構(gòu)件的開發(fā)提供了統(tǒng)一的工程模板,使用它可方便快速地開發(fā)底層驅(qū)動構(gòu)件和匯編程序,也方便構(gòu)件的移植和重用。

    通過對匯編框架組織結(jié)構(gòu)的分析可知,使用匯編框架開發(fā)驅(qū)動構(gòu)件的步驟為:

    1) 在KDS中導(dǎo)入?yún)R編工程框架,以創(chuàng)建匯編底層驅(qū)動構(gòu)件工程項目。

    2) 在05_Driver文件夾<05_Driver >中新建以構(gòu)件名命名的構(gòu)件文件夾,如。

    3) 按照提供的gpio構(gòu)件的頭文件(.inc)和匯編源程序文件(.S)內(nèi)容布局模板,在新構(gòu)件文件夾中設(shè)計構(gòu)件頭文件和源程序文件。

    4) 在<08_Source>中,按照提供的各個文件的內(nèi)容布局模板編制測試樣例程序。

    5) 工程編譯鏈接后,將目標代碼(.elf)下載到包含有MCU硬件最小系統(tǒng)的目標板上運行測試。

    表2 樹狀結(jié)構(gòu)的匯編工程框架

    Tab. 2 Assembly engineering framework of tree structure

    3 匯編構(gòu)件頭文件與源程序文件設(shè)計

    由于對MCU模塊的編程,實際上是對硬件底層寄存器的直接操作,即通過操作相關(guān)寄存器對硬件模塊進行操作,因此,可將MCU各個模塊的所有功能函數(shù)分別集中放置在以各個模塊名命名的.S源文件中,并按照相對嚴格的構(gòu)件設(shè)計原則封裝,同時配以以各個模塊名命名的.inc頭文件,以定義相應(yīng)模塊的基本信息和對外接口。這兩種文件分別放置在匯編工程的<05_Driver>文件夾下以模塊名命名的構(gòu)件文件夾中,如<05_Driver/uart>等。當其他工程需要使用相應(yīng)構(gòu)件時,一般只需簡單拷貝構(gòu)件文件夾中的這兩個文件即可,只有在進行不同芯片間的移植時,才需檢查并修改頭文件中與硬件相關(guān)的宏定義(若內(nèi)核不同,還需修改源文件中的部分匯編指令)。

    3.1 UART模塊的編程結(jié)構(gòu)

    為了方便理解后文設(shè)計實現(xiàn)的匯編底層驅(qū)動構(gòu)件,此處以KL系列MCU的UART模塊為例分析一下其編程模型和使用到的寄存器情況。

    UART模塊的主要功能是收發(fā)數(shù)據(jù),即接收時,將外部單線輸入數(shù)據(jù)變成一字節(jié)并行數(shù)據(jù)送MCU內(nèi)部;發(fā)送時,將待發(fā)送的一字節(jié)并行數(shù)據(jù)轉(zhuǎn)換為單線輸出[8],因此UART模塊編程時采用的編程模型如圖1所示。其中,UART波特率寄存器用于設(shè)置波特率;UART控制寄存器用于設(shè)置通信格式、是否校驗和允許中斷等;UART狀態(tài)寄存器用于判斷串口收發(fā)數(shù)據(jù)狀態(tài),如數(shù)據(jù)是否發(fā)送出去、是否有數(shù)據(jù)可收等。而UART的2個數(shù)據(jù)寄存器分別存放收、發(fā)的數(shù)據(jù)。程序員編程時,直接對數(shù)據(jù)寄存器操作,再由MCU自動完成對移位寄存器的操作。

    KL25系列MCU每個UART模塊都有相對應(yīng)的8位寄存器,寄存器包括控制類寄存器C1~C5,狀態(tài)寄存器S1~S2,波特率寄存器BDH和BDL,數(shù)據(jù)寄存器D,地址匹配寄存器MA1~MA2等幾種,各個寄存器通過映像地址訪問。

    UARTi的寄存器映像地址=0x4006_A000+i*1 000+n*1。其中i=0~2;n表示寄存器號,UART0時,n=0~11分別代表寄存器BDH,BDL,C1,C2,S1,S2,C3,D,MA1,MA2,C4,C5,UART1,2時,n=0~8分別代表寄存器BDH,BDL,C1,C2,S1,S2,C3,D,C4[9]。

    與UART模塊編程相關(guān)的各個主要寄存器的功能及寄存器關(guān)鍵位[2]見表3。

    3.2 頭文件設(shè)計

    頭文件描述了構(gòu)件接口,用戶通過頭文件獲取構(gòu)件服務(wù)。一個合格的頭文件應(yīng)是一份完備、簡明的信息定義和操作使用說明,除包含基本的程序編碼框架、對其他文件的包含語句外,還包含模塊本身及相關(guān)寄存器信息的定義、各個功能函數(shù)全局聲明與對外服務(wù)接口的詳細說明,使用者無需查看源文件就能完全使用該構(gòu)件。

    以UART構(gòu)件為例,uart.inc包含的部分內(nèi)容如下:

    #---------------------------------------------

    #文件名稱:uart.inc

    #功能概要:KL25 UART底層驅(qū)動構(gòu)件(匯編)頭文件

    #---------------------------------------------

    #ifndef UART_INC @編碼框架

    #define UART_INC

    .include "gpio.inc" @包含外部構(gòu)件頭文件

    .section .rodata @數(shù)據(jù)定義:各串口的基地址

    UART_BASE_PTR: .word 0x4006A000, 0x4006B000,

    0x4006C000

    .equ UART0,(0<<16) @宏定義各個串口號

    .equ UART1,(1<<16)

    .equ UART2,(2<<16)

    .equ MCGIRCLK,4000 @宏定義各個時鐘源頻率

    .equ MCGPLL,48000

    .equ BUSCLK,24000

    .equ UART_BDH,0x0 @宏定義各寄存器偏移地址

    .equ UART_BDL,0x1

    .equ UART_C1,0x2

    .equ UART_C2,0x3

    .equ UART_S1,0x4

    .equ UART_D,0x7

    .equ S1_TDRE_mask,0x80 @宏定義S1_TDRE掩碼

    ……

    #---------------------------------------------

    # 函數(shù)名稱:uart_init

    # 函數(shù)返回:無

    #參數(shù)說明:r0:((串口號)|(時鐘源KHz)) 例(UART1|BUSCLK)表示UART1、總線時鐘

    # r1: 波特率:300、600、1 200…

    #功能概要:初始化UART模塊。

    #---------------------------------------------

    .global uart_init @全局函數(shù)聲明

    ……

    #endif

    3.3 源程序文件設(shè)計

    為保證構(gòu)件工作的獨立性,實現(xiàn)高內(nèi)聚、低耦合的設(shè)計要求,構(gòu)件的實現(xiàn)內(nèi)容應(yīng)封裝在源文件內(nèi)部。源文件內(nèi)容包括自身頭文件包含語句、各個功能函數(shù)和內(nèi)部函數(shù)的實現(xiàn)代碼。源文件中只允許一處使用“.include xxx”語句,包含自身頭文件,需要包含的內(nèi)容應(yīng)在自身頭文件中包含,以便有統(tǒng)一、清晰的程序結(jié)構(gòu)。源文件要給出良好的封裝、簡潔的說明與注釋、清晰的對外接口說明、規(guī)范的編程風(fēng)格等,方便編程者進行學(xué)習(xí)、研究。限于篇幅,本文僅給出UART構(gòu)件的uart_send1函數(shù)的實現(xiàn)代碼,使用的指令可參考文獻[1,10?11]中關(guān)于ARM Cortex?M0+匯編指令集的有關(guān)內(nèi)容。

    #---------------------------------------------

    #函數(shù)名稱:uart_send1

    #參數(shù)說明:r0:串口號,用0~2表示UART0~2

    # r1:待發(fā)送的字節(jié)

    #函數(shù)返回:r0:0=正常,1=異常

    #功能概要:串行發(fā)送1個字節(jié)

    #---------------------------------------------

    uart_send1:

    push {r4?r7,lr} @保存現(xiàn)場,將pc(lr)入棧

    #初始化循環(huán)變量r5和存放各串口基地址的單元地址偏移量

    mov r5 ,#0 @r5=0

    lsl r0,#2 @r0=r0*4,基地址單元地址偏移量

    #在規(guī)定時間內(nèi)(循環(huán)一定的次數(shù))輪詢發(fā)送緩沖區(qū),一旦為空則將待發(fā)字節(jié)送數(shù)據(jù)寄存器D發(fā)送,否則退出循環(huán)

    send1_loop:

    ldr r4,=0xFBBB @r4=發(fā)送緩沖區(qū)是否為空輪詢次數(shù)

    cmp r5,r4 @判斷循環(huán)變量值

    bcs send1_exit @達到輪詢次數(shù)閾值轉(zhuǎn)send1_exit

    add r5,#1 @當前循環(huán)變量加1

    ldr r7,=UART_BASE_PTR @r7=所有UART的基地址

    ldr r7,[r7,r0] @r7=特定UART的基地址

    ldr r6,=UART_S1 @r6=S1寄存器偏移地址

    ldrb r4,[r7,r6] @r4=S1寄存器內(nèi)容

    uxth r4,r4 @擴展成32位無符號數(shù)

    ldr r6,=s1_TDRE_mask @r6=S1寄存器的TDRE位掩碼

    and r4,r6 @取出S1中TDRE位的值

    cmp r4,#0 @判斷發(fā)送緩沖區(qū)是否為空

    beq send1_loop @非空則繼續(xù)輪詢,為空則繼續(xù)

    ldr r6,=UART_D @為空,r6=D寄存器偏移地址

    strb r1,[r7,r6] @將待發(fā)送字節(jié)送D寄存器發(fā)送

    send1_exit:

    #根據(jù)是否超時來判斷是否發(fā)送成功

    ldr r4,=0xFBBB @r4=0xFBBB, 輪詢次數(shù)閾值

    cmp r5,r4 @比較r5與0xFBBB的大小endprint

    bcc send1_suc @小于則發(fā)送成功,轉(zhuǎn)send1_suc

    mov r0,#1 @大于等于則發(fā)送失敗,r0=1

    b send1_end @轉(zhuǎn)send1_end處理

    send1_suc:

    mov r0,#0 @發(fā)送成功,r0=0

    send1_end:

    pop {r4?r7,pc} @恢復(fù)現(xiàn)場,將lr出棧到pc

    在高層構(gòu)件或應(yīng)用程序中要使用構(gòu)件的某個功能函數(shù),需先通過“.include xxx”語句包含構(gòu)件頭文件,再根據(jù)功能函數(shù)的出入口參數(shù)要求提供參數(shù)值,就可通過“bl功能函數(shù)名”語句來調(diào)用功能函數(shù)了。

    3.4 匯編構(gòu)件的測試

    測試工程實現(xiàn)功能的是:主程序?qū)ART模塊初始化后,向PC端分別以字符串、單字節(jié)、多字節(jié)等方式發(fā)送數(shù)據(jù);開啟UART模塊接收中斷用中斷方式接收PC端發(fā)來的數(shù)據(jù),接收后回發(fā)給PC端。中斷服務(wù)例程中,先通過uart_re1函數(shù)接收來自PC端的數(shù)據(jù),再通過uart_send1函數(shù)回發(fā)給PC端。

    按照前文介紹的“使用匯編框架開發(fā)驅(qū)動構(gòu)件的步驟”中所述方法在KDS環(huán)境下編制測試工程的相關(guān)程序,程序代碼不再贅述。再對測試工程編譯鏈接后,將目標代碼文件(.elf)下載到KL25開發(fā)板上,并將開發(fā)板的UART接口通過USB?TTL串口線與PC機相連,在PC端運行通用的串口調(diào)試器軟件。開發(fā)板重新上電后開始測試。

    經(jīng)測試,PC端的串口調(diào)試器界面上收到MCU方主程序依次用uart_send_str函數(shù)發(fā)送的信息“現(xiàn)在測試uart_send_str 函數(shù)的功能.”、兩次用uart_send1函數(shù)發(fā)送的換行符、用uart_sendN函數(shù)發(fā)送的信息“現(xiàn)在測試uart_sendN 函數(shù)的功能.”,當從串口調(diào)試器界面上發(fā)送信息“這是從本界面發(fā)送的信息.”后,立即在界面上收到MCU方回發(fā)的信息,如圖2所示。對KL25的3個UART模塊分別進行反復(fù)測試。測試結(jié)果表明,UART模塊能正確收發(fā)數(shù)據(jù)且運行穩(wěn)定,說明本文所設(shè)計的UART匯編構(gòu)件正確有效且易于使用。

    4 結(jié) 語

    本文以KL系列MCU為藍本,按照構(gòu)件化設(shè)計原則對匯編底層驅(qū)動構(gòu)件的封裝要點進行詳細的分析,設(shè)計了構(gòu)件的各個功能函數(shù)及出入口參數(shù);根據(jù)匯編工程框架給出了開發(fā)驅(qū)動構(gòu)件的規(guī)范步驟和設(shè)計實現(xiàn)構(gòu)件頭文件和源程序文件的方法。在對UART模塊的編程模型、寄存器功能、Cortex?M0+內(nèi)核指令系統(tǒng)進行深入分析的基礎(chǔ)上,具體實現(xiàn)了UART匯編構(gòu)件,并對其進行測試。旨在引導(dǎo)讀者通過規(guī)范的匯編構(gòu)件設(shè)計編程及樣例程序的學(xué)習(xí)研究,較快地掌握嵌入式匯編語言的編程方法及在構(gòu)件設(shè)計中的應(yīng)用,并能自行設(shè)計其他匯編構(gòu)件、編寫匯編程序。

    參考文獻

    [1] ARM. Cortex?M0+ processor technical reference manual [DB/OL]. (2012?12?16) [2016?06?20]. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0432c/index.html.

    [2] NXP. KL25 sub?family reference manual [EB/OL]. (2012?09?01) [2016?06?20]. http://www.nxp.com/.

    [3] 蔡劍卿,王宜懷,馮德旺,等.可移植的UART底層驅(qū)動構(gòu)件設(shè)計[J].福建農(nóng)林大學(xué)學(xué)報(自然科學(xué)版),2014,43(3):332?335.

    CAI Jianqing, WANG Yihuai, FENG Dewang, et al. Design of UART′s bottom?layer driving component with good portability [J]. Journal of Fujian Agricultural and Forestry University, 2014, 43(3): 332?335.

    [4] 胡宗棠,王宜懷.構(gòu)件化ColdFire系列MCUs通用GPIO驅(qū)動設(shè)計[J].微計算機信息,2012,28(4):69?71.

    HU Zongtang, WANG Yihuai. Component?oriented general GPIO driver design of ColdFire series MCUs [J]. Microcomputer information, 2012, 28(4): 69?71.

    [5] 楊炯,曹金華,王宜懷.基于KL25的UART通信UHM構(gòu)件研究與實現(xiàn)[J].實驗室研究與探索,2014,33(9):122?126.

    YANG Jiong, CAO Jinhua, WANG Yihuai. Research and rea?lization of UHM unit for UART based on KL25 [J]. Laboratory research and exploration, 2014, 33(9): 122?126.

    [6] 凌藝春,黃飛.匯編程序移植性的研究與實踐[J].制造業(yè)自動化,2011,33(3):174?175.

    LING Yichun, HUANG Fei. Research and practice of assembler portability [J]. Manufacturing automation, 2011, 33(3): 174?175.

    [7] NXP. Kinetis KL25 sub?family data sheet [EB/OL]. (2014?08?01) [2016?06?20]. http://www.docin.com/p?2035480854.html.

    [8] GIOVANI G, SEBASTIAN F. Tracing and recording interrupts in embedded software [J]. Journal of systems architecture, 2012, 58(9): 372?385.

    [9] 王宜懷,朱仕浪,郭蕓.嵌入式技術(shù)基礎(chǔ)與實踐:ARM Cortex?M0+ KinetisL系列微控制器[M].3版.北京:清華大學(xué)出版社,2013:48?51.

    WANG Yihuai, ZHU Shilang, GUO Yun. Embedded technology foundation and practice: ARM Cortex?M0+ KinetisL series microcontrollers [M]. 3rd ed. Beijing: Tsinghua University Press, 2013: 48?51.

    [10] ARM. Cortex?M0+ devices generic user guide [EB/OL]. (2012?12?18) [2016?06?20]. https://wenku.baidu.com/view/f26247f2?f61fb7360b4c65a9.html.

    [11] NXP. Kinetis assembler reference manual [EB/OL]. (2014?02?01) [2016?06?20]. http://www.nxp.com/.endprint

    猜你喜歡
    寄存器底層串口
    2種SOFC-MGT底層循環(huán)系統(tǒng)性能對比分析
    論新感覺派小說的底層書寫
    名作欣賞(2021年24期)2021-08-30 07:02:32
    淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
    Lite寄存器模型的設(shè)計與實現(xiàn)
    分簇結(jié)構(gòu)向量寄存器分配策略研究*
    USB接口的多串口數(shù)據(jù)并行接收方法探索
    基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
    地礦測繪(2015年3期)2015-12-22 06:27:26
    基于并行控制的FPGA多串口拓展實現(xiàn)
    回到現(xiàn)實底層與悲憫情懷
    小說林(2014年5期)2014-02-28 19:51:47
    略論“底層”
    雜文選刊(2013年7期)2013-02-11 10:41:11
    两性夫妻黄色片| 18禁黄网站禁片午夜丰满| 麻豆成人午夜福利视频| 成年女人毛片免费观看观看9| 国产久久久一区二区三区| 最新美女视频免费是黄的| 亚洲午夜理论影院| 不卡av一区二区三区| 色老头精品视频在线观看| 身体一侧抽搐| 亚洲成人精品中文字幕电影| 天堂动漫精品| 99riav亚洲国产免费| 别揉我奶头~嗯~啊~动态视频| 成年女人毛片免费观看观看9| 精品国产乱子伦一区二区三区| 亚洲一区二区三区不卡视频| 少妇粗大呻吟视频| 男女下面进入的视频免费午夜 | 亚洲av五月六月丁香网| 欧美日韩瑟瑟在线播放| 欧美日韩黄片免| 午夜影院日韩av| 亚洲男人天堂网一区| 国产精品精品国产色婷婷| 中国美女看黄片| 中文字幕精品亚洲无线码一区 | 黄色丝袜av网址大全| 一本大道久久a久久精品| 精品国产超薄肉色丝袜足j| 国产三级在线视频| 亚洲精品粉嫩美女一区| 久久亚洲真实| 亚洲一区高清亚洲精品| 欧美 亚洲 国产 日韩一| 夜夜躁狠狠躁天天躁| 成人18禁高潮啪啪吃奶动态图| 美女国产高潮福利片在线看| 久久婷婷人人爽人人干人人爱| 成人午夜高清在线视频 | 久久国产精品男人的天堂亚洲| 欧美性猛交╳xxx乱大交人| 国产麻豆成人av免费视频| 窝窝影院91人妻| 国产黄片美女视频| www.自偷自拍.com| 国产精品,欧美在线| 嫩草影院精品99| www.www免费av| 99久久精品国产亚洲精品| 亚洲天堂国产精品一区在线| 午夜激情av网站| 亚洲 国产 在线| 午夜福利一区二区在线看| 琪琪午夜伦伦电影理论片6080| 亚洲av熟女| 一级作爱视频免费观看| 欧美久久黑人一区二区| av免费在线观看网站| 此物有八面人人有两片| 久久久久久久久久黄片| 啪啪无遮挡十八禁网站| 首页视频小说图片口味搜索| 在线观看舔阴道视频| 日韩中文字幕欧美一区二区| 色在线成人网| 欧美性猛交╳xxx乱大交人| 国产亚洲av嫩草精品影院| 国产精品美女特级片免费视频播放器 | 日韩视频一区二区在线观看| 亚洲美女黄片视频| 一本久久中文字幕| 91av网站免费观看| 国产精品免费一区二区三区在线| 日本黄色视频三级网站网址| 亚洲中文日韩欧美视频| 一级毛片女人18水好多| 丰满人妻熟妇乱又伦精品不卡| 法律面前人人平等表现在哪些方面| 精品第一国产精品| 国产精品98久久久久久宅男小说| 成人三级黄色视频| 黑丝袜美女国产一区| 这个男人来自地球电影免费观看| 在线看三级毛片| 高潮久久久久久久久久久不卡| 两性午夜刺激爽爽歪歪视频在线观看 | 欧美国产日韩亚洲一区| 不卡av一区二区三区| 成人av一区二区三区在线看| 免费av毛片视频| 久久久国产精品麻豆| 亚洲五月婷婷丁香| 国产久久久一区二区三区| 又黄又粗又硬又大视频| 久久久久亚洲av毛片大全| 亚洲成人国产一区在线观看| 母亲3免费完整高清在线观看| 97超级碰碰碰精品色视频在线观看| 91大片在线观看| 色老头精品视频在线观看| 波多野结衣高清无吗| 国产蜜桃级精品一区二区三区| 久久中文字幕人妻熟女| e午夜精品久久久久久久| 欧美一级a爱片免费观看看 | 国产乱人伦免费视频| 神马国产精品三级电影在线观看 | 亚洲激情在线av| 制服丝袜大香蕉在线| 国产麻豆成人av免费视频| 性欧美人与动物交配| 亚洲国产精品久久男人天堂| www日本在线高清视频| 人人妻人人澡欧美一区二区| 嫩草影院精品99| 久9热在线精品视频| 久久久久精品国产欧美久久久| 亚洲专区字幕在线| 黄色 视频免费看| 国产又色又爽无遮挡免费看| 欧美av亚洲av综合av国产av| 午夜激情福利司机影院| 99在线视频只有这里精品首页| bbb黄色大片| 午夜激情福利司机影院| 91麻豆av在线| 美女扒开内裤让男人捅视频| 美女扒开内裤让男人捅视频| 99热这里只有精品一区 | 精品国产亚洲在线| 不卡一级毛片| 12—13女人毛片做爰片一| 亚洲国产精品999在线| 免费av毛片视频| 午夜福利免费观看在线| 欧美性猛交黑人性爽| 亚洲av中文字字幕乱码综合 | 黄片大片在线免费观看| 国产精品 国内视频| 18禁美女被吸乳视频| 欧美在线一区亚洲| 日日干狠狠操夜夜爽| 成人亚洲精品一区在线观看| 久久天堂一区二区三区四区| 国产一卡二卡三卡精品| 岛国视频午夜一区免费看| 黄色女人牲交| 久久国产乱子伦精品免费另类| 一区二区三区高清视频在线| 97碰自拍视频| 妹子高潮喷水视频| 999久久久精品免费观看国产| 婷婷精品国产亚洲av在线| 老汉色av国产亚洲站长工具| 国产真实乱freesex| 国产aⅴ精品一区二区三区波| 黄色成人免费大全| 精华霜和精华液先用哪个| 欧美性猛交╳xxx乱大交人| 黄色片一级片一级黄色片| 观看免费一级毛片| 亚洲成人久久性| 亚洲,欧美精品.| 少妇裸体淫交视频免费看高清 | 一本大道久久a久久精品| 亚洲三区欧美一区| 亚洲成人国产一区在线观看| 午夜免费激情av| 欧洲精品卡2卡3卡4卡5卡区| 国产精品一区二区精品视频观看| 婷婷六月久久综合丁香| 麻豆av在线久日| 女人被狂操c到高潮| 中文资源天堂在线| 人人妻人人澡欧美一区二区| 国产亚洲精品久久久久5区| 国内精品久久久久久久电影| 9191精品国产免费久久| 亚洲自拍偷在线| 久久人妻福利社区极品人妻图片| 成熟少妇高潮喷水视频| 日韩中文字幕欧美一区二区| 丰满的人妻完整版| 欧美色视频一区免费| 日本一本二区三区精品| 成人av一区二区三区在线看| 露出奶头的视频| 黄色片一级片一级黄色片| 国产99久久九九免费精品| 一区二区三区激情视频| 国产欧美日韩精品亚洲av| 欧美色视频一区免费| 免费在线观看日本一区| 亚洲 国产 在线| 亚洲av电影在线进入| 久久亚洲真实| 亚洲欧美日韩高清在线视频| 国产成人欧美| 国产精品九九99| 非洲黑人性xxxx精品又粗又长| 精品久久久久久久人妻蜜臀av| 久久久久久人人人人人| 欧美激情极品国产一区二区三区| 女警被强在线播放| 国产伦在线观看视频一区| 神马国产精品三级电影在线观看 | 亚洲精品中文字幕在线视频| 国产午夜精品久久久久久| 久9热在线精品视频| 国产又黄又爽又无遮挡在线| 女同久久另类99精品国产91| 天堂动漫精品| bbb黄色大片| 午夜日韩欧美国产| 免费看a级黄色片| av有码第一页| 国产视频内射| 婷婷亚洲欧美| 亚洲成人国产一区在线观看| 国产亚洲av嫩草精品影院| 一级毛片女人18水好多| 久久人人精品亚洲av| 天天添夜夜摸| 性欧美人与动物交配| 国产伦在线观看视频一区| 精华霜和精华液先用哪个| 亚洲av熟女| 国产久久久一区二区三区| 757午夜福利合集在线观看| 亚洲精品久久成人aⅴ小说| av超薄肉色丝袜交足视频| 国产精品永久免费网站| 亚洲专区国产一区二区| 哪里可以看免费的av片| 操出白浆在线播放| 欧美日本视频| 午夜福利高清视频| 日日干狠狠操夜夜爽| 亚洲国产中文字幕在线视频| 亚洲人成网站在线播放欧美日韩| 国产午夜精品久久久久久| 久久久精品国产亚洲av高清涩受| 女性被躁到高潮视频| 日韩欧美一区视频在线观看| 19禁男女啪啪无遮挡网站| 成人手机av| 国产成人av激情在线播放| 午夜福利高清视频| 丝袜美腿诱惑在线| 国产片内射在线| 成人特级黄色片久久久久久久| 欧美黑人欧美精品刺激| 午夜精品久久久久久毛片777| 人妻丰满熟妇av一区二区三区| 女同久久另类99精品国产91| 一级黄色大片毛片| 国产成人精品久久二区二区免费| 黄片播放在线免费| 亚洲av中文字字幕乱码综合 | 久久久久久久久免费视频了| 黄色成人免费大全| 亚洲片人在线观看| 免费搜索国产男女视频| 超碰成人久久| 亚洲熟妇熟女久久| 国产精品一区二区免费欧美| 两个人免费观看高清视频| 99久久精品国产亚洲精品| 亚洲国产欧美网| 国产精品影院久久| 日韩三级视频一区二区三区| 亚洲av电影不卡..在线观看| 熟女电影av网| 国产一区二区激情短视频| 国产伦人伦偷精品视频| 国内久久婷婷六月综合欲色啪| 欧美日韩精品网址| 99精品欧美一区二区三区四区| 精品熟女少妇八av免费久了| 高潮久久久久久久久久久不卡| 亚洲真实伦在线观看| 一夜夜www| 99热这里只有精品一区 | 亚洲av美国av| 高清毛片免费观看视频网站| 人人妻人人看人人澡| 日韩免费av在线播放| 亚洲国产精品久久男人天堂| 欧美日韩亚洲综合一区二区三区_| 日韩有码中文字幕| 亚洲av中文字字幕乱码综合 | 一a级毛片在线观看| a在线观看视频网站| 脱女人内裤的视频| 国产又色又爽无遮挡免费看| 国产精华一区二区三区| 一级毛片高清免费大全| www日本黄色视频网| 青草久久国产| 国产成人精品久久二区二区免费| 黄色女人牲交| 中文字幕人妻熟女乱码| 无限看片的www在线观看| 18禁国产床啪视频网站| 人人妻人人澡人人看| 国产亚洲精品一区二区www| 国产蜜桃级精品一区二区三区| 精品熟女少妇八av免费久了| 又黄又粗又硬又大视频| 在线永久观看黄色视频| 免费在线观看成人毛片| 麻豆成人av在线观看| 淫秽高清视频在线观看| 高清在线国产一区| 91字幕亚洲| av视频在线观看入口| 久久午夜综合久久蜜桃| av中文乱码字幕在线| 亚洲精品久久国产高清桃花| 男男h啪啪无遮挡| 丁香欧美五月| 中文字幕人妻丝袜一区二区| 视频在线观看一区二区三区| 久久青草综合色| 熟女电影av网| 免费观看人在逋| 国产aⅴ精品一区二区三区波| 日韩免费av在线播放| 日日干狠狠操夜夜爽| 欧美大码av| 国产精品久久久久久亚洲av鲁大| 日韩大码丰满熟妇| 国产精品乱码一区二三区的特点| 午夜免费观看网址| 国产单亲对白刺激| 国产午夜福利久久久久久| 一个人免费在线观看的高清视频| www国产在线视频色| 免费无遮挡裸体视频| 亚洲国产欧洲综合997久久, | 91老司机精品| 亚洲欧美日韩无卡精品| 1024视频免费在线观看| 免费一级毛片在线播放高清视频| 日本 av在线| 国产国语露脸激情在线看| 国产精品乱码一区二三区的特点| 亚洲成人国产一区在线观看| 亚洲免费av在线视频| 免费无遮挡裸体视频| 19禁男女啪啪无遮挡网站| 午夜久久久在线观看| 国产高清视频在线播放一区| 亚洲av第一区精品v没综合| 看免费av毛片| 午夜福利一区二区在线看| av福利片在线| 亚洲色图av天堂| 女性生殖器流出的白浆| 法律面前人人平等表现在哪些方面| 国产爱豆传媒在线观看 | 亚洲av成人av| 美女扒开内裤让男人捅视频| 成人av一区二区三区在线看| 免费人成视频x8x8入口观看| 久久国产亚洲av麻豆专区| 日韩欧美一区二区三区在线观看| 夜夜夜夜夜久久久久| 亚洲午夜理论影院| 亚洲欧美精品综合一区二区三区| 国产亚洲欧美精品永久| 亚洲 欧美一区二区三区| 国产精品1区2区在线观看.| 久久狼人影院| 欧美在线一区亚洲| x7x7x7水蜜桃| 久久热在线av| 国产激情偷乱视频一区二区| 麻豆久久精品国产亚洲av| 美女高潮喷水抽搐中文字幕| 午夜福利视频1000在线观看| 美女 人体艺术 gogo| 中国美女看黄片| 欧美最黄视频在线播放免费| 亚洲欧美日韩无卡精品| 国产真实乱freesex| 婷婷亚洲欧美| 91成年电影在线观看| 成人18禁在线播放| 此物有八面人人有两片| 免费看十八禁软件| 亚洲一区二区三区不卡视频| 亚洲熟妇中文字幕五十中出| 看黄色毛片网站| 国产精品精品国产色婷婷| 无限看片的www在线观看| 男女之事视频高清在线观看| 国产精品一区二区精品视频观看| 黄片大片在线免费观看| 老熟妇仑乱视频hdxx| 99久久国产精品久久久| 精品久久久久久,| 色综合欧美亚洲国产小说| av欧美777| 国产高清videossex| 久久久久久久久久黄片| 国产激情偷乱视频一区二区| 精品久久久久久久毛片微露脸| 亚洲午夜理论影院| av视频在线观看入口| av免费在线观看网站| 俺也久久电影网| 老汉色∧v一级毛片| 日韩高清综合在线| 欧美精品啪啪一区二区三区| 中文字幕人成人乱码亚洲影| 嫁个100分男人电影在线观看| 黄色毛片三级朝国网站| 一区福利在线观看| 亚洲成av人片免费观看| 韩国av一区二区三区四区| 亚洲男人天堂网一区| 91老司机精品| 亚洲av电影在线进入| 熟妇人妻久久中文字幕3abv| 国产精品久久久久久人妻精品电影| 婷婷精品国产亚洲av| 一本久久中文字幕| 男人舔女人的私密视频| 免费看日本二区| 一a级毛片在线观看| 精品久久久久久久久久久久久 | 亚洲av第一区精品v没综合| 制服人妻中文乱码| 美女 人体艺术 gogo| 国产精品国产高清国产av| 一个人免费在线观看的高清视频| 欧美 亚洲 国产 日韩一| 久久久久久久精品吃奶| 精品一区二区三区视频在线观看免费| 亚洲成人久久爱视频| 亚洲精品一区av在线观看| 老司机福利观看| 少妇被粗大的猛进出69影院| 国内精品久久久久精免费| 国产精品九九99| 久久精品亚洲精品国产色婷小说| 午夜福利在线观看吧| 精品国产超薄肉色丝袜足j| 女警被强在线播放| 久久国产精品男人的天堂亚洲| 久久久久久人人人人人| 国产精品美女特级片免费视频播放器 | 欧美中文日本在线观看视频| avwww免费| 黑人欧美特级aaaaaa片| 国产一区二区三区在线臀色熟女| 丁香六月欧美| 男女床上黄色一级片免费看| 在线观看免费日韩欧美大片| 午夜老司机福利片| 亚洲中文字幕一区二区三区有码在线看 | 少妇的丰满在线观看| 国产成人系列免费观看| 免费看日本二区| 亚洲成人精品中文字幕电影| 久久这里只有精品19| 国产高清视频在线播放一区| 国产亚洲av嫩草精品影院| 国产精品1区2区在线观看.| 日韩av在线大香蕉| 国语自产精品视频在线第100页| 亚洲黑人精品在线| 免费无遮挡裸体视频| 叶爱在线成人免费视频播放| 搡老熟女国产l中国老女人| 99在线人妻在线中文字幕| 亚洲人成网站高清观看| 宅男免费午夜| 国产久久久一区二区三区| 亚洲真实伦在线观看| aaaaa片日本免费| 国产av在哪里看| 久久精品国产99精品国产亚洲性色| 欧美日本亚洲视频在线播放| 欧美日韩福利视频一区二区| 亚洲中文字幕一区二区三区有码在线看 | 最近最新中文字幕大全电影3 | 日本 欧美在线| 香蕉久久夜色| 国产一区二区三区在线臀色熟女| 日本一本二区三区精品| 88av欧美| 亚洲欧美日韩高清在线视频| 亚洲第一青青草原| 国产精品一区二区免费欧美| 欧美黑人欧美精品刺激| 久久久久久久久免费视频了| 久久中文看片网| 中文在线观看免费www的网站 | 91麻豆精品激情在线观看国产| 伦理电影免费视频| 精品国产美女av久久久久小说| 天堂影院成人在线观看| 精品乱码久久久久久99久播| 国产人伦9x9x在线观看| 香蕉av资源在线| 最近最新中文字幕大全电影3 | 在线观看免费午夜福利视频| 少妇粗大呻吟视频| 麻豆成人午夜福利视频| 国产精品1区2区在线观看.| 母亲3免费完整高清在线观看| 99国产精品一区二区三区| 国产伦人伦偷精品视频| 黄色a级毛片大全视频| 精品乱码久久久久久99久播| 国产精品永久免费网站| 久久精品aⅴ一区二区三区四区| 老司机午夜福利在线观看视频| 久久久国产欧美日韩av| 久久这里只有精品19| 999精品在线视频| 最近最新免费中文字幕在线| 中文字幕精品免费在线观看视频| 国产精品精品国产色婷婷| 黄色毛片三级朝国网站| 90打野战视频偷拍视频| 亚洲av片天天在线观看| 一个人免费在线观看的高清视频| 国产伦一二天堂av在线观看| 久久中文字幕一级| 成人国产综合亚洲| a在线观看视频网站| 成人特级黄色片久久久久久久| 一个人观看的视频www高清免费观看 | 啦啦啦韩国在线观看视频| 久久香蕉国产精品| 亚洲欧美日韩高清在线视频| 亚洲av美国av| 日韩大尺度精品在线看网址| 久久精品91蜜桃| 1024视频免费在线观看| 国产精品亚洲一级av第二区| 欧美成人一区二区免费高清观看 | 国产精品亚洲av一区麻豆| 国产又爽黄色视频| 丰满人妻熟妇乱又伦精品不卡| avwww免费| 国产激情久久老熟女| 一a级毛片在线观看| 成人三级做爰电影| 国产又色又爽无遮挡免费看| 成人三级做爰电影| www日本黄色视频网| 精品久久蜜臀av无| 99re在线观看精品视频| 可以免费在线观看a视频的电影网站| 国产av在哪里看| 很黄的视频免费| 欧美av亚洲av综合av国产av| 十分钟在线观看高清视频www| 99国产极品粉嫩在线观看| av片东京热男人的天堂| 久久国产精品男人的天堂亚洲| 特大巨黑吊av在线直播 | 亚洲avbb在线观看| av欧美777| 中文在线观看免费www的网站 | 久久久水蜜桃国产精品网| 高潮久久久久久久久久久不卡| 深夜精品福利| 国产在线精品亚洲第一网站| 黄片小视频在线播放| 高清在线国产一区| 免费高清视频大片| 亚洲国产日韩欧美精品在线观看 | 色播亚洲综合网| 手机成人av网站| 99久久无色码亚洲精品果冻| 久久国产精品影院| 啪啪无遮挡十八禁网站| 欧美日韩精品网址| 一级片免费观看大全| 国产精品1区2区在线观看.| 欧美人与性动交α欧美精品济南到| 久久人人精品亚洲av| 99热这里只有精品一区 | 国产激情欧美一区二区| 久久人妻福利社区极品人妻图片| 亚洲av五月六月丁香网| tocl精华| 天天躁狠狠躁夜夜躁狠狠躁| 午夜成年电影在线免费观看| 亚洲真实伦在线观看| 日本在线视频免费播放| 男女床上黄色一级片免费看| 国产1区2区3区精品| 国产精品精品国产色婷婷| 国产精品98久久久久久宅男小说| 1024手机看黄色片| 男女午夜视频在线观看| 色尼玛亚洲综合影院| 日韩欧美一区二区三区在线观看| 两个人看的免费小视频| 琪琪午夜伦伦电影理论片6080| 亚洲最大成人中文| 禁无遮挡网站| 国产精品久久久久久亚洲av鲁大| 国产麻豆成人av免费视频| 观看免费一级毛片| 日韩欧美三级三区| 午夜日韩欧美国产| 日本 欧美在线|