亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

STM32寄存器操作實(shí)戰(zhàn):從GPIO到DMA的底層開(kāi)發(fā)指南

STM32寄存器操作實(shí)戰(zhàn):從GPIO到DMA的底層開(kāi)發(fā)指南 1. 為什么還要折騰寄存器1.1 從一個(gè)真實(shí)的困惑說(shuō)起剛接觸STM32那會(huì)兒我和大多數(shù)人一樣從庫(kù)函數(shù)入手。新建工程、調(diào)用HAL_GPIO_Init()、編譯下載LED亮了覺(jué)得單片機(jī)不過(guò)如此。直到有一次做一個(gè)WS2812燈帶的驅(qū)動(dòng)需要精確到零點(diǎn)幾微秒的時(shí)序控制庫(kù)函數(shù)那層層封裝帶來(lái)的延遲讓我怎么調(diào)都調(diào)不準(zhǔn)。翻遍論壇有人甩了一句“直接操作寄存器”我盯著參考手冊(cè)里那一長(zhǎng)串GPIOB-BSRR、TIM2-CCR1完全不知道從哪下手。后來(lái)花了大概兩周時(shí)間把GPIO、TIM、USART、SPI、I2C這幾個(gè)常用外設(shè)的寄存器從頭到尾啃了一遍才發(fā)現(xiàn)寄存器操作根本沒(méi)有想象中那么可怕。它就像學(xué)開(kāi)車(chē)庫(kù)函數(shù)是自動(dòng)擋踩油門(mén)就走寄存器是手動(dòng)擋你得知道離合、檔位、轉(zhuǎn)速之間的關(guān)系但一旦掌握了什么路況你都能應(yīng)付。這份手冊(cè)就是把我踩過(guò)的坑、總結(jié)的方法用最直白的話講清楚。它適合已經(jīng)會(huì)用庫(kù)函數(shù)但想深入理解底層的人也適合剛?cè)腴T(mén)想少走彎路的初學(xué)者。核心目標(biāo)只有一個(gè)讓你看到寄存器名字時(shí)不再發(fā)怵能對(duì)著參考手冊(cè)直接寫(xiě)出可運(yùn)行的代碼。1.2 寄存器操作到底在操作什么很多人被“寄存器”三個(gè)字嚇住其實(shí)它的本質(zhì)極其簡(jiǎn)單。STM32內(nèi)部有成千上萬(wàn)個(gè)存儲(chǔ)單元每個(gè)單元有固定的地址。所謂寄存器就是這些地址被賦予了特定功能的存儲(chǔ)單元。你往某個(gè)地址寫(xiě)一個(gè)值硬件就根據(jù)這個(gè)值改變引腳電平、啟動(dòng)定時(shí)器、發(fā)送數(shù)據(jù)。舉個(gè)例子GPIOB端口的輸出數(shù)據(jù)寄存器GPIOB_ODR它的地址是0x40010C0C。你往這個(gè)地址寫(xiě)0x00000001GPIOB的第0號(hào)引腳就輸出高電平。就這么直接。那為什么庫(kù)函數(shù)要封裝那么多層因?yàn)橹苯硬僮鞯刂啡菀壮鲥e(cuò)而且不同型號(hào)的STM32地址可能不一樣。庫(kù)函數(shù)用結(jié)構(gòu)體指針把地址包裝起來(lái)用GPIOB-ODR 0x01代替*(volatile uint32_t*)0x40010C0C 0x01既好記又不容易寫(xiě)錯(cuò)。但封裝帶來(lái)的代價(jià)就是執(zhí)行效率降低和代碼體積增大。我個(gè)人的經(jīng)驗(yàn)是常規(guī)邏輯控制用庫(kù)函數(shù)對(duì)時(shí)序敏感或需要極致優(yōu)化的場(chǎng)景用寄存器。兩者不是對(duì)立的在同一個(gè)工程里混用完全沒(méi)問(wèn)題。1.3 這份手冊(cè)的閱讀方式我不會(huì)按參考手冊(cè)的順序逐個(gè)寄存器講那樣太枯燥。我會(huì)按“實(shí)際使用場(chǎng)景”來(lái)組織點(diǎn)亮一個(gè)LED需要操作哪些寄存器、配置一個(gè)定時(shí)器中斷需要幾步、串口發(fā)送一個(gè)字節(jié)背后發(fā)生了什么。每個(gè)場(chǎng)景都從需求出發(fā)先講清楚要做什么再講需要配置哪些寄存器最后給出可以直接復(fù)制運(yùn)行的代碼。閱讀時(shí)建議手邊開(kāi)著對(duì)應(yīng)型號(hào)的參考手冊(cè)遇到不認(rèn)識(shí)的位域隨時(shí)查閱。我寫(xiě)的每個(gè)寄存器操作都會(huì)標(biāo)注它在參考手冊(cè)中的章節(jié)號(hào)方便你對(duì)照。另外所有代碼基于STM32F103系列但原理通用換到F4、H7系列只是寄存器地址和個(gè)別位定義不同思路完全一致。注意操作寄存器時(shí)一定要用volatile關(guān)鍵字修飾指針?lè)駝t編譯器優(yōu)化可能把看似“重復(fù)”的寫(xiě)操作優(yōu)化掉導(dǎo)致硬件行為異常。這是新手最容易忽略的坑。2. 動(dòng)手前的必修課地址映射與位操作2.1 存儲(chǔ)器映射找到寄存器的門(mén)牌號(hào)STM32的4GB地址空間被劃分成幾個(gè)大區(qū)域其中外設(shè)寄存器的映射區(qū)從0x40000000開(kāi)始。不同外設(shè)掛在不同總線上地址范圍也不同。比如GPIO掛在APB2總線上起始地址是0x40010000TIM2掛在APB1總線上起始地址是0x40000000。每個(gè)外設(shè)內(nèi)部寄存器按功能順序排列每個(gè)寄存器占4字節(jié)。以GPIOB為例它的寄存器地址如下表所示寄存器名稱偏移地址絕對(duì)地址功能CRL0x000x40010C00端口配置低寄存器CRH0x040x40010C04端口配置高寄存器IDR0x080x40010C08端口輸入數(shù)據(jù)寄存器ODR0x0C0x40010C0C端口輸出數(shù)據(jù)寄存器BSRR0x100x40010C10端口位設(shè)置/清除寄存器BRR0x140x40010C14端口位清除寄存器LCKR0x180x40010C18端口配置鎖定寄存器知道這張表你就能直接操作GPIOB的任何寄存器。比如讓PB0輸出高電平寫(xiě)*(volatile uint32_t*)0x40010C0C | 0x01;即可。但每次都算地址太麻煩所以標(biāo)準(zhǔn)做法是用結(jié)構(gòu)體把外設(shè)的所有寄存器組織起來(lái)。在CMSIS頭文件里GPIO的結(jié)構(gòu)體定義大致是這樣的typedef struct { volatile uint32_t CRL; volatile uint32_t CRH; volatile uint32_t IDR; volatile uint32_t ODR; volatile uint32_t BSRR; volatile uint32_t BRR; volatile uint32_t LCKR; } GPIO_TypeDef;然后定義宏#define GPIOB ((GPIO_TypeDef *)0x40010C00)這樣就能用GPIOB-ODR來(lái)訪問(wèn)。結(jié)構(gòu)體成員的偏移量正好對(duì)應(yīng)寄存器的偏移地址編譯器會(huì)自動(dòng)計(jì)算絕對(duì)地址。這種寫(xiě)法既直觀又高效編譯后生成的指令和直接寫(xiě)地址完全一樣。2.2 位操作精準(zhǔn)控制每一個(gè)比特寄存器操作的核心是位操作。一個(gè)32位寄存器每一位可能控制不同的功能。你經(jīng)常需要只修改某幾位而不影響其他位這時(shí)候就要用到C語(yǔ)言的位運(yùn)算。最常用的三個(gè)操作置位REG | (1 n)把第n位置1其他位不變。清零REG ~(1 n)把第n位清0其他位不變。取反REG ^ (1 n)把第n位翻轉(zhuǎn)。如果要同時(shí)操作多位比如把第4到第7位設(shè)置為1010可以這樣寫(xiě)REG ~(0x0F 4); // 先清零這4位 REG | (0x0A 4); // 再寫(xiě)入新值STM32的GPIO還提供了BSRR寄存器可以原子性地置位或清零。寫(xiě)B(tài)SRR的低16位對(duì)應(yīng)引腳置1寫(xiě)高16位對(duì)應(yīng)引腳清0。比如同時(shí)讓PB0置1、PB1清0GPIOB-BSRR (1 0) | (1 (16 1));這種操作不需要讀-改-寫(xiě)一條指令完成在中斷環(huán)境下特別安全。實(shí)操心得我習(xí)慣在頭文件里定義一組宏比如#define SET_BIT(REG, BIT) ((REG) | (BIT))、#define CLEAR_BIT(REG, BIT) ((REG) ~(BIT))寫(xiě)代碼時(shí)直接調(diào)用既簡(jiǎn)潔又不容易出錯(cuò)。2.3 時(shí)鐘使能打開(kāi)外設(shè)的電源開(kāi)關(guān)STM32為了省電每個(gè)外設(shè)的時(shí)鐘默認(rèn)是關(guān)閉的。你配置了半天寄存器卻沒(méi)反應(yīng)十有八九是忘了開(kāi)時(shí)鐘。時(shí)鐘使能寄存器在RCC模塊里APB1和APB2各有一個(gè)。以GPIOB為例它掛在APB2總線上對(duì)應(yīng)的時(shí)鐘使能位是RCC_APB2ENR的第3位。開(kāi)啟時(shí)鐘的代碼是RCC-APB2ENR | (1 3); // 使能GPIOB時(shí)鐘APB1上的外設(shè)如TIM2、USART2則操作RCC_APB1ENR。我建議把常用外設(shè)的時(shí)鐘使能位做成宏定義比如#define RCC_APB2ENR_GPIOBEN (1 3) #define RCC_APB1ENR_TIM2EN (1 0)這樣代碼可讀性會(huì)好很多。另外注意開(kāi)啟時(shí)鐘后最好加幾個(gè)空指令或短暫延時(shí)等時(shí)鐘穩(wěn)定后再配置外設(shè)雖然大多數(shù)情況下不需要但在低功耗場(chǎng)景下這個(gè)細(xì)節(jié)很重要。3. GPIO寄存器實(shí)戰(zhàn)從點(diǎn)亮LED到按鍵消抖3.1 輸出模式配置CRL和CRH的位域解析GPIO的配置寄存器分CRL和CRH兩個(gè)CRL管第0到7引腳CRH管第8到15引腳。每個(gè)引腳占4個(gè)位低2位是MODE高2位是CNF。MODE位定義輸出速度00輸入模式01輸出模式最大10MHz10輸出模式最大2MHz11輸出模式最大50MHzCNF位在輸出模式下的定義00通用推挽輸出01通用開(kāi)漏輸出10復(fù)用推挽輸出11復(fù)用開(kāi)漏輸出在輸入模式下的定義00模擬輸入01浮空輸入10上拉/下拉輸入11保留假設(shè)要讓PB0作為推挽輸出速度50MHz操作如下GPIOB-CRL ~(0x0F 0); // 清零PB0的配置位 GPIOB-CRL | (0x03 0); // MODE11, CNF00如果PB8也要配置成同樣模式因?yàn)樗鼘儆贑RH管操作變成GPIOB-CRH ~(0x0F 0); // 注意PB8在CRH中占第0到3位 GPIOB-CRH | (0x03 0);這里有個(gè)容易搞混的地方CRH中第0到3位對(duì)應(yīng)的是第8號(hào)引腳不是第0號(hào)。計(jì)算偏移量時(shí)要用(pin - 8) * 4。3.2 輸出電平控制ODR與BSRR的選擇配置好模式后控制電平有兩種方式。ODR寄存器直接寫(xiě)整個(gè)端口的值比如GPIOB-ODR 0x0001會(huì)把PB0置1、其他引腳清0。這種方式適合一次性設(shè)置多個(gè)引腳但在中斷里操作有風(fēng)險(xiǎn)因?yàn)樽x-改-寫(xiě)不是原子操作。BSRR寄存器則安全得多。低16位寫(xiě)1置位高16位寫(xiě)1清零寫(xiě)0無(wú)效。比如GPIOB-BSRR (1 0); // PB0輸出高 GPIOB-BSRR (1 (16 0)); // PB0輸出低我實(shí)測(cè)過(guò)用BSRR翻轉(zhuǎn)引腳在72MHz主頻下能產(chǎn)生接近18MHz的方波而用ODR加異或操作只能到8MHz左右。所以對(duì)速度有要求時(shí)BSRR是首選。3.3 輸入讀取與按鍵消抖的寄存器實(shí)現(xiàn)讀取引腳電平用IDR寄存器。比如判斷PB0是否為低電平if ((GPIOB-IDR (1 0)) 0) { // 按鍵按下 }但機(jī)械按鍵有抖動(dòng)直接讀會(huì)誤判。硬件消抖加電容當(dāng)然好但大多數(shù)時(shí)候我們用軟件消抖。常見(jiàn)的做法是延時(shí)10ms再讀一次但這樣會(huì)阻塞CPU。我的做法是用定時(shí)器中斷每隔5ms采樣一次連續(xù)3次相同才確認(rèn)狀態(tài)變化。用寄存器實(shí)現(xiàn)的狀態(tài)機(jī)大概是這樣typedef struct { uint8_t current; uint8_t count; uint8_t stable; } KeyState; void KeyScan(KeyState *key, uint8_t pinState) { if (pinState ! key-current) { key-current pinState; key-count 0; } else { if (key-count 3) { key-count; } else { key-stable key-current; } } }這個(gè)邏輯放在定時(shí)器中斷里主循環(huán)只讀key-stable完全不阻塞。實(shí)測(cè)下來(lái)比HAL_Delay(10)那種寫(xiě)法響應(yīng)快得多而且不浪費(fèi)CPU時(shí)間。注意事項(xiàng)配置輸入引腳時(shí)如果外部沒(méi)有上拉電阻一定要把CNF設(shè)成上拉輸入CNF10否則引腳浮空會(huì)導(dǎo)致讀數(shù)隨機(jī)跳動(dòng)。我見(jiàn)過(guò)太多人在這里卡住以為是代碼問(wèn)題其實(shí)是硬件配置沒(méi)做對(duì)。4. 定時(shí)器寄存器精確計(jì)時(shí)的核心4.1 時(shí)基單元PSC、ARR與CNT的配合定時(shí)器的核心是三個(gè)寄存器預(yù)分頻器PSC、自動(dòng)重裝載寄存器ARR、計(jì)數(shù)器CNT。它們的關(guān)系可以用一個(gè)公式概括定時(shí)器溢出頻率 時(shí)鐘源頻率 / ((PSC 1) * (ARR 1))假設(shè)TIM2的時(shí)鐘是72MHz我想要1kHz的中斷頻率也就是每1ms觸發(fā)一次。計(jì)算過(guò)程先定PSC。為了獲得較好的分辨率PSC不要太大。取PSC71則分頻后頻率為72MHz / 72 1MHz。再算ARR。1MHz / 1kHz 1000所以ARR999。配置代碼RCC-APB1ENR | (1 0); // 使能TIM2時(shí)鐘 TIM2-PSC 71; // 預(yù)分頻值 TIM2-ARR 999; // 自動(dòng)重裝載值 TIM2-CNT 0; // 清零計(jì)數(shù)器 TIM2-CR1 | (1 0); // 使能定時(shí)器這里有個(gè)細(xì)節(jié)PSC和ARR都是16位寄存器最大值65535。如果需要的分頻比超過(guò)這個(gè)范圍可以級(jí)聯(lián)兩個(gè)定時(shí)器或者用主從模式。我在做超聲波測(cè)距時(shí)遇到過(guò)這個(gè)問(wèn)題后來(lái)用TIM3給TIM2提供時(shí)鐘輕松解決了大分頻比的需求。4.2 中斷配置DIER與NVIC的聯(lián)動(dòng)定時(shí)器溢出后要產(chǎn)生中斷需要兩步使能定時(shí)器的更新中斷再在NVIC中使能對(duì)應(yīng)的中斷通道。TIM2-DIER | (1 0); // 使能更新中斷 NVIC_EnableIRQ(TIM2_IRQn); // 使能NVIC通道 NVIC_SetPriority(TIM2_IRQn, 1); // 設(shè)置優(yōu)先級(jí)然后在中斷服務(wù)函數(shù)里清除標(biāo)志位void TIM2_IRQHandler(void) { if (TIM2-SR (1 0)) { TIM2-SR ~(1 0); // 清除更新標(biāo)志 // 用戶代碼 } }注意SR寄存器是“讀后自動(dòng)清除”還是“寫(xiě)0清除”不同系列可能不同。F1系列是寫(xiě)0清除F4系列是讀后自動(dòng)清除。這個(gè)差異坑過(guò)我一次在F4上寫(xiě)了清除代碼反而導(dǎo)致中斷丟失后來(lái)查手冊(cè)才發(fā)現(xiàn)。4.3 PWM輸出CCR與CCMR的配置邏輯PWM是定時(shí)器最常用的功能之一。以TIM3的通道1對(duì)應(yīng)PA6為例配置步驟配置PA6為復(fù)用推挽輸出CNF10MODE11。使能TIM3時(shí)鐘和GPIOA時(shí)鐘。設(shè)置PSC和ARR決定PWM頻率。配置通道1為PWM模式1TIM3-CCMR1 ~(0x7 4); // 清除OC1M位 TIM3-CCMR1 | (0x6 4); // PWM模式1 TIM3-CCMR1 | (1 3); // 使能預(yù)裝載 TIM3-CCER | (1 0); // 使能通道1輸出 TIM3-CCR1 500; // 占空比50%ARR999時(shí) TIM3-CR1 | (1 7); // 使能自動(dòng)重裝載預(yù)裝載 TIM3-CR1 | (1 0); // 啟動(dòng)定時(shí)器占空比的計(jì)算公式是CCR / (ARR 1)。ARR999時(shí)CCR500對(duì)應(yīng)50%CCR250對(duì)應(yīng)25%。改變CCR就能實(shí)時(shí)調(diào)整占空比不需要停止定時(shí)器。實(shí)操心得做電機(jī)調(diào)速時(shí)PWM頻率一般選15kHz到20kHz超出人耳聽(tīng)覺(jué)范圍電機(jī)不會(huì)發(fā)出嘯叫。我試過(guò)8kHz電機(jī)聲音很明顯調(diào)到16kHz后就安靜了。另外死區(qū)時(shí)間用BDTR寄存器配置做H橋驅(qū)動(dòng)時(shí)必不可少否則上下管直通會(huì)燒管子。5. 串口通信寄存器從發(fā)送一個(gè)字節(jié)到DMA搬運(yùn)5.1 波特率計(jì)算BRR寄存器的分頻值USART的波特率由BRR寄存器決定。計(jì)算公式是波特率 fCK / (16 * USARTDIV)其中USARTDIV是一個(gè)定點(diǎn)數(shù)整數(shù)部分占12位小數(shù)部分占4位。假設(shè)系統(tǒng)時(shí)鐘72MHz要得到115200波特率USARTDIV 72000000 / (16 * 115200) 39.0625整數(shù)部分39小數(shù)部分0.0625 * 16 1所以BRR (39 4) | 1 0x271。USART1-BRR 0x271;實(shí)際寫(xiě)代碼時(shí)不用手算用宏#define BRR_VALUE(fCK, baud) ((fCK baud/2) / baud)可以自動(dòng)計(jì)算。但理解這個(gè)公式很重要因?yàn)橛袝r(shí)候你需要非標(biāo)準(zhǔn)波特率比如某些傳感器用9600但時(shí)鐘不是標(biāo)準(zhǔn)值就得手動(dòng)調(diào)整。5.2 發(fā)送與接收SR、DR的握手流程發(fā)送一個(gè)字節(jié)的流程等待TXE標(biāo)志置位發(fā)送數(shù)據(jù)寄存器空。寫(xiě)DR寄存器。等待TC標(biāo)志置位發(fā)送完成。while (!(USART1-SR (1 7))); // 等待TXE USART1-DR data; while (!(USART1-SR (1 6))); // 等待TC接收則更復(fù)雜一些因?yàn)橐幚砀鞣N錯(cuò)誤標(biāo)志?;玖鞒痰却齊XNE標(biāo)志置位。讀DR寄存器。檢查ORE、NE、FE、PE標(biāo)志有錯(cuò)誤則處理。if (USART1-SR (1 5)) { // RXNE uint8_t data USART1-DR; if (USART1-SR (1 3)) { // ORE溢出錯(cuò)誤 // 處理溢出 } }注意讀SR和讀DR的順序有講究。先讀SR再讀DR可以清除某些錯(cuò)誤標(biāo)志反過(guò)來(lái)則不行。這個(gè)細(xì)節(jié)在參考手冊(cè)里有說(shuō)明但很容易被忽略。5.3 中斷與DMA解放CPU的兩種方式輪詢方式發(fā)送大量數(shù)據(jù)會(huì)占滿CPU。用中斷可以緩解但每個(gè)字節(jié)一次中斷115200波特率下每秒上萬(wàn)次中斷CPU還是吃不消。DMA才是終極方案。配置USART1的TX使用DMA1通道4RCC-AHBENR | (1 0); // 使能DMA1時(shí)鐘 DMA1_Channel4-CPAR (uint32_t)USART1-DR; DMA1_Channel4-CMAR (uint32_t)buffer; DMA1_Channel4-CNDTR length; DMA1_Channel4-CCR | (1 4); // 從存儲(chǔ)器讀 DMA1_Channel4-CCR | (1 7); // 存儲(chǔ)器地址增量 DMA1_Channel4-CCR | (1 0); // 使能通道 USART1-CR3 | (1 7); // 使能USART DMA發(fā)送配置完成后往buffer里填數(shù)據(jù)DMA自動(dòng)搬運(yùn)CPU完全不用管。我做過(guò)測(cè)試用DMA發(fā)送1KB數(shù)據(jù)CPU占用率不到1%而輪詢方式接近100%。常見(jiàn)問(wèn)題DMA傳輸完成后需要清除標(biāo)志位并重新配置CNDTR才能開(kāi)始下一次傳輸。我習(xí)慣在DMA傳輸完成中斷里做這件事形成雙緩沖機(jī)制實(shí)現(xiàn)連續(xù)不間斷的數(shù)據(jù)流。6. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄6.1 寄存器操作失效的五大原因現(xiàn)象可能原因排查方法配置后無(wú)反應(yīng)外設(shè)時(shí)鐘未使能檢查RCC相關(guān)使能位引腳電平不變GPIO模式配置錯(cuò)誤讀CRL/CRH確認(rèn)位域中斷不觸發(fā)NVIC未使能或優(yōu)先級(jí)錯(cuò)誤檢查NVIC_ISER和IPR定時(shí)器不計(jì)數(shù)CEN位未置1讀CR1確認(rèn)bit0串口無(wú)輸出波特率計(jì)算錯(cuò)誤用示波器測(cè)實(shí)際波特率我遇到最多的是第一個(gè)。有一次調(diào)試SPI折騰了兩個(gè)小時(shí)最后發(fā)現(xiàn)是SPI1的時(shí)鐘沒(méi)開(kāi)。從那以后我養(yǎng)成了一個(gè)習(xí)慣每配置一個(gè)外設(shè)第一件事就是開(kāi)時(shí)鐘并且寫(xiě)注釋標(biāo)記。6.2 讀-改-寫(xiě)陷阱與原子操作前面提過(guò)REG | (1 n)這種操作在中斷環(huán)境下有風(fēng)險(xiǎn)。假設(shè)主循環(huán)正在執(zhí)行GPIOB-ODR | 0x01剛讀完ODR中斷來(lái)了中斷里修改了ODR的bit1返回后主循環(huán)寫(xiě)回舊值bit1的修改就丟了。解決方案有三個(gè)用BSRR/BRR代替ODR硬件保證原子性。在操作前關(guān)中斷操作后開(kāi)中斷。用位帶操作Bit-Banding把每個(gè)位映射到獨(dú)立地址讀寫(xiě)都是原子的。位帶操作是Cortex-M3/M4的特色功能把外設(shè)區(qū)的每個(gè)位映射到別名區(qū)的一個(gè)32位字。比如GPIOB_ODR的bit0別名地址是0x42000000 (0x40010C0C - 0x40000000) * 32 0 * 4。寫(xiě)這個(gè)地址就等于原子性地操作bit0。雖然計(jì)算復(fù)雜但可以用宏封裝#define BITBAND(addr, bit) ((volatile uint32_t*)(0x42000000 ((addr - 0x40000000) * 32) (bit * 4))) #define GPIOB_ODR_BIT0 BITBAND(0x40010C0C, 0)然后*GPIOB_ODR_BIT0 1;就是原子置位。這個(gè)技巧在實(shí)時(shí)性要求高的場(chǎng)合特別有用。6.3 寄存器調(diào)試的實(shí)用技巧調(diào)試寄存器問(wèn)題時(shí)我常用的手段有這幾個(gè)在線調(diào)試看寄存器窗口Keil和IAR都有外設(shè)寄存器查看功能可以實(shí)時(shí)看到每個(gè)位的值。比打印printf快得多。用內(nèi)存窗口直接改寄存器調(diào)試時(shí)暫停程序在內(nèi)存窗口找到寄存器地址直接修改值觀察硬件反應(yīng)。這個(gè)方法用來(lái)驗(yàn)證配置是否正確特別有效。示波器/邏輯分析儀懷疑時(shí)序問(wèn)題時(shí)示波器是終極武器。我調(diào)WS2812時(shí)就是靠邏輯分析儀抓波形發(fā)現(xiàn)高電平時(shí)間差了0.3微秒調(diào)整NOP數(shù)量后解決。二分法定位如果一段配置代碼不工作把它拆成兩半分別測(cè)試逐步縮小范圍。比從頭讀代碼快得多。避坑技巧修改寄存器時(shí)盡量用“讀-改-寫(xiě)”的宏但要注意編譯器優(yōu)化。我習(xí)慣在關(guān)鍵操作前后加__DSB()和__ISB()屏障指令確保指令順序執(zhí)行。雖然大多數(shù)時(shí)候不需要但在操作時(shí)鐘、電源等關(guān)鍵寄存器時(shí)加上更保險(xiǎn)。7. 從寄存器到庫(kù)函數(shù)的自由切換7.1 什么時(shí)候該用寄存器不是所有場(chǎng)景都適合寄存器操作。我的判斷標(biāo)準(zhǔn)很簡(jiǎn)單需要極致性能中斷服務(wù)函數(shù)、高頻PWM、DMA配置這些用寄存器。需要精確時(shí)序單總線協(xié)議、WS2812、紅外編解碼必須寄存器。調(diào)試底層問(wèn)題庫(kù)函數(shù)行為異常時(shí)直接看寄存器能快速定位。學(xué)習(xí)原理想真正理解單片機(jī)怎么工作寄存器是必經(jīng)之路。其他情況比如初始化一堆外設(shè)、寫(xiě)業(yè)務(wù)邏輯用庫(kù)函數(shù)效率更高。我現(xiàn)在的習(xí)慣是初始化用庫(kù)函數(shù)關(guān)鍵路徑用寄存器。兩者混用完全沒(méi)問(wèn)題編譯器會(huì)處理好。7.2 混用時(shí)的注意事項(xiàng)混用時(shí)最大的坑是庫(kù)函數(shù)可能覆蓋你的寄存器配置。比如你先用寄存器配置了GPIO然后調(diào)用HAL_GPIO_Init()后者會(huì)重新寫(xiě)入CRL/CRH把你的配置沖掉。解決辦法是要么全用寄存器要么全用庫(kù)函數(shù)要么確保庫(kù)函數(shù)配置的參數(shù)和你的寄存器配置一致。另一個(gè)坑是中斷優(yōu)先級(jí)分組。庫(kù)函數(shù)用HAL_NVIC_SetPriority()設(shè)置優(yōu)先級(jí)底層操作的是NVIC的IPR寄存器。如果你直接用寄存器設(shè)置要注意優(yōu)先級(jí)分組設(shè)置SCB-AIRCR的PRIGROUP位否則優(yōu)先級(jí)可能不符合預(yù)期。我一般會(huì)在工程里定義一個(gè)宏USE_HAL_DRIVER條件編譯決定用哪套代碼。這樣切換起來(lái)方便也避免了混用沖突。7.3 進(jìn)階方向從寄存器到RTOS和底層驅(qū)動(dòng)掌握寄存器操作后你會(huì)發(fā)現(xiàn)很多以前覺(jué)得神秘的東西變得清晰。比如RTOS的任務(wù)切換本質(zhì)就是操作PendSV異常和堆棧指針比如DMA傳輸就是配置幾個(gè)寄存器然后讓硬件自動(dòng)搬運(yùn)。下一步可以嘗試寫(xiě)一個(gè)自己的GPIO驅(qū)動(dòng)庫(kù)封裝成gpio_set()、gpio_toggle()等函數(shù)理解庫(kù)函數(shù)的設(shè)計(jì)思路。研究啟動(dòng)文件看匯編代碼怎么初始化堆棧、怎么跳轉(zhuǎn)到main函數(shù)。移植RTOS自己寫(xiě)PendSV_Handler和SysTick_Handler理解任務(wù)調(diào)度的底層機(jī)制。優(yōu)化關(guān)鍵代碼用寄存器重寫(xiě)耗時(shí)函數(shù)對(duì)比性能提升。我個(gè)人的體會(huì)是寄存器就像武功的內(nèi)功心法庫(kù)函數(shù)是招式。只練招式遇到強(qiáng)敵就束手無(wú)策內(nèi)外兼修才能游刃有余。剛開(kāi)始可能覺(jué)得枯燥但堅(jiān)持啃完幾個(gè)外設(shè)后你會(huì)發(fā)現(xiàn)看任何單片機(jī)的手冊(cè)都不再發(fā)怵這種能力才是真正值錢(qián)的。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧洲精品人妻| 丁香五月色| 伊人色综合欧美| 久久仑合| 亚洲中文字幕乱码无码一区二区| ..日韩av毛片精品久久久| 日本一卡二区在线| 日韩欧美被操黄免费观看| 啊视频在线| 可以免费看黄片的视频| 欧美色图亚洲色| 欧美72网页| 日韩三四五区| 久久婷婷国产一区二区色| 久艾草在线精品视频在线观看| 天天摸天天操视频| 亚洲天堂电影网99999| 99黄页网站| 婷婷久久网| 久久久久久人妻一区精品色欧美| 97在线免费看视频| 97久久超碰国产精品| 欧美日韩美女精品久草一区二区三区| 中文字幕亚洲欧美在线不卡| 好爽免费视频,| 欧美夜色| 91综合国产精品| 动漫片子网站3黄| 国产日韩欧美三级片| 亚洲成a人片在线观看中文!!! | 日韩av在线免费网站| 沈阳熟女高潮对白视频| 国产高清不卡视频| 日韩美女久久一区二区三区| 不卡啪啪视频| 发朗少妇买婬全视频中文| 国产伦乱91| 超碰在线香蕉| 亚洲精品色| 麻豆啪啪啪视频| 约操熟妇| 亚洲欧美国产日本一区二区三区| 欧美日本一区二区a人| 2018天天干在线视频| 亚洲精品国产精品成人| 久久精品一区二区一8| 好爽免费视频| 亚洲伊人久久综合97| 日本人妻伦在线中文字幕| 98人妻精品一区二区色欲| 激情小说亚洲| 欧美人人曰人人操人人射射| 1禁看欧美黄片免费看| 操www| 欧美一区91大爱| 在线播放中文字幕| 久久精品人妻一区二区| 伊香蕉综合久久久久久久噜噜噜| 亚洲高清色综合| 日少妇视频| 青娱乐福利99| 热99这里只有精品| 久久99热这里只频精品6学生| 欧美日不卡| 中文字暮97| 骚逼一区二区| 国产精品对白自产拍| 久久精品国产97欧美精品亚洲| 性高潮久久久久久久久久久| 日韩国产不卡在线视频| 国产欧美日韩在线不卡第一页| 国产九九九九九九九九| 欧亚成人在线视频| 色老大| 色视频蜜乳| 黄色片大香蕉| 美腿色图| 成人青青草原伊人| 日本性爰一道本| 亚洲福利中文字幕在线| 日韩丝袜人妻AV| 久久久久网站-538在线视频-欧美永久乱码| 亚洲日韩黑丝| jizz啪啪| 天天日天天操心| 欧美夜夜骑视频| 久久9精品| 国内毛片婷婷六月色| 久久男女激情视频网站| 91美女视频在线| 2020天天色综合| AⅤ片水多多| 日韩国产中文字幕| 夜夜嗨老熟女AV一区二区三区| 亚洲国产精品成人久久蜜臀| 又黄又爽在线观看视频 | 97在线欧| 亚洲色图尤物视频| 熟妇亚洲一区二区三区| 欧美天天搞| 中文字幕一区日韩精| 亚洲永久AV无码精品秋霞| 亚洲有薄码区久久在线一区| 成人一级性爱| 久久超碰98| 亚洲 无码 偷拍| 亚洲少妇色| 伊人午夜福利视频| 国语国产操逼伊人AV网| 亚洲AV不卡在线观看尤物| 夜夜欧美| 久久婷婷国产一区二区色| 国产又粗又长又大的视频| 国产中文精品一区二区在线观看| 一个国产在线综合网站| 综合干干干av久久久综合网| 97无码视频在线播放| 七久久久| 国产精品片| 91一区二区| henhen91| 超碰久久中文| A片 AV一级在线播放观看免费 | AV一起草在线| 曰本熟女视频| 人人看欧美性爱| 妇女视频网站| 亚洲欧美经典一区二区 | 国产少妇与亚洲av| 精品国产三级av韩国在线| 91人妻丝袜无码| 中文字幕一区二区视频在线观看| 国产精品久久发布| 91在线秘 男同| 欧美久久婷婷| 日欧亚洲二三区大片不卡| 欧美大片天天看| 欧美强奸乱能| 国产精品久久久久9999小说| av大香蕉网站| 国产精品自在线发布| 国产精品久久久九九九| 久热大香蕉| 久久久四区| 国产又黄又猛又粗又爽的网站| 亚洲精品国产精品成人| 天天情欲宗合网| 国内三级自拍小视频在线观看| 国产精品伦理| 日日AV加勒比| 蜜臀AV网站| 日韩人妻无码不卡网站| 白丝AV网站| 强奸乱伦AV网站| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 久久免费精品视频免一| 无码137片内射在线影院| 久久伦理视频久久大香蕉视频| 黄色网址在线免费观看| 九九久久玖玖| 狠狠躁日日躁夜夜躁A| 色丁香久久| 91精品国产91久久福利| 51一区二区三区| 粉嫩国产精品久久粉嫩| 婷婷视频在线免费观看| 久久久久久97| 九九热午夜欧亚国产视频| 久久久98网站免费视频| 亚洲欧洲国产综合av| 成·人免费午夜在线观看| 色大师网站www永久网站视频| 五月婷婷丁香中文字幕| 嗯啊视频免费在线观看| 熟妇视频一区二区三区在线| 国产二区视频在线观看电影| 久久精品国产97欧美精品亚洲| 日韩97视频!在线| 无码乱人伦中文视频| 人妻铁牛TV| 欲女人妻性色av| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 国产97色在线| 手机在线视频国内精品| 中文字幕高清精品一区| 亚洲天堂男人的天堂| 久9爱精品| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 夜夜嗨视频| 婷婷人妻激情| 人人澡人人干| 91亚洲欧美激情| 一区二三区四区视频大全套| 亚洲天堂自拍| 欧美日韩亚洲高清不卡一区二区三区| 欧美黄色大香蕉一区二区| 日本狂喷奶水在线播放212| 东北女人操逼| 亚洲不卡三级手机播放| 无码外流操逼视频| 人人操人人干xxx| 日本一级特级毛片视频| 懂色Av| 色图综合网| 国产精品夜夜| 大学生美女口爆| 亚洲97精品| 午夜九九九九九九| 风月影院十八禁| 在线视频97| 人人妻人人玩人人澡人人爽| 免费一二区| 久久人妻| 秋霞蝌科网日本一区| 中国国国产一级特黄毛片| 天天激情干| 九月丁香婷婷色| 亚洲伊人a线观看视频| 三级AV入口| 日韩乱伦影音先锋| 免费看久久久性性| 欧日韩不卡视.频| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 一区麻豆 高清中文字幕| 亚洲欧美天堂在线| 韩国嫰模上门援交视频| 欧亚 另类 久| 91情色| 日本一区二区三区午夜观看| 日本女优在线视频福利| 丁香五月久久| 欧美一区二区日韩传媒搭讪精品| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 国产三区免费在线观看| 日本三级人妻a人妻一在线| 人妻在线臀日韩| 日本黄色裸日本黄色裸体 | 俄罗斯一区二区视频在线观看| 在线中文字幕| 欧美天天拍| 妇人噜噜| 蜜屁av| 麻豆国产精品午夜视频| 六月丁丁香| 超碰色中文| 伊人色综合欧美| 玖玖综合网| 亚洲AV秘无码一区..| 亚洲精品中文字幕一区在线视频| 精品超碰中文在线| 久久高清无码夜夜操| 亚洲天天操| 天天躁日日躁xxxxx| 国产亚洲在线| 久久久九九| 中文?日韩?免费?精品| 3028国产精品| 97干色天堂| 欧美97se| 久久美女国产| xxx亚洲午夜天堂| 久久久久深夜无码| 国语国产操逼伊人AV网| 欧美 日韩 婷婷 五月| 密臀在线一区尤物| 综合啪啪| 欧亚日韩综合精品国产| 亚洲无码精品AV久久久| 无码又爽又硬又激情免费视频| 好好的日:com久久九九| 五月天我淫我色av| av天天在线观看| 日本中文字幕一区| 欧美一区二区三区另类精品| 国产农村妇女精品一| 风韵犹存大大大大香蕉| 色爱国产| 青青久久久| 免费αⅴ在线观看| 91l欧美在线| 亚洲 中文字幕 精品| 久久久久免费少妇| BBBBB97COM| www…国产操逼| 精品乱码久久久久| 超碰色男人操熟女| 欧美综合网1| 在线播放一级无码视频| 69久久久久久久久久久久久| 性爱Av免费| 亚洲污一污二| 国产黄色影片在线观看| m欧洲一级午老| 欧美一区二区日韩三区| 另类视频在线| 国产精品自在自拍视频| 久伊人网78| www.色五月| 少妇久久| 日韩99神马视频片| 亚洲国产成人福利在线观看| 热久日综合| 亚洲成熟国产精品美女| 欧美日日人人天天| 大香蕉520| 黄骗免费网站| 欧洲乱码视频| 欧美自拍偷拍免费观看| 日本免费二区三区| 久7色| 熟女探花啪啪| 91丝袜激情在线| 操逼逼中文字幕| 国产久9| 激情丁香五月婷婷| 亚洲欧美国产中文视频| 中文字幕在线2| 欧美日韩操逼嗦吊| 啊啊啊好舒服视频| 六月丁操逼| 精品性爱一区二区| 亚洲综合另类| 久久精品国产精品| 亚洲色五月| AⅤ片水多多| 天美传媒av在线| 国产欧美日韩在线不卡第一页| 欧美丝袜中文字幕07在线| 欧美老熟另类| 成人在线视频网| 高清国产精品福利网站| 人妻超碰青青草98| 久久视网78| 大香网伊人久久综合| 日韩欧美性爱电影在线观看| 久久久久99精品成人片蜜臀| 精品97精品97| www.婷婷| 亚洲av无线观看| 97色网| 国产91专区| 夜夜夜久久| 日韩在线观看字幕精品| 老熟女搡BBBB搡BBBB视频| 久久亚洲日韩熟女精品| 精品十三区| a久久| 欧美aaaaaaa| 国产福利合集| 清纯唯美综合亚洲| 亚州欧美一区| 97国产天堂岛| 丝袜无码a片| 91爽啪| 亚洲啪啪性视频| 精品成人无码| 日韩啊V| 美欧色综合| 97精品人妻一二三四| 在线视频五十市| 天天综合精品| 91Chinese在线| 伊人久久综合精品欧美| 国产91亚洲精品一区二区三区| 黑人性暴力毛片| 91欧美性| 九九九九九九免费视频| 久久草视频污视频| 91成人国产综合久久精品蜜月| 丁香五月天激情综合| 思思性爱| 日韩三级天堂在线观看| 日本性爱不卡视频| 玖玖爱免费观看视频| 人人操人人干xxx| 国产呦精品系列在线观看| 99re久久| 91美女网站| 91性情| 78超碰| 欧美激情区| 在线不欧美| 国产精品96| 亚洲色图欧美色图另类图片| 久久久久久九九九九| 69精品| 亚洲综合第一页| 亚洲天天综合| 亚洲一二三精品久久网| 三级日本一区二区三区| 啊啊啊操死我了| 欧美在线综合| 欧洲天天在线| 国产大学生口爆吞精合集| 国产精品精品系列在线观看| 十八禁av无码免费网站APP| 久久双插| 免费1级a做爰片观看| 国产对白刺激视频| 一区二区三区 日韩欧美| 久久久久成人亚洲国产| 婷婷五月天久久久| 亚洲欲色9532548967一区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 97视频观看| 夜夜高潮夜夜爽高清视频一| 成人天天看站长推荐| 亚拍在线| 国产熟女无套内射| 欧美一区二区福利在线| 麻豆啪啪啪视频| 98色网| 久久久久一本一区二区青青蜜月| 97在线青| 91老司机视频| 中国少妇XXXX做受| 91操碰| 后入内射蜜桃臀| 精品中文一区二区| 欧州91高潮| 国产亚洲精品无码三区| 91在线色综合| 人人操人人射人人干| 偷拍盗拍亚洲色图图片 | 宅男91视频在线播放| 久草精品一区| 日本一区不卡| 国产一级αv免费看片| 精品无码久久久| 人人九九精| 麻豆久久一区二区三区| 亚洲欧美日韩精品久| 国产高清1234区| 屁股久久久久久久久| 熟女探花啪啪| 亚洲91少妇| 中日992视频| 国内毛片欧美香蕉精品| 综合激情婷婷| 日韩三级性| 国产婷婷综合在线观看| 丁香五月成人| 老鸭窝日丰县女人| 波多野42部无码喷潮在线观看| 日韩另类色图| 国语精品av| 国产精品一二三在线看| 黄色不卡视频| 国产精品直播在线观看直播| 亚洲综合网电影91| 欧美色图自拍| 大色综合网| 极品后入免费视频| 国产亚洲福利第一页丝袜| 五月丁香| 欧美性爱超碰97| 人人看人人摸人人色| 国产精品在线网站| 噜噜噜在线视频| 成人久久无码www| 精品亚洲| 大香蕉伊人一区在线观看| 99夜夜操| 六月色婷婷| 青青久日| 操人妻少妇中文 | 日本人妻A片成人免费看片| 亚洲人码13| 奇米狠999| 日日噜噜夜夜久久亚洲一区二区 | 亚洲欧美成人在线| 欧美色图20P| 大香蕉人妻| 亚洲天堂加勒比| 天天操天天插| 国产超碰| 粉嫩AV一区二区夜夜| 色情五月婷婷| 欧美色图亚洲激情| 亚洲精品色| 日逼逼免费看| 四虎影视 亚洲无码| 亚洲一区二区精品福利| 九久久九九久视频| 久久色激情一区二区三区| 亚洲美女AV无码| 欧美性暴力猛交XXXX| 久操操AV电影| 夜夜夜夜爽| 亚洲国产日韩欧美熟妇在线| 91亚州| 亚洲永久AV无码精品秋霞| 亚洲精品一二区| 破处bbq| 青青网三级视频| 少妇一级无码精品| 一二视频神马久久传媒| 成人婷婷丁香| 国产成人一级av88| 国产精品不卡少妇白| 99自拍B亚洲| 久草视频在线视频在线视频在线观看| 97色欧洲| 一区二区三区日韩欧美| 女同性恋久久| 成年人网站在线免费观看| 熟妇国产免费一区| 韩国一区二区精品亚洲| 国产中文大片资源中文字幕| 男人的天堂久久| 少妇同性| 五月丁香狠狠爱| 国产多人在线观看视频| 97久久超碰国产精品| 69综合网| 天天做天天爱天天爽| 日韩欧美大力操| 超碰在线91| 淫乱图区| 国产精品久久发布| 久久婷婷五月| 操逼啊啊啊91| 超碰免费人妻人人| 欧美日韩亚洲天堂| 97操97干| 国产精品不卡一区二区三区| 九九热精品在线| 欧美一区二区亚洲天堂| 精品视频免费在线一区| 国产精品九九九| 亚洲图片 欧美电影| 美日韩在线不卡人妻| 精品国产乱码久久久久久影片| 国产午夜激片Av毛片不卡| 亚洲日韩av专区无码| 久操视频这里只有精品| 国产后入式在线观看| 国产乱人妻精品入口| 亚洲有码 视频一区| 色爱国产| 福利在线黄片| 国产精品无码在线| 成年人三级黄色片视频| 手机午夜电影神马久久| 狠狠婷婷亚洲中文综合久久| 亚洲97在线| 久九九九九九九九热| 99热99re6国产在线播放| 综合天天网| 久久久久久91香蕉国产| 久久久久久久久久久久黄色 | 老熟妇一区二区三区| 大香蕉一人在线| 五月天亚洲色图| 久久东京热成人| 婷婷久久久精品| 天天热精品| 国产成人精品一区| 欧美日日人人天天| 日本不卡中文| 另类欧美色| 欧美 亚洲 在线| 美女91AV| 麻豆国产精品午夜视频| 亚洲视频1区| 成人av影院在线观看| 日韩熟女乱伦中出| 日本熟妇人妻中出视频| 黄片不用下载在线观看| 亚洲人成色9999精品久久 | 免费A V在线播放| 国产真实野战在线视频| 99久视频| 日韩伦理视频| 五月开心久久AV官网| 欧洲精品欧洲精品| 黄色交缠性感爆操91国产精品免费一区二区三区| 亚洲综合色在线| 中文字幕人妻丝袜乱一区三区| 久久久夜夜夜| 免费中文综合精品| 日韩一级成人毛片免费观看| 久久人妻精品| 国产二区三区粉嫩在线| 色哟哟av| av亚欧| 欧美日韩国产三级黄色| 久久伊人大香蕉| 日韩 人妻 精品| 亚洲日韩乱码中文无码蜜桃臀网站| 日本国产二线女色| 搡老女人老熟女91| 2021久久国产综合精品青草| www.夜夜| 无码操逼天堂| 91丨人妻丨国产丨丝袜| 综合久久六月久久婷婷| 亚洲综合五月天婷婷丁香| 国产91精品久久久久久久网曝门| 精品人妻一区二区蜜桃视频| 久久国产在线一区二区| 秋霞一级视频在线观看免费| 日韩一999精品| 亚洲人精品久久久| 日韩av电影成人在线| 激情综合婷婷| 国产午夜视频| 九九九九精品九九九九| 成人八戒网站| 成人熟女视频一区二区三区| 美女黄页网站| 亚洲欧洲精品视频发布| 不卡码视频| 91热热色| 午夜国产成人福利视频| 大香蕉欧美国产日韩高潮| 男人天堂欧美| 日本99久久| 色天欧美| 免费自拍三级综合| 怡红院怡春院| 97香蕉网| 日日狠狠久久偷偷色综合免费| 亚洲欧洲无码一区夜| 国产在线综合网| 9 9精品一区二区三区| 97资源站久久| 人妻一区视频| 小骚逼被操的爽不爽| 强被迫伦姧在线观看无码网站| www五月| 亚洲狠狠入| 99久久久er直播网址| 九九九九九九九九九五码| 日韩欧美亚洲自拍偷拍| 亚洲另类久操网| 性色A∨91| 99自拍视频| 伊人九九| 一二三四免费视频| 蜜臀久久99精品久久久久久婷婷| www欧美性爱| 人人九九精| 竹菊影视国产一区二区| 91插B网站| 国内精品久久久久影院亚洲| 亚洲日韩狠狠撸视频| 国产福利第一视频| 蜜臀久久99精品久久久久电影| 在线观看国产黄色| 欧美亚洲高清晰| 婷婷亚洲五月***久久| 208天天久久九九九| www.国产高潮精品| 精品天堂| 麻豆AV一区二区| 性爱综合一区二区| 精品久久大胆人体| 久久久精品成人国产| 日韩欧美中文字亚洲慕| 久久色情| 中国一级αV| 麻豆AV96熟妇人妻| 啪啪AV导航| 夜夜做夜夜爽精品视频| 91啪啪| 免费人成毛片乱码| 国产视频大全| 婷婷久久五月| a片自拍直播视频| 超碰97最新人妻| 全免费a敌肛交毛片免费| 蜜臀Av一区二区三区| 亚洲春色激情小说| 亚洲欧洲综合av在线| 蜜臀在线看片| 东北女人av| 93人人操人人| 亚洲欧美清纯| 亚洲欧洲日产国产综合网| 女人午夜视频777| 欧美天天弄| 桃色人妻在线视频| 99亚亚热| 高清成年美女黄网站免费大全 | 色色操| 人人操人人爽人人操人人| 人妻内射一区二区在线视频| 99视频内射三四| 少妇熟女1区2区3区| 久久精品日韩专区免费观看| 欧美亚洲玖玖玖| 国产精品无码av在线| 97欧美在线| 青青伊人加勒比海| 久操高青| 国产免费一区在线观看| 国产一区二区在线播放量| 亚洲精品乱码久久久久久蜜桃麻豆| 热久久精品| 午夜精品探花| AV一区观看| 欧美啪啪色吧在线| 精品视频久久区| 精品久久久久黄少妇| 另类天堂| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 超清福利精品视频在线| 好涩综合| 欧亚韩国999| 亚洲自拍欧美国产首页网曝 | 国产97色在线| 超碰综合97在线| 欧美少妇性乱| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 黑丝少妇在线观看| 亚洲码专区| 国产精品麻豆视频网站| 亚洲精品国产精品成人| 91美女小视频| 91性网| 97精品一区| 五月天亚洲网| 精品欧美日韩在线观看| 超碰97最新人妻| 欧美 亚洲 大香| 久久久久久久久久久97| 狠狠久久亚洲欧美专区| 色五月丁香五月| 日韩中文字幕视频在线观看| 最新中文字幕精品在线| 国产高清免费不卡av| 性暴力欧美猛交在线直播| 秋霞怕怕片| 国产白丝精品在线观看| 亚洲牲交| 国产成年女黄特黄| 久久AV无码AV| 蜜乳中文字幕a在线| 婷婷久久五月综合激情| 欧美中出| 亚洲欧洲av影音| 国产精品分类在线观看| 操啊国产| 欧美精品日韩久久久九 | 骚日日av| 欧美激情在线观看视频| 少妇淫妇久久久久久久| 一起草视频在线| 亚洲图片欧美| av网站免费线看| 欧美日韩色综合网| 免费伦费视频在线观看| 操婷婷逼| 嗯啊免费视频| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 中文字幕在线观看第二页| 超碰性爱97| 色综合20p| 亚洲97网站| 亚洲国产97| 中文字幕美女91| 欧美亚洲尤物久久| 激情九月婷婷| 丝袜内射| wuyechaopeng| 日韩少妇无码| 欧美日韩色综合网| 少妇滛荡视频| 天天综和| 51一区二区三区| 中文字幕丰满子伦无码专区在线视频最新 | 日韩国产成人自拍视频| 天天做天天爱天天爽| 宅男午夜在线视频| 91网站18+| 亚洲成a人v欧美综合天堂下载| 26UUU欧美激情一区二区| 十八禁啪啦拍视频无遮挡| 精品妇女一区二区三区| 日韩精品9区| 日本二三四区| 精品无码不卡视频| 五月天激情婷婷| 色婷婷淫色网| 97超碰久久| 国产亚洲精品玖玖玖在线观看| 午夜人妻精品综合在线| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊| 亚洲资源吧| 人人贴人人摸| 久久天天性久久伊人| 色欧洲97| 精品国产三级av韩国在线| 亚洲AV无码国产精品久久久久 | 中文久久久| 黑人无码一区二区| 国产农村妇女精品一| 人妻第一页| 2019久久久久久久久福利| 日韩偷拍色图| 欧美啪啪啪91| 无码操逼网| 一区二区精品更新提醒| 999热这里只有精品| 一本一道vs波多野结衣| 黄总AV色图| 女人综合网| 99久久久久| 国产精品3| 国产一级137片内射麻豆| 国产欧美精品日韩区二区麻豆天美| 98超碰日本| 人妻一二三区| 97久久精品亚洲中六字幕| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 国产在线强奸视频| 亚洲情色婷婷五月天| 欧美日韩欧美| 色丁香久久| 日韩中文字幕精品一二三事国产精品| 成人av在线播放| 亚洲成人一二三区| 国产后入| 高潮内射在线| av激情亚洲五月天| 夜夜爽爽爽| 久久内射| 污啪啪啪视频| 97久久国产| 首页亚洲国产高跟丝袜诱惑视频| 免费视频观看60秒| 婷婷五月天激情网| 欧美在线亚洲| 97天堂| 精品对白久久不卡| 天天爱天天韩国日本牛牛牛牛| 亚洲色婷婷综合久久一区二区三区| 欧美v亚洲v日韩v最新在线二区 | 熟女精品va中文字幕| 蜜屁Av| 综合免费无码中文| 亚洲怡春院| 熟女被操视频网址| 9I1性色影院| 丝袜美腿欧美| 99久久精品国产系列| 黄色二级片网站| 久久成人国产精品| 91 丝袜在线观看| 日韩AV一起草| 亚洲国产熟妇综合色专区| 91狠婷| 成人精品久久久午夜福利| 330Dv国产女人终合视频极品人与兽| 日韩高清黄片| 久久噜| 99色色网| 国内亚洲高清无码| 亚洲宗合网| 大香蕉久| 日韩欧无码一区二区三区免费不卡| 亚洲图片欧美制度| 青娱乐国产盛宴视频| 欧美综合色图网| 99热99re超碰精品| 国产高清免费不卡av| 亚洲日韩97| 人人喜人人妻| 插穴性爱视频在线观看| 黄色工厂这里只有精品| 人人爱夜夜爱| HEYZO高无码国产精品227| 色五月av| 久久久久大香青草精品综合| 亚洲国产日韩欧美熟妇在线| 老司机福利青青草| 职场同事知名国产国产精品久久欧美日韩| 五月天社区| 人妻一区二区三区视频 | 国产精品自在自拍视频| 97免费在线观看| 精品九九九九九九九九九| 久久99视频| 人妻一二三区| 青娱乐91| 狠狠操狠狠燥| 久久伊人网视频一区二区三区| 国语av最新自产拍在线观看| 久久精品| 日日摸日日弄日日拍| 加勒比AV网| 男人的天堂不卡一区二区| 九月丁香婷婷色| 色欲天天综合久久久无码网中文| 91国内外在线| 蜜桃在线观看一区二区三区| 国产超碰在线| 少妇干B| 秋霞操逼片| 麻豆天美一区二区| 夜夜操夜夜高潮夜夜爽国产精品区| 亚殴在线| 狠狠爱综合| 久干9操| 老司机深夜18禁污污网站| 日比av无码| 欧洲大香蕉| 日本东京热大香蕉a片| 精品少妇后入一区二区三区四区人妻巨乳 | 色性综合| 99久在线精品99re8热| 日韩探花精品在线视频| 免费日韩黄片| 天天影视色香欲综合网小说| 91网站18禁| 亚洲黄色电影| 欧美日韩不卡传媒| 九九热午夜欧亚国产视频| 九九九九九九九九九五码| 高树玛利亚无码流出| 亚洲欧洲偷拍一区| 久热这里| 120分钟婬片免费看| 亚洲女毛多水多21P| blacked精品一区国产| 嗯啊视频免费在线观看| 欧美伊人久久综合网| 欧美真人抽搐一进一出gif | 老女人碰碰在线碰碰视频| 69视频福利导航| 九九英色视频| 九九九九日本| 久久婷婷亚洲欧| 国产视频大全| 国产精品第一页国产大屁股视频免费区i| 日韩精品第3页| 热久久国产精品视频大陆精品| 国产黄色动态精品| 97天天操天天干| 神马久久69| 久久人妻无码毛片A片麻豆| 大香蕉色欲AV| 蜜臀一二三区| 春色91| 岛国黄| 亚洲强奸乱伦影视网| 91精品伊人久久久大香线蕉91| 亚洲熟女一区二区| 欧美在线|亚洲| 亚洲情色在线| 密臀AV在线| 日本孕妇孕交| 久久久免费视频18| 国产免费小视频| 91亚洲色图| 国产视频一区二区三区在线免费观看 | 蜜桃臀一区二区三区久久| 久肏视频字幕| 偷拍 亚洲 欧美| 久久精品午夜国产亚洲AV无码| 99久久久无码精品国产人| 岛国片国产成人亚洲播放| 国产一区二区三区精品观看啪| 婷婷综合网| 亚洲熟女乱色| 精吧天堂| 野狼福利社区| 岛国福利在线精品播放| 国产综合网站在线播放 | 六月婷婷综合| 口爆欧美91| 香蕉大久久久| 男人天堂网站| 欧美性爱1080p| 人妻少妇一区二区| 亚洲Av噜噜一区二区三区妖精| 一本一道久久综合久久| 国产400孕妇孕交群| 天天操天天射天天日| 十八禁视频网站| 黄色二级片网站| 中出20p| 欧美性爱精品七区| 操逼逼无码| 亚洲男人天堂2012| 91四海无码日韩欧美| 92性色国产午夜福利在线661| 性爱乱伦网址| 宗合情欲网| 日韩欧视频| 日韩簧片免费看| 激情丁香五月| 日本加勒比无码专区一二三| 亚洲欧美综合| 大香蕉五月天婷婷| 99色日| 日本欧美中文字幕| 国产福利影视| 欧美中字二区| 精品免费一区| 麻豆这里只有精品| 啊啊啊不要好爽日韩无码一区| 好吊色综合| 日本123区操B视频| 天美传媒在线一区| 视频国产欧美在线播放| 国产乱伦性爱AV| 98超碰日本| 亚洲成人在线高清| 白嫩嫩一区| 欧美激情内射| 天天干天天狼在线视频| 亚洲色香| 91久久九九精品国产综合| 色蜜AV| 国产激情在线| 在线视频日韩欧美国产| 中国熟女网站| 激情 欧美 亚洲 小说| 91n美女视频| 97超碰护士| 亚洲人成网www| 国际精品久久久| 黄aaaaaaaaaaaaaaaaaa色网站| 久久99精品九九久久久婷婷| 内射老妇BBWX0C0CK| 高清不卡国产| 福利视频香蕉免费一区二区在线| 激情五月综合| 婷婷国产精品一区二区| 亚洲中文字幕三级在线| 人人澡人人澡人人| 日本精品一区二区中文字幕| 欧美在线视频观看一二三四区高清| wwwxxx日本爽| 伊人操操| 色官网色综合| 亚洲 欧美 综合 91| 三级色综合| 在线观看午夜婷婷久久久久清性观看| 日本成人A片网站| 欧美日韩国产电影| 久久国产免费激情视频| 嗯嗯啊啊好疼| 欧美老妇曰批的视频| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 这里只有精品视频| av天堂电影网| 国产欧美一区二区| 最近2018中文字幕在线高清第一页| 免費人妻夜夜爽天天爽爽一区| 日韩兔费看黄片| 操人妻逼91| 色色香蕉| 伊人国产AV| 九九热九九热| 日本人妻中文字幕| 一级黄碟| 婷婷五月色| a片久久久久久久久久久久| 亚洲人妖网| 最新日韩黄片| 欧美综合91| 97超碰色屌| 另类小色呦| 九九热九九| 日日夜夜噜| 久久久国产成人一区二区三区在线| 97超碰超| 97色色色综合网站| 国内毛片国产专区二| 91色插| 性爱AV天堂| 99视频内射三四| 操逼视频国产无套| 日本 情色 1区2区3区| 口爆综合网| 欧美不卡二区| 九九九九精| 亚州中文字幕超碰97| 日本99热| 国产成年精品高清在线观看91| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 美日韩成人| 国产一区二区在线播放量| 在线电影亚洲色图| 精品.99999| 欧美成人午夜免费福利785| 偷拍精品一区二区三区| 91国产丝袜美女| 中文一区二区婷婷视频| 国产精品一区二区 尿失禁| 久久免费少妇| 日韩人妻精品| 91偷拍欧美亚洲| 五月婷色| av网页一区二区三区| 国产成人亚洲精品无| 好爽要喷了| 韩国女主播青草在线| 婷婷中文字幕| 操逼操逼逼操操逼91| 日本色婷婷| 操美女人妻| 色婷婷综合网| 日韩色| 成人五月天丁香激情综合| 欧美日韩亚洲国产中文永久天天看| 青青欧美在线| 五月大香蕉| 天天做日日做天天欢。| 日欧操屄| 又大又大又大又粗爽高潮观看| 少妇人妻在线| 国产精品视频在线播放| 污到发麻的视频 国产| 天天做天天爱天天高潮| 国产小u女在线观看| 国产宅男宅女在线观看| 国产狂喷潮在线精品| 91骚熟女| 欧洲精品一级二级精品综合视频综合| 久久久久久裸体| 人妻少妇色综合| 精品久久久久久久久久久久| 四虎影视在线| 超碰超碰95| 鲁鲁色综合网| 理论久久婷婷网 8| 亚洲精品男人的天堂| 色五月综合| 丁香五月婷婷基地| 一区在线国产播放| 色爱三区| 欧美中出1| 亚洲成人免费电影| 亚洲日本韩国在线| 无遮挡h肉动漫在线观看| 在线精品福利免费播放| 国产女人与拘做受视频免费| 欧美人人曰人人操人人射射| 亚洲国产精品成人综合| 欧美在线永久天堂| 国产第12页| 一区二区三区视频国产免费| 天天艹天天日| 可以在线观看AV的网站| 爱媛媛久久国产福利| 国产免费久久久久| 色婷婷影院| 五月天春色激情网| 九九九久千久久激情蜜桃在线看| 天天日日日射| 日韩中文字幕av在线播放| 超碰97最新人妻| 蜜臀无码一区二区| 91精品国产91久久久久久久久久久久| 综合少妇网| 97精品视频|