99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

STM32啟動流程詳解:從復(fù)位向量到main函數(shù)之間發(fā)生了什么

STM32啟動流程詳解:從復(fù)位向量到main函數(shù)之間發(fā)生了什么 寫了很多年C語言你可能從沒想過一個問題PC上那個簡單的int main(void)到了STM32上為什么連點亮一個LED都要先折騰半天啟動代碼更扎心的是有時候你辛辛苦苦寫了半天邏輯燒到板子上之后發(fā)現(xiàn)main好像根本沒跑——程序既不進(jìn)斷點也不亮燈要么卡死要么直接HardFault。別急著懷疑人品這個問題的根源在于兩份main之間隔著一整套復(fù)雜的啟動鏈路。這篇文章就把這條鏈路徹底拆開從PC上的運行時啟動講到STM32的啟動文件、鏈接腳本、堆棧初始化和時鐘配置搞清楚你的代碼在上電之后到底經(jīng)歷了什么才真正走到main那一行。無論你是剛?cè)腴TSTM32的嵌入式新手還是C語言功底不錯但第一次接觸MCU開發(fā)的轉(zhuǎn)行開發(fā)者這篇文章都能幫你少走彎路。1. 一枚main函數(shù)的“前世”PC環(huán)境下誰幫你把代碼準(zhǔn)備到位了1.1 你以為的起點并不是真正的起點在PC上寫C語言編譯器生成的入口點其實不是你寫的main。拿Linux下最簡單的程序舉例#include stdio.h int main(void) { printf(hello\n); return 0; }你用gcc編譯它再用readelf -h查看可執(zhí)行文件的入口地址會發(fā)現(xiàn)入口點Entry point并不是main的地址而是一個名叫_start的符號。這個_start是由C運行時庫比如glibc的crt1.o提供的它才是程序真正被操作系統(tǒng)“叫醒”之后執(zhí)行的第一段代碼。這段_start做的事情包括從內(nèi)核手里拿到棧指針、參數(shù)和環(huán)境變量。初始化一些全局運行時狀態(tài)比如stdin、stdout、stderr緩沖區(qū)。調(diào)用__libc_start_main在這個函數(shù)里再調(diào)用你的main。等main返回后把返回值傳給exit系統(tǒng)調(diào)用交給內(nèi)核清理進(jìn)程。所以在PC上你只管寫main至于棧是誰給的、全局變量在哪、啟動參數(shù)怎么傳全都被操作系統(tǒng)、動態(tài)鏈接器和運行時庫“消化”掉了。你感覺不到這些是因為PC的啟動鏈路已經(jīng)極其成熟編譯器默認(rèn)給你接好了一切。1.2 運行時庫與啟動代碼在PC上做了什么我們來細(xì)數(shù)一下PC上從按下“運行”到進(jìn)入main之間系統(tǒng)幫你干的活。第一是棧的布置。在x86-64架構(gòu)下Linux/Windows加載程序時內(nèi)核會在用戶空間棧頂放好參數(shù)和環(huán)境信息進(jìn)程一開始就有一條可用的棧。你的函數(shù)調(diào)用、局部變量都不會掉到?jīng)]??捎玫牡夭?。第二是運行時環(huán)境的初始化。比如C庫里很多函數(shù)內(nèi)部會用到鎖、線程局部存儲這些東西需要在main之前就緒。很多嵌入式開發(fā)者第一次看到PC的啟動鏈路會覺得復(fù)雜其實這套東西的復(fù)雜程度遠(yuǎn)超MCU只是操作系統(tǒng)給封裝掉了。第三是標(biāo)準(zhǔn)輸入輸出的初始化。printf、scanf背后牽扯到文件描述符、緩沖區(qū)的申請這些全在main之前做好所以你才能在第一行代碼里直接printf(hello)。第四是程序結(jié)束的處理。你的main里寫了return 0這個返回值不會直接丟給操作系統(tǒng)而是經(jīng)過C庫的exit流程先刷新緩沖區(qū)把還沒來得及輸出的數(shù)據(jù)吐出來再調(diào)用atexit注冊的鉤子最后才通知內(nèi)核回收進(jìn)程。這一整套流程有些MCU環(huán)境的C庫比如Keil MDK里的MicroLIB也會做一部分但做得非常精簡。因為MCU上根本沒有操作系統(tǒng)也沒有所謂的“進(jìn)程”概念運行時庫能做多少取決于移植程度。這就是為什么你會看到同樣的C代碼在PC上跑得好好的放到STM32上就各種問題——兩邊main之前的世界工作量完全不對等。1.3 對比視角同樣是main差異從哪里出現(xiàn)把PC的啟動鏈路和STM32放在一起對比差異其實集中在三個點。第一棧從哪來。PC的棧由操作系統(tǒng)分配好MCU的棧必須由你或者啟動文件用一個固定的數(shù)組/內(nèi)存區(qū)域來定義然后在復(fù)位后立刻把棧指針SP指過去。如果這一步?jīng)]做對任何函數(shù)調(diào)用都會把數(shù)據(jù)寫進(jìn)未知內(nèi)存程序必掛。第二數(shù)據(jù)段誰來初始化。PC上編譯器會把初始值不為0的全局變量放在可執(zhí)行文件的數(shù)據(jù)段中程序啟動時加載器負(fù)責(zé)把它映射到內(nèi)存。MCU上沒有“加載器”這個概念代碼編譯出來是一份獨立的bin文件燒在Flash里。Flash中的代碼和常量可以直接尋址但RAM里的全局變量必須先“復(fù)制”過去。這個復(fù)制動作必須在main之前完成。第三入口路徑完全不同。PC從loader跳到一個運行時入口MCU從上電復(fù)位向量跳到一個匯編寫的復(fù)位處理函數(shù)。ARM處理器沒有一個“操作系統(tǒng)”在背后兜底所以所有初始化都得靠啟動文件、鏈接腳本和C庫一起協(xié)作。下圖這種鏈路寫起來不復(fù)雜但是每一環(huán)都得理解。上電復(fù)位 - 讀取向量表 - Reset_Handler - SystemInit - __main(C庫) - main不理解這幾環(huán)后面排查問題就很容易瞎猜。理解了大多數(shù)啟動異常都能一眼定位。2. STM32的main之前啟動文件與向量表的真實分工2.1 芯片上電第一步讀取向量表STM32是ARM Cortex-M內(nèi)核它的啟動方式和PC完全不一樣。Cortex-M內(nèi)核在復(fù)位后硬件會自動從地址0x00000000讀取初始棧指針MSP的值從0x00000004讀取復(fù)位向量然后跳轉(zhuǎn)到這個向量指向的地址去執(zhí)行。也就是說芯片不需要“BootLoader”也能啟動它天生就知道要從哪里開始跑。這里有個容易誤解的點STM32的Flash實際起始地址是0x08000000但CPU復(fù)位時是從0x00000000開始取向量。這是怎么對上的因為Cortex-M處理器在復(fù)位后會進(jìn)行地址重映射具體到STM320x00000000映射的就是0x08000000的Flash區(qū)域。所以你在鏈接腳本里看到“FLASH起始地址 0x08000000”向量表也放在這里復(fù)位時依然能正確執(zhí)行。向量表本質(zhì)是一張地址表每一項對應(yīng)一個中斷或異常的入口地址。表的第0項不是地址而是初始棧指針。很多新手會在調(diào)試時打開反匯編文件看到第一行是類似0x08000000 0x20000800這樣的數(shù)據(jù)那其實不是指令而是MSP的初始值。如果把啟動文件里Stack_Size改小了這個初始棧頂?shù)刂芬矔儭?.2 啟動文件里到底寫了什么Keil MDK里每個STM32芯片都會帶一個啟動文件文件名一般是startup_stm32f103xe.s這種。第一眼看到一坨匯編很多人直接關(guān)閉其實它做的事非常固定。我用一段簡化版來描述它的核心邏輯; 定義棧大小和堆大小 Stack_Size EQU 0x400 AREA STACK, NOINIT, READWRITE, ALIGN3 Stack_Mem SPACE Stack_Size __initial_sp ; 定義向量表 AREA RESET, DATA, READONLY __Vectors DCD __initial_sp ; 0x00 棧指針 DCD Reset_Handler ; 0x04 復(fù)位向量 DCD NMI_Handler ; 0x08 ; ... 其他中斷向量 ; 復(fù)位處理函數(shù) Reset_Handler PROC EXPORT Reset_Handler LDR SP, __initial_sp ; 重新設(shè)置棧指針 LDR R0, SystemInit ; 調(diào)用系統(tǒng)初始化 BLX R0 LDR R0, __main ; 調(diào)用C庫初始化 BLX R0 B . ENDP看到?jīng)]有核心就四件事定義棧區(qū)、定義向量表、設(shè)置SP、調(diào)用SystemInit和__main。如果哪天你發(fā)現(xiàn)程序連main都進(jìn)不去先檢查這個啟動文件有沒有被正確編譯鏈接進(jìn)去再檢查Reset_Handler是不是被改得面目全非。Keil工程的啟動文件在編譯后是startup_stm32f103xe.o鏈接時會把它放在Flash的最前面。編譯完后用fromelf工具轉(zhuǎn)出來能看到向量表是正確的那就說明啟動鏈路沒斷。2.3 SystemInit與時鐘配置為什么你的main總是“慢半拍”啟動文件里在進(jìn)入__main之前還會調(diào)用一個叫SystemInit的函數(shù)。這個函數(shù)由ST提供的標(biāo)準(zhǔn)外設(shè)庫或者HAL庫實現(xiàn)負(fù)責(zé)的是芯片運行之前的“溫度調(diào)節(jié)”——把時鐘樹配好。STM32上電后默認(rèn)使用內(nèi)部高速RC時鐘HSI頻率不高大約8MHz不同芯片型號略有差異。如果內(nèi)部Flash比較慢CPU跑太快就會導(dǎo)致取指錯誤所以在提高主頻之前必須先給Flash配置等待周期。SystemInit干的主要事情包括設(shè)置Flash訪問等待周期。配置總線分頻器AHB/APB1/APB2。根據(jù)外部晶振HSE啟動PLL把系統(tǒng)主頻提上去。把系統(tǒng)時鐘源切換如切到PLL。使能并配置各外設(shè)時鐘這部分在HAL中可能放到HAL_RCC_ClockConfig。很多人在寫外設(shè)驅(qū)動時明明代碼沒問題串口就是亂碼LED就是閃得不正常最后查半天發(fā)現(xiàn)是時鐘沒配好。這就是沒理解SystemInit的意義。也有些人圖省事在main里直接改時鐘寄存器但這有個隱患如果SystemInit已經(jīng)跑過你又在后面重新配置一旦順序?qū)懗上惹袝r鐘源再設(shè)置等待周期當(dāng)場掛掉。建議保持默認(rèn)做法讓SystemInit先跑不要在main里反復(fù)折騰時鐘除非你明確知道自己在干什么。3. 從啟動文件到main鏈接腳本、堆棧與變量初始化的完整鏈條3.1 鏈接腳本如何決定代碼“放在哪里”啟動文件只是把“啟動邏輯”寫好了但代碼到底被放在Flash的哪個地址、變量被放在RAM的哪個地址這是鏈接腳本Linker Script決定的。STM32的鏈接腳本在CubeIDE里后綴是.ld在Keil里是.sct分散加載文件定義了內(nèi)存布局。拿最常見的STM32F103來說Flash范圍是0x08000000到0x0801FFFF假設(shè)512KBRAM范圍是0x20000000到0x2000FFFF假設(shè)64KB。鏈接腳本會把這些區(qū)域劃分給不同的段.isr_vector向量表放在Flash最開始。.text代碼段包含啟動文件、SystemInit、main和各種函數(shù)。.rodata只讀數(shù)據(jù)比如字符串常量、const數(shù)組。.data已初始化的全局變量。有趣的是這個段的“最終位置VMA”在RAM但它的“初始數(shù)據(jù)LMA”存放在Flash。也就是說Flash里備份了一份初始值需要搬到RAM里。.bss未初始化的全局變量不占Flash空間只在RAM里占位置但必須在啟動時清成0。鏈接腳本最重要的作用就是告訴鏈接器.data的Load Address放在Flash的意義下而運行地址放在RAM的意義下。如果鏈接腳本寫錯把.data的VMA也放在Flash里那么程序運行時試圖修改全局變量實際改的是Flash那結(jié)果只能是寫保護(hù)錯誤或程序瘋掉。3.2 堆棧初始化為什么PC不用關(guān)心而MCU必須關(guān)心C語言里的局部變量、函數(shù)調(diào)用、返回值這一切都依賴于棧。PC上操作系統(tǒng)會分配好??臻g應(yīng)用層完全無感。但在STM32上??臻g是啟動文件里用一段匯編代碼定義的。比如上面啟動文件里的Stack_Size EQU 0x400 AREA STACK, NOINIT, READWRITE, ALIGN3 Stack_Mem SPACE Stack_Size __initial_sp這段代碼的意思是在RAM里留出0x400字節(jié)1KB的空間作為棧并定義符號__initial_sp指向棧頂。因為RAM是從低地址向高地址增長而棧是向下生長的所以初始棧指針指向這塊內(nèi)存的最高地址。如果??臻g給太小局部變量一深、中斷一多棧就會往低地址溢出擦掉其他變量數(shù)據(jù)導(dǎo)致各種詭異問題。你可能會問為什么啟動文件里已經(jīng)給SP賦過一次值在Reset_Handler開頭又要重新設(shè)置一遍其實如果編譯器正確使用了__initial_sp這一步有些冗余但這樣寫能保證SP絕對正確畢竟在調(diào)用任何函數(shù)包括SystemInit之前SP必須指向合法內(nèi)存。這是啟動代碼的鐵律進(jìn)入C函數(shù)之前棧必須就緒。實際排查棧溢出時可以在啟動文件的棧區(qū)域填滿一個固定值比如0xAAAAAAAA跑完程序后檢查這段區(qū)域看哪個地方的值被改寫了就能大致判斷棧用了多少、溢出了多少。這個方法在裸機開發(fā)里非常實用比純看寄存器直觀得多。3.3 .data和.bss段的搬運誰在main之前做了這件事前面老提到__main這里得說透。ARM編譯工具鏈里的__main并不是你寫的那個main函數(shù)它是一個C庫提供的初始化入口函數(shù)負(fù)責(zé)在調(diào)用你寫的main之前完成三件事把Flash里的.data段初始值復(fù)制到RAM對應(yīng)的地址。把.bss段清零。如果需要初始化堆和標(biāo)準(zhǔn)庫環(huán)境比如printf會用到的緩沖區(qū)。從匯編角度__main內(nèi)部會調(diào)用__scatterload、__rt_entry最后才跳轉(zhuǎn)到你的main。正是因為有了這個流程你的代碼里寫int global_count 42; // .data段 int buffer[1024]; // .bss段才能保證一進(jìn)入mainglobal_count的值就是42buffer里全是0。如果某個環(huán)節(jié)出問題比如鏈接腳本的Region大小寫錯導(dǎo)致搬運地址重疊這些初始值就會錯亂出現(xiàn)“全局變量一開始就是臟數(shù)據(jù)”的怪象。在STM32CubeIDE或者Keil里調(diào)試時可以在__main處設(shè)一個斷點。你會發(fā)現(xiàn)程序確實先停在__main之后才停在你的main。如果你用MicroLIB這個__main的初始化會簡化很多但依然會做數(shù)據(jù)段搬運。所以可以做一個簡單的實驗定義一個初始值為非0的全局變量在main的第一行設(shè)斷點單步查看它是否和預(yù)期一致基本能驗證啟動鏈路是否正常。3.4 實操驗證在啟動文件里加斷點看執(zhí)行順序這里給你一個特別直接的驗證方法。假設(shè)你用的是Keil MDK把工程編譯下載后進(jìn)入調(diào)試模式在Reset_Handler處設(shè)斷點Keil里可以打開啟動文件在匯編代碼行設(shè)置。在SystemInit處設(shè)斷點。在__main處設(shè)斷點。在你自己寫的main第一行設(shè)斷點。按F5全速運行你會看到程序依次停在這幾個位置。這個順序非常清晰能直觀地告訴你整個啟動鏈路是怎么走的。如果你在__main處都沒有停住那問題一定出在啟動文件或向量表配置上跟你的業(yè)務(wù)代碼一點關(guān)系都沒有。用STM32CubeIDE也是類似的操作在調(diào)試視圖的“Breakpoints”窗口添加符號斷點即可。需要注意一個細(xì)節(jié)如果芯片已使能Flash讀保護(hù)調(diào)試器可能會因為無法訪問Flash導(dǎo)致無法設(shè)置斷點所以先用IDE的“下載程序”功能解除讀保護(hù)或者用官方工具把選項字節(jié)改回去。4. main之后的世界中斷、調(diào)度與“空循環(huán)”的真相4.1 你的main到底應(yīng)該長什么樣理解了啟動鏈路之后再來看main本身。PC的main執(zhí)行完可以return 0交給操作系統(tǒng)收尾。STM32上的main如果執(zhí)行完返回結(jié)果只有一個程序指針跑飛進(jìn)入HardFaultLED不亮串口亂碼整個系統(tǒng)癱掉。因此裸機開發(fā)里main的標(biāo)準(zhǔn)長相一定是int main(void) { SystemClock_Config(); // 如果SystemInit沒做好這里再補一遍 LED_Init(); // 初始化外設(shè) UART_Init(); while (1) { // 主循環(huán)業(yè)務(wù) } // 永遠(yuǎn)不要 return }這個while(1)就是整個宇宙的中心。你可以把它理解成“前臺調(diào)度循環(huán)”芯片一旦進(jìn)入這個循環(huán)只要沒有中斷發(fā)生CPU就一直在里面打轉(zhuǎn)。所有用中斷處理的任務(wù)串口收數(shù)據(jù)、按鍵觸發(fā)、定時器回調(diào)都在“后臺”異步執(zhí)行。前后臺系統(tǒng)聽起來簡陋卻是大量物聯(lián)網(wǎng)終端、工控板卡的實際運行模型。4.2 中斷向量與調(diào)度main只是“前臺”真正干活的是中斷說句實在話裸機程序里真正干活的大多數(shù)是中斷服務(wù)函數(shù)ISRmain里的循環(huán)更像是“守門員”。發(fā)生了一個串口接收中斷CPU會暫停當(dāng)前正在執(zhí)行的主循環(huán)指令保存現(xiàn)場然后跳轉(zhuǎn)到串口中斷向量對應(yīng)的函數(shù)。等ISR執(zhí)行完再恢復(fù)現(xiàn)場回到剛才的主循環(huán)位置繼續(xù)跑。那中斷向量是怎么關(guān)聯(lián)到ISR的呢關(guān)鍵就是向量表。啟動文件里定義了形如DCD USART1_IRQHandler DCD EXTI0_IRQHandler這些符號需要在C代碼里定義成真正的函數(shù)。如果某個中斷觸發(fā)后找不到對應(yīng)函數(shù)比如你在向量表里寫的是USART1_IRQHandler但C代碼里定義成了USART1_IRQ_Handler名字不匹配鏈接器就會把未定義符號的地址填成0或一個弱引用。一旦中斷觸發(fā)處理器跳到無效地址直接HardFault。這也是很多新手做完串口例程后一收數(shù)據(jù)就死機的常見原因。排查辦法很簡單看MAP文件里的__Vectors段逐一核對中斷向量地址和函數(shù)地址確認(rèn)函數(shù)名完全一致。4.3 常見坑為什么有的程序main“沒執(zhí)行”就跳到了HardFault有一種情況在外設(shè)驅(qū)動里特別經(jīng)典main里一初始化完某外設(shè)還沒來得及進(jìn)while循環(huán)程序就跑飛了。表面看起來像main“沒執(zhí)行完”本質(zhì)原因往往指向三個方向。第一外設(shè)時鐘沒使能。STM32大部分外設(shè)的寄存器默認(rèn)沒有時鐘你直接操作GPIO、USART寄存器等于對著空氣寫訪問無效地址會觸發(fā)總線錯誤。解決方法是調(diào)用__HAL_RCC_GPIOx_CLK_ENABLE()這類函數(shù)先把時鐘開啟。第二中斷優(yōu)先級分組還沒配好中斷就來了。特別是用到多個中斷時如果在配置外設(shè)之前就啟用了內(nèi)核中斷響應(yīng)優(yōu)先級分組不一致會導(dǎo)致數(shù)值比較邏輯混亂也可能引發(fā)HardFault。第三中斷服務(wù)函數(shù)沒有實現(xiàn)或命名不對。前面提到過向量表匹配問題如果函數(shù)名不一致鏈接器不會報錯但運行時只要中斷一觸發(fā)就崩。這類問題的排查思路不是看main而是看向量表和MAP文件。還有一個小坑你在main里調(diào)了一個函數(shù)這個函數(shù)內(nèi)部用了大數(shù)組作為局部變量。默認(rèn)棧只有1KB或2KB局部數(shù)組稍微一大比如char buf[2048]棧直接溢出程序在函數(shù)內(nèi)還沒跑完就踩壞了其他變量。這是典型的“main在執(zhí)行但數(shù)據(jù)已經(jīng)被破壞”的場景。遇到這種問題優(yōu)先把大數(shù)組改成靜態(tài)局部變量或者全局變量而不是盲目加大棧。5. 常見問題與排查技巧實錄當(dāng)main“不聽話”時5.1 main函數(shù)根本沒進(jìn)去現(xiàn)象燒錄后程序不運行調(diào)試時斷點打不進(jìn)main程序一直停在復(fù)位向量附近或死循環(huán)。這個是最讓人摸不著頭腦的問題。排查步驟建議按順序來看Build Output確認(rèn)啟動文件有沒有參與編譯。如果工程里沒加startup_xxx.s鏈接器不知道復(fù)位向量在哪芯片復(fù)位后只能抓瞎。檢查下載地址是否匹配。如果Flash起始地址被改成0x08004000而向量表還在0x08000000開頭頭幾個向量就是錯的。在Reset_Handler的入口設(shè)斷點看能不能停住。如果連這里都停不住說明調(diào)試器和芯片連接就有問題或者Flash已經(jīng)被寫過異常內(nèi)容。檢查BOOT引腳。BOOT0/BOOT1的電平不同決定了啟動是從Flash還是從系統(tǒng)存儲器內(nèi)置Bootloader執(zhí)行。如果BOOT引腳把啟動模式拉到了其他區(qū)域程序當(dāng)然不走Flash里的main。最快驗證方案新建一個最小的“空main工程”只包含啟動文件、SystemInit和一個空的while(1)。如果這個工程能正常進(jìn)入main說明你原來的工程在鏈接配置或啟動文件上出了問題再逐個對比差異。5.2 局部變量一多就亂棧溢出排查現(xiàn)象程序跑一段時間后隨機會跑飛或者在函數(shù)里定義的局部變量被莫名改寫調(diào)試時單步走得好好的全速跑就崩。棧溢出的根源很直接啟動文件里定義的Stack_Size小于程序?qū)嶋H棧需求。排查方法我推薦“填充標(biāo)記法”在啟動文件里把棧區(qū)大小臨時調(diào)到足夠大比如4KB。在Reset_Handler里在跳到__main之前往棧區(qū)域填充一段固定值比如0xA5A5A5A5。程序跑到你覺得有問題的位置時暫停查看棧區(qū)域找到連續(xù)0xA5A5A5A5被破壞的邊界就能算出棧的實際使用深度。如果確實棧不夠優(yōu)先改啟動文件的Stack_Size。同時檢查有沒有遞歸調(diào)用、有沒有在函數(shù)里定義超大的局部數(shù)組、回調(diào)函數(shù)里有沒有爆棧。一個小技巧中斷既然也會用棧盡量讓ISR短小精悍不要在ISR里寫復(fù)雜邏輯否則中斷嵌套一旦多了棧壓力會翻倍。5.3 全局變量莫名被改鏈接腳本和啟動文件不匹配現(xiàn)象某些全局變量初始值根本不對或者程序跑著跑著A變量的值出現(xiàn)在B變量里。這種情況一般和.data段的搬運有關(guān)。排查時優(yōu)先看MAP文件。打開工程生成的.map找到.data段的起始地址和長度再找到全局變量的RAM地址。如果兩個地址范圍有重疊說明鏈接腳本里RAM分配有誤導(dǎo)致變量“住同一個房間”。還有一種情況啟動文件的棧定義在RAM區(qū)域開頭而鏈接腳本把.data也放在RAM開頭兩邊互相踩踏。這種問題在多文件工程里很常見特別是那些“手工拼”的工程沒用芯片廠商自帶的模板。最穩(wěn)妥的解決辦法是用廠商提供的模板工程STM32CubeMX生成、或Keil自帶的芯片示例作為基礎(chǔ)在里面添加你自己的文件不要自己從頭寫鏈接腳本。等你能完全理解腳本里的每個符號了再手動修改也不遲。5.4 啟動異常速查表現(xiàn)象可能原因檢查點快速修復(fù)斷點進(jìn)不了main啟動文件未編譯鏈接Build Output、MAP文件加入對應(yīng)芯片的startup文件程序上電不運行BOOT引腳配置錯誤BOOT0/BOOT1電平將BOOT0拉低從Flash啟動一開中斷就HardFault中斷服務(wù)函數(shù)名不匹配向量表與C函數(shù)名核對啟動文件里的函數(shù)名全局變量初始值不對.data搬運異常MAP文件、鏈接腳本用官方模板重建鏈接配置局部變量反復(fù)被改棧溢出Stack_Size、填充標(biāo)記加大?;驕p少局部大數(shù)組外設(shè)初始化后卡死外設(shè)時鐘未使能RCC寄存器調(diào)用對應(yīng)__HAL_RCC_xxx_CLK_ENABLEmain返回后跑飛main里執(zhí)行了return代碼必須有while(1)循環(huán)做嵌入式開發(fā)這些年我最大的體會是大部分“詭異問題”最后查出來都出在啟動階段。很多時候不是你的業(yè)務(wù)邏輯寫錯了而是代碼根本沒有正確被“搬運”到該去的地方main之前的世界出了岔子。所以我拿到一塊新板子第一件事永遠(yuǎn)是先跑一個只點燈的“空main”工程確認(rèn)啟動鏈路是通的再往上疊加外設(shè)和邏輯。這個習(xí)慣幫我省下了無數(shù)Debug的時間。如果你現(xiàn)在也被“main沒執(zhí)行”“程序莫名跑飛”“全局變量被篡改”折磨建議回到起點從頭檢查這條代碼之路向量表、復(fù)位處理、時鐘樹、棧分配、數(shù)據(jù)搬運。代碼不會騙人只是你還沒找到它真正走過的路。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美啪啪9| 激情五月天的婷婷| 91肏| 九九久久色| 中文字幕,综合,91| 色操综合| 国产69久久久欧美黑人A片| 就爱射中文字幕资源网| 狠狠肏综合网| 91色色色视频| 色丁香在线视频| 五月婷天堂视频| 丁香五月在线伊人| 综合激情肏逼网| 色播五月| 婷婷五月天综合在线| 呦呦视频无码播放| 人人爱干人人爱草| 手机在线日韩视频中文字幕| 五月丁香久久丝袜啪啪| 狠狠色综合无线观看| 操人无码| 91性高潮久久久久久久久| 五月婷六月综合在线观看| 欧美一黄一色一乱一伦| 婷婷五月天VI| 日韩成人中文| 第二色AⅤ| 国产精品24r| 丁香五月自拍| 99热九九热| 精品人妻久久久久| 丁香婷婷色| 久操b网| 大香蕉伊在| 伊人综合网站| 五月婷婷视频| 丰满老熟妇BBBBB搡BBB| 日韩精品无码一区二区| 国产肥白大熟妇BBBB视频| 99热偷拍| 99免费在线| 狠狠搞狠狠操| 超碰在线综合| 色域五月婷婷丁香| 亚洲综合五月天| 国产精品电影网| 丁香美女主播视频在线观看| 99免费视频在线观看爱| 五月天婷婷激情小说电影| 婷婷五月天综合蜜桃| 伊人婷婷青青cao| 婷婷九月丁香| 亚洲亚洲激情| 开心五月婷婷激情网| 久久久妻人人人| 99ri久久| 噜综合| 无码se| AV中文在线| 国产 亚洲 在线| www.夜夜| 亚洲成人影视在线观看| 五月丁香色色网| 狠狠爱婷婷| 色婷婷综合影院| 99久视频| 在线播放成人网站| 色色色九九九五月婷婷| 激情五月综合久久| 亚洲色情久久| 五月开心激情网| 伊人网色婷婷五月天| 亚洲九九99精品视频在线播放| 亚洲成人免费电影| 另类国产欧美视频| 99精品久久久久久久婷婷| 99九九在线精品热动漫| 99精品视频在线| 第四色婷婷最爱| 人人看人人草人人摸| 色婷婷丁香五月综合| 婷婷五月天亚洲综合| 色婷婷丁香香香蕉视频| 久草婷婷| 日美三级| 久久6这里只有精品| 丁香五月天精品| 九九免费精品| 日本色色色| 91|疯狂丨高潮丨对白| 色色综合五月| 国内婷婷丁香社区在线播放| www.五月丁香| 五月日韩中文字幕| 五月天婷婷av| 亚洲另类视频| 九九热最新| av电影在线播放| 99热新网址| 色五月婷婷激情五月| 国产精品色婷婷AV综合色色| 国产精自产拍久久久久久蜜| 久草A片| 亚洲综合网激情小说| 五月综合缴情网| 亚洲欧美综合7777色婷婷| 日本久久精品| 在线网黄| 五月婷婷婷丁香播| 99亚洲精品综合在线| 人人综合久| 激情网 五月天| 99色色网| 超碰在线资源| 色偷偷狠狠| 碰碰91| 人五月天婷婷喷水| 婷婷丁香第一页| 久久538| 99精品偷自拍| 激情小说五月丁香在线视频观看视频| 久久大香蕉同僚| av一级棒av| 91.com男女操| 亚洲一区二区无遮挡A片| 精品久久穴| 欧美六月| 久久久99久久| 婷婷情色五月天| 不卡影院午夜理论片| 日韩成人精品中文字幕| 色99网| 人人草人| www久久久久| 丁香五月天欧美| AV色婷婷| 五月丁香成人| 中文无码婷婷| 亚洲精品99| 五月花激情网| 人人操av| 外国碰视频网站97| 超碰91在线| 98色花堂98t.R| 97婷婷五月天| www.99热这里精品| 丁香花五月天激情| 中文激情网| 欧美日韩成人高清在线| 亚洲一区二区无遮挡A片| 五月天激情久色| 狠狠色丁香五月婷巨| 99色视频| 高清不卡一区| 天天插天天干| 极品人妻videosss人妻| 99热8在线| 丁香网五月网| yw国产AV| 亚洲色热| 99久久久久| 久久婷婷热| 99热99精品| 人人九色| 丁香五月天欧美成人| 人妻熟妇国产精品| 婷婷色五月久久| 亚洲亚洲人成综合网络| www.99热这里精品| 日本精品在线噜噜噜| 99国产在线| 色五月丁香六月资源站| www.lchjjc.com| 久久一级AV| 我要看激情五月天| 五月天社区婷婷丁香社区| 久久久无码精品成人A片小说| 日熟女| 人妻精品在线| 亚洲mm色| 99热综合在线| 久久无码成人| 久久婷婷国产| 婷婷五月丁香激情色情| 色综合久久综合| 影音先锋91| 午夜免费试看| 天天色2017| 国产VA亚洲VA96| 狠干综合| 久久婷婷五月综合97色一本| 97人人妻人人艹| 亚洲bt丁香五月天婷婷激情小说| 欧美综合五月丁香六月婷| 五月婷婷深深爱| 狠狠88综合久久久久噜噜噜| 六月丁香停| 大香蕉啪啪啪| 亚洲成人在线五月天| 综合激情在线| 岛国资源站| 久久五月天婷婷| 天天摸日日舔狠狠添婷婷婷| 91九色丨国产丨爆乳| 丁香婷婷激情| 五月天色色网站| α久久| 五月天婷婷色情| 五月激情偷拍| 九九热最新| 99视频这里有精品| 激情综合五月婷婷六月丁香| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 第四色婷婷五月| 九九久久精品國產| 五月天婷a在线| 九九大香蕉黄色影院| www.狠狠狠狠| 丁香六月婷婷综合激情欧美 | 成人亚洲精品| 婷婷五月激情的图片| 日本色婷婷| 久久婷婷人人| 99热都是精品| 99色色色色| 久热这里只有精品6官网亚洲| 色99xx| 久久视频在线视频| 天天插天天射| 99热超碰| 婷婷五月综合网| 香蕉人在线香蕉人在线 | Jh7Uf088VHafNm| 色色色欧美| 热九九九九| 人人人操 超碰| 夜夜爽天天爽| 99热97| 丁香五月天综合| 丁香五月天BBw| oumeisesewang| 激情久久久久久| 色婷成人狠干| 国产激情在线| 在线网黄| 色播六月| 婷激情五月天视频导航| 天天日日人| 久久婷婷亚洲| 五月天婷婷综合久久| 激情婷婷在线中文字幕| 激情综合区| 嫩草国产| 六月色播| 日本熟女视频一区二区| 天天舔夜夜操www com| 91男同| 操碰99| 97干综合网| 婷婷七月丁香色色| 精品久久99码| 五月婷婷久久开心网| site:xmssd.com| 婷婷五月综合色中文字幕| 99久久亚洲精品视频| 97综合在线| se99高清无码| 狠狠干狠狠干狠狠干狠狠干| 99热成人在线| 成人版视频在线观看| 九九热最新| 五月丁香激情综合啪啪| 六月丁香激情网| 丁香五月激情啪啪| 99在线精品免费视频| 97精品人人A片免费看| 伊人无码高清| 久久综合五月婷婷| 亚洲色五月| 亚洲五月天第一综合干| 九九精品视频在线6| 婷婷色欧美激情| 99视频在线精品| 少妇综合网| 影音先锋一区二区三区| 8090在线影视少妇| 热婷婷在线视频| 超碰在线超碰| 综合性视频99| 久久 天天| 在线中文字幕视频| 九九成人电影婷婷| 五月丁香另类图片| 性生活久久朋友人妻| 97色色综合| 婷婷亚洲综合| www.99.色| 视频1区2区| 成人短视频在线| 激情五月伊人婷婷| 思思热在线观看| 五月天综合| 色欲AVV| 秋霞AV美国| 女人露出p毛视频www网站| 五月天天天综合| 亚洲成人人人操| 婷婷五月天色| 五月狠狠| 密桃激情五月天综合网| 青草激情综合| 9999热在线观看| 99开心五月五月丁香激情| 人妻在线中文字幕久久| 99视频内射三四| 精品热九九| 婷婷射丁香| 久久婷婷一级片| 激情综合五月婷婷| seuuu婷婷| 激情爱爱网站超大免费| 久久丁香久久| 性av| 99超在线| 婷婷精品免费久久| 大天天伊人| 日韩精品色| 97久久久久| 97超喷视频在线观看| 99自拍视频网站| 另类综合婷婷五月天欧美视频| 青草激情综合| 婷婷九九| 婷婷久久五月天丁香| 日韩人妻AV在线| 六月丁香婷婷五月天| 99热这| 色婷婷小说| 婷婷永久在线| 伊人久久艹| 久久综合五月婷婷| 色99在线视频| 高清av在线国产| 天天做天天爱天天爽在| 婷婷五月天久久久| 婷五月天天| 成人婷99最新| 色五月综合激情| 97超碰在线免费观看| 婷婷操逼| 丁香婷婷五月激情| 超碰在线视屏| 五月丁香久人妻中文| 99国产视频网| 婷婷五月色花丁香社区| 人人摸人人摸| www.综合久久| 婷婷在线视频| 婷婷玖玖五月天| www激情| 六月丁香AV| 丁香五月av在线| 色狠狠色噜噜AV天堂五区| 综合网色| 色五月亚洲| 99re热| 天天干天天干天天| xx色综合| yw国产AV| 婷婷爱五月天| 日韩在线9| 日韩狠狠色| 色情五月天。| 99热18| 婷婷伊人綜合中文字幕| 国产亚洲精品久久久久久牛牛| 久久99热这里| 九九九九热99超碰| 激情五月天网站| 激情婷婷九月| 99热精品在这里| 五月开心婷婷极品激情| 最近韩国日本免费高清观看| 久久这里有精品视频| 亚洲性爱AV| 五月天桃色深爱网| 婷婷五月大| av亚洲国产小电影| 色99在线视频| 激情五月天婷婷图| 高清a片基地| 色色射| 免费啪啪亚州视频| 激情五月天网站| 伊人狠狠干| 激情国产综合| 99精品偷自拍| 九九热精品视频在线观看| 99在线资源| 97人妻碰碰中文无码久热丝袜| 亚洲丁香五月美女| 五月天婷婷社区久久综合| 九九色综合九九色| 五月婷婷综合潮喷| 激情综合啪啪啪| 五月停性愛| 丰满人妻一区二区三区| 丁香六月亚洲| 色色丁香五月天| 搡BBBB搡BBB搡五十| 无码少妇高潮喷水A片免费| 开心五月婷| www.色色五月天.com| 欧美成人精品A片免费一区99| 思思久久99热只有频精品66| 天天搞夜夜爽夜夜爽| 在线免费视频caop| 九九99精品视频在线观看| 天天干天天色天天干| 伊人www22综合色| 日本二级毛片二级毛片| 日日噜噜夜夜狠狠久久丁香五月| 色综合天天综合成人网| 蜜桃五月天色| 婷婷久久午夜网| 色五月激情图片| 五月丁香六月成人| 玖玖五月丁香| 婷婷五月天欧美| xxxx五月激情| 婷婷久久久| 婷婷综合伊人| 亚洲A片成人无码久久精品青桔| 停婷丁五月在线| 狠狠操天天操天天操| 久久99精品日本| 精品视频二级九九| 国外亚洲成AV人片在线观看| 亚洲第一综合| 亚洲第一第二网站| 久久久99婷婷久久久久久| 日韩成人不卡| 中字幕视频在线永久在线观看免费| 性色天| www.丁香黄色五月天人与| 色综合久久88色综合天天99| 97干在线播放| Www.狠狠| 久久久五月天网站| www.久久久久久久久久久| 色色色香蕉五月婷| 国产XXXX搡XXXXX搡麻豆| 人妻av在线| 丁香美女五月天婷婷| 开心五月天激情| www.狠狠狠.com| 天天日,天天射,天天插| 狠狠色婷婷7| 久月婷婷| 免费九九热| 狠狠香蕉| 69堂午夜视频最新地址| 五月熟妇婷婷久久| 亚洲综合婷婷五月天| 丁香亭亭久久| 狠狠狠激情网| 久久久精品人妻录| 天天天天天天操| 色综合久久五月天| 玖玖爱综合网| 性爱视频99| AV人人操| 国产看真人毛片爱做A片| 被强行糟蹋的女人A片| 国产AV国片偷人妻麻豆| 一级内射毛片| av线电影| 国产成人网址| 欧美熟女乱又伦| 亚洲综合婷婷五月天| 性生活久久人妻| 婷婷五月情天| 成人版视频在线观看| 九九99精品视频| 99热超碰在线| 欧美顶级少妇做爰HD| 97人人妻人人艹| 久热久re| 69精品人人人人| 久久五月天合网| 亚洲性爱99在线| 日本五月婷婷| 激情五月婷婷网| 少妇人妻丰满做爰XXX| 97碰碰草| 超碰99在线观看| wwW天天干| 青青福利网| www.com五月天| 免费啪啪亚州视频| 午夜不卡久久精品无码免费| 美女91一起草| 色亚洲中文| 日日插日日干| 大香蕉人妻| 成人婷婷桔色| 91无码高清| 开心五月婷婷| 丁香六月青青草| 丁香五月天激情| 99 这里只有精品| 久狠狠| 亚洲成人免费在线| 丁香五月天婷婷91| 五月天全国最大成人网| 天堂综合久| 久久视频在线视频| 婷婷五月天激情小说| 中文字幕簧片| 色99在线| 91刘玥视频在线观看| www.yw尤物| 伊综合蕉| 婷婷99狠狠躁天天躁| 艹| 极品另类| 综合久久十| 夜夜爽天天| 激情网五月天| 色婷小说| 开心五月深爱五月婷| 久久久香| 久久九九九九| 婷婷丁香亚洲五月天| 97人人操人人爽| 婷婷五月综合免费在线| 丁香六月视频| 99热综合| 五月丁香| 91人人爽狠狠狠| 超碰免费观看| 九热视频这里只有精品| 丁香六月啪啪| 综合亚洲六月婷婷在线| 午夜丁香| 五月天综合激情网| 久碰久| 久久99热精品a片在线观看| 无码激情| 99riAV国产精品视频| 婷婷精品综合| 亚洲第一成人AV| 九九热在视频| 国产这里只有精品| 丁香五月天无码AV| 俺去也五月天婷婷| 五月婷婷丁香| 人人干人人看| 99色综合网| 中文字幕在线免费观看视频| 天天射天天干天插色综合| 婷婷天天婷婷天天澡| 色婷婷亚洲综合天堂| 久久这里只有国产精品视频| 天天激情站| 婷婷五月激情欧美大胆视频| 五月天丁香色色| 啪啪啪啪五月天| 国产成人一区二区三区在线观看 | 97人人干| 五月激情丁香五月| 99免费在线视频| 久热这里有精品视频| 激情五月天婷婷| www.99热最新视频8| 亚洲成人免费电影| 欧美叉叉叉BBB网站| 天天爽成人综合网站| 五月丁香香蕉| 丁香六月婷婷综合麻豆| 狠狠婷婷综合| 五月婷婷开心网| 99ri久久| 内射爽无广熟女亚洲| 欧美丁香六月在线观看视频| 大香蕉色婷婷伊人在线| 79精品视频在线观看,| 97热九九| 久久只有18视频| 26UUU成人网| 天天射影院| 丁香婷婷六月激情综合| 欧美日本高清视频99| 久青操| 五月丁香啪啪网| 婷婷五月天激情小说| 色高清无码视频| 亚洲天堂AV综合网| 九九综合九九| 五月天婷婷久久综合| 五月刺激丁香月综合| www.色婷婷.com| 丁香五月影院| 婷婷字幕在线| 九九AV在线| 色婷婷在线视频久| 9热在线视频| 六月色色| 狠色色狠网| 色综合久久44| 潘金莲AAAAAAAAAA| 日本久久人人| 天天模,夜夜模夜夜爽| 亚洲色区17| 玖玖在线视频| 丁香五月播播| 人人爱国产| 激情婷婷五六月天| 一级性感毛片| 色色丁香| 色婷另类| 久久99久久99精品免观看软件| 啪精品| 极品人妻VIDEOSSS人妻| 碰97久久| 五月综合缴情网| 玖玖色综合| 婷婷五月激情视频网| 色婷婷亚洲婷婷| 五月激情偷拍| 色播五月天天| 色五月婷婷色| 久久九九99桃花视频| 北京熟妇搡BBBB搡BBBB| 欧美精品999| 97丁香五月| 视色网在线播放| 久9无码视频| 亚洲九九99精品视频在线播放| 91超碰人人操| 丁香六月婷婷| 色色网五月激情| 六月综和久久| 婷婷丁香色五月亚洲| 99热久97| 婷婷久久女人| 97大香蕉五月天| 亚洲精品亚洲人成人网| 五月婷色色| 六月丁香五月天| 激情五月婷婷在线区| 亚洲成人在线免费| 色女人久久| 中文字幕+中文在线| 日本色婷婷五月天成人电影| 啪啪啪综合网| 玖玖爱综合网| 色欲九区| 大香蕉久久草| 97色婷婷在线观看| 99爱爱网| 天堂综合久久| 国产精品汇聚精彩第二页 - 高清完整版在线 - 青蛙AV | 狠狠色无码| 五月婷婷六月丁香激情深爱| 色婷婷XXXXX| 丁香婷婷啪啪| 亚洲国产成人在线| 色色爽爽天天| 99九色视频在线观看| 99网址在线看| 日本在线视频www色| 99啪99| 懂色av蜜臀av粉嫩av永陈冠希 | 99热99在线精品| 色玖玖玖| 亚洲成人高清在线| 国产67194| 另类图片天天影视在线观看| 91婷婷在线| 在线99热| 激情综合五月色在线| 777久久综合视频| 啪啪五月天啪啪| 五月天电影网| 激情小说在线视频| 四虎成人精品永久免费AV九九| 色五月婷婷av| 五月丁香影院| 九九九激情网| 婷婷的色色五月天| 亚洲精品国产setv| 激情文学天天| 五月丁香色婷婷综合| 99热费观看| 丁香五月婷婷亚洲色图| 九九这里都是精品| Blackedraw视频一区二区| 婷婷五月丁香国产| www.色9| 狠狠看狠狠| 九九色99| 91色涩| 91九色精品熟女内射| 久久精品一区二区三区四区| 丁香久久九九99| www.色五月.com| 99热在线里有精品| 六月综合在线| 久久99网| 色婷小说| 99亚洲天堂| 五月丁香婷中文字幕| www.99热这里精品| 色五月成人| 草榴成人影片| 日本99视频| 五月丁香另类网| 婷婷色五月开心五月| 99精品网| 99超级碰碰| 丁香五月天婷婷久久| 日本色五月婷婷| 色婷婷久久| 涩 五月 婷婷 狠狠| 免费国产VA国产免费| 丁香五月婷婷激情蜜桃| 久久久18| 五月天激情啪啪| 夜夜夜夜操| 久热一本| 丁香99| 色五月婷婷激情综合网| 婷婷社区五月天| 国产精品人人做人人爽人人添| 五月激情综合性爱| 另类小说婷婷色| www,色综合| 色欲操| 欧美大道不卡| 岛囯综合激情网| 激情四射五月天偷偷看婷婷| 久久久久激情网| 婷婷六月偷拍| 欧美丁香六月激情视频| 日日综合网| 第四色五月婷婷| 激情五月天婷婷视频| 狠狠狠狠狠| 免费啪啪亚州视频| 99热在线只有精品| 九九精品9| 丁香六月AV| 99热最新精品| 久久婷婷资源| 久久婷婷五月免费视频| 玖玖色综合色| 2023天天日夜夜爽| 99久视频| 五月丁香综合啪啪| 五月激情啪啪| 伊人激情啪啪| 丁香五月另类色婷婷麻豆| 日韩婷久| 五月天天爱| 26uuu成人网| 丁香五月综合在线播放 | 日韩成人av在线| 丁香五月欧美色综合| www,99色| 婷婷丁香五月色| 五月婷久草| 亚洲第一精品成人999久久精品| 男人先锋久久| 色婷婷五月网| 伊久大香蕉| 五月丁香六月婷婷亚洲| 99丁香婷婷综合网| 伊人五月天婷婷| 超碰2021| 五月开心激情| 久久天堂婷婷五月| 五月婷婷激情日本| 在线观看av网站| 91九色|疯狂|高潮|对白|| 欧美VA视频| 久久久精品AV| 草草操操| 人人草人人舔| www好屌操| 色图亚洲91| 久色欧美| 91在线视频综合| 欧美在线97| 97人人射| 欧美丁香婷婷天天操| 激情丁香五月婷婷| 九九爱看亚洲| 玖玖综合色区在线观看| 亚洲国产99| 色噜噜夜夜夜综合网| 97人人干| 五月天婷婷在看| 色色综合网。| 久热91精品| 欧美五月丁香啪啪响视频| 成人无码髙潮喷水A片| 亚洲激情色色| 丁香六月婷婷综合啪啪| 中文av网| 99热这里只有精品在线播放| 成人网站av免费网站推荐| 色九月| 深爱丁香激情| 91久久久久久久久久| 九月丁香| 欧美婷婷五月天综合| 91人人爽人人操| 67194成I人在线观看线路1| 亚洲激情淫网| 天堂va久久久噜噜噜久久Va| 玖玖爱资源站| 青青草a在线| 色亭亭九月| 五月丁香婷婷基地| 六月天六月婷| 九九99九九99偷拍视频免费看| 99国产精品白浆在线观看免费| 五月激激激情综合网| 久操婷婷| 天色色综合网| AV电影在线播放| 婷婷五月丁香综合激情| 久久五月天婷婷视频| 九九综合五月欧美| 99精品自拍视频| 91国产精品视频播放| 9色在线| 天天做天天摸| wwW天天干| 九九99在线| 无码人妻少妇色欲AV一区二区| 天天日天天摸| 91视屏在线观看com.wwwvv| 九九色天堂| 国产精品久久久爽爽爽麻豆色哟哟| 欧美影院| 99色在线观看视频| 五月色情婷婷| 婷婷色操| 潮汕成人AV片在线| 亚洲中文字幕在线观看| 欧美视频五区| 五月天色视频| 99re思思精品视频在线观看| 狠狠草网| 香蕉久久五月| 成人国产欧美大片一区| 亚洲综合婷婷| 天天天天天日| 天天成人丁香美女AV| 亚洲色色色色色| 久久99网址| 亚洲精品色| 天天婷婷操| 五月婷亚洲精品AV天堂| 五月天激情图片网| www狠狠| 丁香六月婷婷综合色| 超碰在线9| 久久婷婷资源| 91VIP在线观看| 99热在线观看成人| 免费看欧美成人A片无码| 丁香六月久久| 天堂综合久久 | 五月婷婷AV| 色色丁香五月婷婷| 色狠狠999综合网| 丁香综合网| 久久码久久无清| 91操女| 国产黄色在线| 九九99九九精品免费| 97色婷婷| 99久久久| 欧美精品99久久久| 日本婷婷| 色色网站| 国产综合色婷婷精品久久| 六九色综合婷婷五月天| 美女天天爽| 综合一本道| 五月丁香做爱视频| 国内精品玖玖| 五月激情网站| 玖玖热视频| 夜夜夜夜夜操| 日韩野外 无套| WWW色五月| 四川BBB搡BBB搡多人乱亂| 国产人妻人伦精品一区二区| 日本99热| 午夜69成人做爰视频| 97干在线| 大香伊人久色| AV操一操| 六月婷婷网| 91超碰在线播放| www.超碰在线| 婷五月丁香俺| 丁香五月宝贝激情网| 开心五月婷婷六月丁香| 五月综亚洲| 婷婷五月六月丁香综合| 天天做天天爱天天做| 五月婷婷中文字幕AV| 天天干,夜夜爽| 超碰色综合| 久久免片| A片女女女女女女BBBB| 成人婷婷色综合| 婷婷五月天毛片| 五月婷婷啪啪啪| 婷婷大香蕉| 亭亭色天香| 五月丁香六月情亚洲| 噜噜网免费视频| 99在线观看视频| 97香蕉碰碰人妻国产欧美| 欧美激情性做爰免费视频| 婷婷中文字幕版| 五月婷婷婷| 婷婷综合激情| 欧美精品中文字幕亚洲专区| 五月丁香亭亭A片| 婷婷久久性爱| 性小说五月天| 婷婷五月天激情网站| 991精品在线视频| 欧美色综合天天久久综合精品| 91fuliwang| 97久久超碰| 天天天天做夜夜夜夜做| 91热久久| 日本韩国视频在线观看社区免费的9| 激情 婷婷| 成人视频九九| 色五月天成人| 来吧亚洲综合网| 色拍九九九| 激情六| 婷婷草| 开心五月天激情网| www. 五月. com| 99热成人精品| 人人综合久| 亚洲AV日韩在线观看| 99热最新网址| 99久在线精品99re8| 疯狂做受XXXX高潮A片| 激情 婷婷| 五月婷婷六月爱| 五月丁香六月婷| 日美三级| 插插插色综合网| 超碰在线中文字幕| 99热综合在线观看| 五月天伊人av| 一本久道综合色婷婷五月| 91 久热| 五月婷婷六月丁香激情综合网| 99狠狠| 91丨九色丨老熟女激情| 日本天天综合| 九九精品热| 一本色道久久88加勒比—| 久久久精久人妻| 婷婷色色网| 午夜色婷婷| 在线观看婷婷5月| 丁香五月 性爱| 婷婷六月中文字幕| 五月丁香六月婷婷啪啪| 26uuu丁香婷婷五月| 欧美3AaAa大片| 777精品久无码人妻蜜桃| 噜噜狠狠| 99爱这里只有精品免费视频| 色婷婷AV在线| 天天爱天天操| 天堂亚洲 在线| 丁香 婷婷 亚洲 熟女| 99色爱| 五月激情丁香五月宗合| 久99| 婷婷97狠狠干| 99热在线观看免费精品| 99久久久免费| 久久综合爱| 色琪琪一综合久久激情五月视频| 激情www| 亚洲国产va| 超级碰碰97在线| 内射丰满人妻| 日本乱子人伦在线视频| 丁香婷婷久久激情| 欧美S码亚洲码精品M码| 狠狠五月天婷婷| 国产又爽又猛又粗的视频A片| 开心深爱五月天| 六月激情网| 热的国产,热的综合,热的有码 | 婷色成人| 亚洲愉拍99热成人精品| 青青草护士中出内射-欧美电影在线天堂新版 | ji'qing'luan'ren'lun| 无码免费人妻A片AAA毛片西瓜| 亚洲婷婷丁香五月天激情小说| 亚洲激情综合| AⅤ色区| 四色五月婷婷| 欧美黄色韩日网| 91婷婷伊人牛牛| 婷婷五月天综合网| 99色激| 九九热免费视频| 五月天影院婷婷在线观看| 天天激情站| 婷婷五月天高清无码| 高清国产一级婬片a免费| 亚洲午夜电影| 看婷婷五月天网| 国产乱子轮XXX农村| 亚洲五月天婷婷在线| 中文字幕亚洲-区久久99婷婷| 国产精品美女| 99激情网| 99久操视频| 五月天色不卡| 亚州精品色情无码A片| 欧美经典片免费观看大全| 丁香网五月网| 色综合狠狠色| 天天天干夜夜夜操| 国产高清RV综合aVa| 91天堂网综合| 亚洲精品99| 日本成人小说婷婷六月| 91在线日本| 婷婷五月天影院| 夜夜骑福利资源| 亚洲色图五月丁香| 六月天婷婷| 久热网在线视频| 99九九综合久久九九| 任你爽视频| 婷婷丁香五月亚洲综合网在线视频观看| 九伊人网| 五月婷婷激情网| 五月婷婷六月开心| 热99这里只是精品| 99久久综合狠狠综合久久| 91人操人人人操人| 涩涩涩婷婷| 欧美久久网| 疯狂做受XXXX高潮A片| 五月婷视频| 色色色在线播放| 密乳Va| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 激情六月婷婷| 亚洲色婷婷99一9|| 99热欧美偷拍| 丁香六月丁香婷婷激情| 91seav| 综合五月天婷婷色| 色性综合| 久久综合网桃花| 三人荫蒂添的好舒服A片| 久久99大全| 国产精品色一哟哟| 九九色婷婷| 一区二区aV电影免费看| 日日日日日| 精品久热69| 开心五月婷婷99| 97色色色色色色色| 久一网站| 大大香蕉综合在线| 99在线精品视频| 久久精典| 五月天婷婷在线播放| 678五月丁香亚洲综合| 4399在线日本A片| 国产黄色大片| 最近中文字幕2019视频1| 99热老网站| 99热只有| 九九热精品6| 99秘 在线| 亚洲激情免费久久| 色碰碰视频| 五月婷久久久| 超碰色人妾| 久9久视频精品| 少妇做爰免费视看片| 色五月婷婷久久| 中文资源在线a| 五月花免费视频| 欧美草久久五月天91| 伊人综合网4| 国产亚洲精品人人| 91狠狠综合久久| 久9免费视频| 婷婷九九视频| 丁香五月综合无码趴趴| 亚洲不卡123| 91制片厂久久久国产电影| 亚洲乱码日产精品BD| 97碰在线视频| 99热成人| 婷婷久久五月| 成人av免费观看| 婷婷婷婷色| 91碰碰碰| 国产成人亚洲综合A∨婷婷| 色色色色色色色色五月先| 香蕉操亚洲| 91黄址| 丁香婷婷久久| 丁香五月影院| 99热手机在线精品| 开心婷婷五月| 五月天激情小说| 天天干,夜夜爽| 成人做爰高潮A片免费视频 | 人妻AV在线| 丁香婷婷五月| 五月丁香婷婷综合| 精品国产乱码久久久久夜深人妻| 香蕉久久国产AV一区二区| 高清资源站日A美A欧亚…| 天堂婷婷综合| 久久性爱激情| 婷婷七月丁香色色| 97在线/亚洲| 一起草AV| 天天摸天天舔天天爽| 丁香五月六月婷婷自拍| 天天干天天操天天上| 亚洲狠狠狠| 久久99热免费最新版| 婷婷久久五月丁香| 99视频久久| 亚洲成av人影院| 任我干视频在线观看| 国产第99页| 丁香五月综合婷婷| 热99精品视频观看| 九色色| 国产这里只有精品| 亚洲色综合| 婷婷丁香五月综合| 天堂美国久久| 99玖玖在线视频| 成人操呦av| 国产精品A片| 九九青草热| www.久久爱| 超碰无码老师| 国产 亚洲 在线| 欧美五月丁香在线观看| 可以免费看AV网站| 久久3p| 精品一二三区久久AAA片| 九九婷婷热| 久久99网址| 天天综合干| 狠狠色五月天| 五月天婷婷色| 91日综合欧美| 精品国产va久久久久| 激情五月婷婷丁香综合网| 亚洲在线操| 中字幕视频在线永久在线观看免费| 熟妇国产| 久久丁香五月综合六月激情红杏视频 | 操b视频在线观看一区二区| 国产成人网址| 久色资源网| 亚洲五月天婷婷| 免费在线观看av网站| 色色丁香婷婷| 婷婷色成人| 操一操干一干| 久久婷婷五月综合色天| 欧美五月丁香在线| 天天日天天爽| 国产成人AV| 99ri精品视频在线观看| 色大综合| 丁香五月天啪啪| 久婷视频| 欧美激情五月天在线观看| 五月天婷婷AV| 激情五月天婷婷播播久久综合91| 伊人激情综合网| 99性爱视频网站| 二色av| 激情综合在线观看| 亚洲色婷婷视频| 婷婷久久久| 丁香色综合| 天天草比天天爽| 日本操天堂| 26uuu青青| 色九亚洲| 99综合99| 色婷婷狠狠色| 色五月婷婷五月天| 五月丁香激情婷婷| 婷婷色五月天在线| 亚洲精品无AMM毛片| 青青热视频| 亚洲成人高清在线| 中文资源在线a| 久久色9| 97丁香五月| 成人在线观看精品| 色欲Av五月天| 91九九| 激情AV在线| 亚洲婷婷欧美婷婷| 九九草草逼| 国产一级婬片毛片| 99噜噜噜在线播放| 狠狠操狠狠爱| 九九aV| 大香蕉九操| 亚州操操| 先锋资源婷婷| 五月婷婷六月情| www.五月婷| 婷婷综合精品视频97| 五月成人丁香av91| 五月天久久成人| 高清一区二区三区日本久| 九九蜜臀精品| 热九九精品| 国产色丁香| 91Chinese在线| 欧洲永久精品| 日本三级韩三级99久久| 亚洲区,视频区,视频区免费| 色婷婷香蕉| 99久久婷婷国产综合| 一本久道综合色婷婷五月| 超碰免费成人| 91九色视频| 97超碰综合| 这里只有精品视频在线| 色五月婷婷久久爱| 亚洲V国产V欧美V久久久久久| 中文字幕日韩无码制服诱或|