日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

UAV021(六):系统架构优化、SBUS协议、遥控器控制电机转动

發布時間:2023/12/20 windows 71 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UAV021(六):系统架构优化、SBUS协议、遥控器控制电机转动 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

    • 一、系統架構優化
        • 1.1 從全局變量到API函數
        • 1.2 函數傳值
    • 二、SBUS協議讀取及解析
        • 2.1 協議格式
        • 2.2 協議解析
        • 2.3 程序設計
            • 2.3.1 頭文件一覽
            • 2.3.2 串口配置與捕獲解析Sbus幀
            • 2.2.3 數據解析細節
            • 2.3.4 遙控器校準與測試
        • 2.4 測試效果
            • 2.4.1 協議采集與解析
            • 2.4.2 遙控器控制電機



系統架構優化部分主要實現設計API代替直接引用全局變量。

Sbus協議是遙控器常用協議,此文將實現讀取并解析協議內容。

作為測試,使用遙控器油門控制PWM,調節電機轉速。


一、系統架構優化


1.1 從全局變量到API函數

之前實現的程序里定義了幾個全局變量,例如全局的時間計時 tim,姿態角結構體 atti 等。全局變量會增強文件之間的關聯性,定義、聲明、賦值、應用可能在不同的文件,使得變量難以管理。對此,改用API接口的形式,一個簡單的例子如下:

在 timer.c 里實現一個每 0.1ms 加1的變量 tim。之前的做法是把此變量作為全局變量使用,也即在 timer.c 里定義并賦值,在 timer.h 里使用 extern 關鍵詞說明,其他文件只要包含 timer.h 即可使用此變量。下面分別是 timer.h, timer.c 和 attitude.c 里面定義和使用 tim 的情況:

// timer.h extern uint32_t tim; // timer.c uint32_t tim; void TIM6_DAC_IRQHandler(void) {if(__HAL_TIM_GET_IT_SOURCE(&TIM6_Handler, TIM_IT_UPDATE) !=RESET){__HAL_TIM_CLEAR_IT(&TIM6_Handler, TIM_IT_UPDATE); // 清除中斷標志位}tim ++; // 又是0.1ms,全局時間計數加1 } // attitude.c #include "timer.h"Ts = (float)(tim - last_t) / 10.0 / 1000.0; // 0.1ms加1 = 1/10/1000s加1last_t = tim; // 更新時間

這種方式有一定缺點,一是只讀到 attitude.c 突然給 last_t 賦值 tim 容易讓人迷惑,可能需要跳轉到定義后才發現原來這是一個全局變量。對于其他一些變量,我們還想追蹤在哪里賦值的,這將讓問題更加復雜。二是在 attitude.c 里,我們仍然可以修改 tim 的值,這會讓變量變得不安全。還有要避免命名重復,不然會讓人腦闊疼的。

使用API函數后,可以有效解決上面的問題。

我們再在 timer.c 里定義一個函數 GetTimeApi(),當然,在頭文件里聲明:

// timer.h uint32_t GetTimeApi(void); // timer.cuint32 tim_;// 定時器6中斷服務函數 void TIM6_DAC_IRQHandler(void) {if(__HAL_TIM_GET_IT_SOURCE(&TIM6_Handler, TIM_IT_UPDATE) !=RESET){__HAL_TIM_CLEAR_IT(&TIM6_Handler, TIM_IT_UPDATE); // 清除中斷標志位}tim_ ++; // 又是0.1ms,全局時間計數加1 }/* 獲取全局時間接口 */ uint32_t GetTimeApi(void) {return tim_; } // attitude.c #include "timer.h"Ts = (float)(GetTimeApi() - last_t) / 10.0 / 1000.0; // 0.1ms加1 = 1/10/1000s加1last_t = GetTimeApi(); // 更新時間

做兩個小小的約定,提供全局變量的函數以 Api 結束,全局變量以 下劃線結束。

此時,使用函數的方式代替變量,程序可讀性、安全性和獨立性都增強,是一個不錯的選擇。


1.2 函數傳值

注意函數的定義問題,以姿態結構體的傳遞為例,比較以下兩個函數:

struct ATTI_t atti_; /* 獲取姿態接口 */ void GetAttiApi(struct ATTI_t *atti) {atti->theta = atti_.theta;atti->phi = atti_.phi;atti->psi = atti_.psi; } struct ATTI_t atti_; /* 獲取姿態接口 */ void GetAttiApi(struct ATTI_t atti) {atti.theta = atti_.theta;atti.phi = atti_.phi;atti.psi = atti_.psi; }

我們希望的是傳入GetAttiApi() 函數的結構體變量 atti 能夠獲取真實姿態 atti_ 的數據。第一種定義,使用指針的方式是有效的;第二種定義無效,atti 作為形參,函數調用結束后即被釋放,不能達到預期效果。

因此,一般我們都采用指針來傳值。數組和指針有一樣的效果,因為數組名就是指向該數組第一個數值得指針,以下兩段程序是等價的:

/* 獲取三軸加速度接口 */ void GetAccelDataApi(float acc[3]) {acc[0] = acc_[0];acc[1] = acc_[1];acc[2] = acc_[2]; } /* 獲取三軸加速度接口 */ void GetAccelDataApi(float *acc) {acc[0] = acc_[0];acc[1] = acc_[1];acc[2] = acc_[2]; }

二、SBUS協議讀取及解析


2.1 協議格式

協議幀很簡潔,一幀包括25字節數據:

首部(1字節)+ 數據(22字節)+ 標志位(1字節)+ 結束符(1字節)

  • 首部:0x0F
  • 數據位:22 字節的數據,分別代表16個通道的數據,也即是每個通道的值用了 11 位來表示,22x8 = 11x16。這樣,每個通道的取值范圍為 0~2047。
  • 標志位:1字節,高四位從高到低依次表示:CH18數字通道、CH17數字通道、幀丟失(Frame lost)、安全保護(Failsafe),低四位不用。
  • 結束符:0x00
  • 這里容易有一個思維定勢,就是里面的22個數據是從頭到尾每11位作為一個通道的。認真看協議解析容易發現剛好是相反的(吐槽ing),是從尾到頭每11位放一塊。請看這張經典圖片(全網幾乎只此一張):

    并不是第一個字節與第二個字節的高三位組合在一起,而是與低三位。其實,反過來看就對勁了:
    第三個字節的12被拿走了,于是有345678,不夠從第二個字節拿,又拿了12345;
    第二個字節被拿走了黃色的,只剩 678了,沒有了繼續從第一個字節拿,拿到了12345678。


    2.2 協議解析

    整個協議可用串口進行解析:

    8位數據 2位停止位 1位校驗位 波特率100kHz

    這個100kHz是非標準的,一般的串口助手不支持,只能解析出來之后再使用串口打印(吐槽ing)。

    Sbus協議里,使用TTL電平,高電平(3.3V)代表邏輯 ‘0’,低電平代表邏輯 ‘1’,邏輯反了無所謂,取個反不就可以嗎?還真不可以。雖然網上都說要硬件取反,還是抱著僥幸心理試一試,果然不行。非要硬件取反一下,一般的接收機也不帶這功能,簡直是個設計bug(吐槽ing)。

    硬件取反電路如下,實際上就是一個很簡單的三極管電路。Sbus的信號從基極輸入,從集電極輸出。基極輸入 ‘0’,集電極上拉輸出 ‘1’;基極輸入 ‘1’,三極管導通,輸出被拉低為 ‘0’,實現了反向。

    不過為什么軟件直接取反不行呢?還是沒有想清楚,目前個人理解是接收機輸出的驅動不足,或者和單片機引腳電阻不匹配?只能通過通過三極管放大來驅動引腳?暫不猜測,繼續往下。總之吐槽了三次,覺得這個協議沒有多少人性化的地方,它的成功或許是靠著強大的商業資本吧。

    知道了規則,便可以使用串口進行解析了,請看程序。


    2.3 程序設計

    2.3.1 頭文件一覽

    先看頭文件,可見此文件主要功能:

  • 包括兩個宏定義、兩個結構體,SBUS_t 用于存儲一幀數據,MC6C_t 專門針對 MC6C遙控器,僅六通道數據。

  • 后面還有 SBUS硬件初始化,也即配置串口2的函數;Sbus協議解析任務;遙控器校準函數,也即將遙控數據映射到想要區間;測試遙控器控制電機任務。

  • 最后是兩個API函數,向外提供遙控器數據。

  • #ifndef SBUS_H #define SBUS_H#include "sys.h"#define USART_BUF_SIZE 4 // HAL庫USART接收Buffer大小 #define SBUS_DATA_SIZE 25 // 25字節/* SBUS協議幀 */ struct SBUS_t {uint8_t head; // 1字節首部uint16_t ch[16]; // 16個字節數據uint8_t flag; // 1字節標志位uint8_t end; // 1字節結束 };/* MC6C遙控器只有六個通道,只使用了SBUS協議幀的部分數據 */ struct MC6C_t {float ail; // CH1, aileron, 副翼,調節滾轉角float ele; // CH2, elevator, 升降,調節俯仰角float thr; // CH3, throttle, 油門float rud; // CH4, rudder, 方向舵,調節偏航角uint16_t ch5; // CH5, 最終只三檔, 取值 1,2,3uint16_t ch6; // CH6, 最終值兩檔, 取值 1,2 };void SBUS_Init(void); // SBUS硬件初始化 void SbusParseTask(void *arg); // 解析遙控器接收的數據 void CaliMc6cData(struct MC6C_t *mc6c); // 遙控器校準,將遙控器接收數據映射到想要區間 void TestCtrlMotorTask(void *arg); // 測試遙控器控制電機任務void GetSbusDataApi(struct SBUS_t *sbus); // Sbus數據調用接口 void GetMc6cDataApi(struct MC6C_t *mc6c); // 針對MC6C遙控器,MC6C遙控器數據接口#endif
    2.3.2 串口配置與捕獲解析Sbus幀

    之前使用了 USART1,用于調試打印,此處使用 USART2。

    串口配置流程如下:

  • 時鐘使能。使能USART2時鐘及對應GPIO時鐘;
  • 串口初始化配置。選擇串口、設置波特率、字長、停止位、校驗位、是否需要硬件流和輸入/輸出模式。
  • 引腳配置。配置對應的GPIO引腳,注意對于 RX 引腳也不要配置輸入模式,要配置為復用推挽輸出。
  • 中斷配置。配置中斷優先級并使能中斷。
  • 中斷服務函數。實現捕獲協議幀,存儲在一個buffer之中。
  • // sbus.c USART2 配置、中斷,Sbus協議捕獲、解析#include "sbus.h" #include "delay.h" #include "define.h" #include "pwm.h"struct SBUS_t sbus_; // SBUS接收數據全局變量uint8_t usart_buf[USART_BUF_SIZE]; uint8_t sbus_rx_head = 0; // 發現起始字節 0x0F uint8_t sbus_rx_sta = 0; // sbus_ 接收狀態,0:未完成,1:已完成一幀接收 uint8_t sbus_rx_index = 0; // 接收字節計數 uint8_t sbus_rx_buf[SBUS_DATA_SIZE]; // 接收sbus_數據緩沖區UART_HandleTypeDef UART2_Handler; // 串口2配置句柄/* Sbus初始化,包括時鐘、串口配置、引腳和中斷配置*/ void SBUS_Init(void) {GPIO_InitTypeDef GPIO_Initure;// 時鐘使能SBUS_ENCLK();// 串口初始化配置// 波特率100kbps,8位數據,偶校驗(even),2位停止位,無流控。UART2_Handler.Instance = USART2;UART2_Handler.Init.BaudRate = 100000;UART2_Handler.Init.WordLength = UART_WORDLENGTH_8B;UART2_Handler.Init.StopBits = UART_STOPBITS_2;UART2_Handler.Init.Parity = UART_PARITY_EVEN;UART2_Handler.Init.HwFlowCtl = UART_HWCONTROL_NONE;UART2_Handler.Init.Mode = UART_MODE_TX_RX;// 引腳 配置GPIO_Initure.Pin = SBUS_PIN; // PA2--TX, PA3--RXGPIO_Initure.Mode = GPIO_MODE_AF_PP;GPIO_Initure.Pull = GPIO_PULLUP;GPIO_Initure.Speed = GPIO_SPEED_HIGH;GPIO_Initure.Alternate = GPIO_AF7_USART2;HAL_GPIO_Init(GPIOA, &GPIO_Initure);// 中斷配置HAL_NVIC_EnableIRQ(USART2_IRQn);HAL_NVIC_SetPriority(USART2_IRQn, 3, 2);HAL_UART_Init(&UART2_Handler); //HAL_UART_Init()會使能UART2HAL_UART_Receive_IT(&UART2_Handler, (uint8_t *)usart_buf, USART_BUF_SIZE); //該函數會開啟接收中斷:標志位UART_IT_RXNE,并且設置接收緩沖以及接收緩沖接收最大數據量 }/* USART2 中斷服務函數 */ /* 實現對S.BUS協議緩存,頭部為 0x0F,結尾為 0x00, 中間22Bytes16通道數據,1Byte標志符 */ void USART2_IRQHandler(void) //中斷函數 {uint8_t chr;if ((__HAL_UART_GET_FLAG(&UART2_Handler, UART_FLAG_RXNE) != RESET)) // 接收中斷{HAL_UART_Receive(&UART2_Handler, &chr, 1, 1000); // 接收一個字符if (sbus_rx_sta == 0) // 接收未完成{if ((chr == 0x0F) || sbus_rx_head) // 找到首字節或已經找到首字節{sbus_rx_head = 1; // 標明已經找到首字母if (sbus_rx_index < SBUS_DATA_SIZE) // 未接收到25個字符{sbus_rx_buf[sbus_rx_index] = chr; // 不斷接收sbus_rx_index ++;}else // 接收到25個字符了{sbus_rx_sta = 1; // 接收完成sbus_rx_head = 0; // 清零,準備下一次接收sbus_rx_index = 0;} }}}HAL_UART_IRQHandler(&UART2_Handler); }/* 對SBUS協議數據進行解析 */ /* 實現對S.BUS協議緩存,頭部為 0x0F,結尾為 0x00, 中間22Bytes16通道數據,1Byte標志符 */ void SbusParseTask(void *arg) {while (1){if(sbus_rx_sta==1) // 接收完一幀{NVIC_DisableIRQ(USART2_IRQn); // 要關閉中斷,防止讀寫混亂sbus_.head = sbus_rx_buf[0]; // 首部sbus_.flag = sbus_rx_buf[23]; // 標志符sbus_.end = sbus_rx_buf[24]; // 結尾sbus_.ch[0] =((uint16_t)(sbus_rx_buf[2]<<8) | (uint16_t)(sbus_rx_buf[1])) & 0x07ff; sbus_.ch[1] =((uint16_t)(sbus_rx_buf[3]<<5) | (uint16_t)(sbus_rx_buf[2]>>3)) & 0x07ff;sbus_.ch[2] =((uint32_t)(sbus_rx_buf[5]<<10) | (uint32_t)(sbus_rx_buf[4]<<2) | (sbus_rx_buf[3]>>6)) & 0x07ff; sbus_.ch[3] =((uint16_t)(sbus_rx_buf[6]<<7) | (uint16_t)(sbus_rx_buf[5]>>1)) & 0x07ff;sbus_.ch[4] =((uint16_t)(sbus_rx_buf[7]<<4) | (sbus_rx_buf[6]>>4)) & 0x07ff;sbus_.ch[5] =((uint16_t)(sbus_rx_buf[9]<<9) | (uint16_t)(sbus_rx_buf[8]<<1) | (sbus_rx_buf[7]>>7)) & 0x07ff; sbus_.ch[6] =((uint16_t)(sbus_rx_buf[10]<<6) | (uint16_t)(sbus_rx_buf[9]>>2)) & 0x07ff;sbus_.ch[7] =((uint16_t)(sbus_rx_buf[11]<<3) | (uint16_t)(sbus_rx_buf[10]>>5)) & 0x07ff;sbus_.ch[8] =((uint16_t)(sbus_rx_buf[13]<<8) | (uint16_t)sbus_rx_buf[12]) & 0x07ff;sbus_.ch[9] =((uint16_t)(sbus_rx_buf[14]<<5) | (uint16_t)(sbus_rx_buf[13]>>3)) & 0x07ff;sbus_.ch[10]=((uint16_t)(sbus_rx_buf[16]<<10)| (uint16_t)(sbus_rx_buf[15]<<2) | (sbus_rx_buf[14]>>6)) & 0x07ff;sbus_.ch[11]=((uint16_t)(sbus_rx_buf[17]<<7) | (uint16_t)(sbus_rx_buf[16]>>1)) & 0x07ff;sbus_.ch[12]=((uint16_t)(sbus_rx_buf[18]<<4) | (uint16_t)(sbus_rx_buf[17]>>4)) & 0x07ff;sbus_.ch[13]=((uint16_t)(sbus_rx_buf[20]<<9) | (uint16_t)(sbus_rx_buf[19]<<1) | (sbus_rx_buf[18]>>7)) & 0x07ff;sbus_.ch[14]=((uint16_t)(sbus_rx_buf[21]<<6) | (uint16_t)(sbus_rx_buf[20]>>2)) & 0x07ff;sbus_.ch[15]=((uint16_t)(sbus_rx_buf[22]<<3) | (uint16_t)(sbus_rx_buf[21]>>5)) & 0x07ff;printf("======================================\r\n");printf("正常: head=0x0F, flag=0x00, end=0x00\r\n\r\n");printf("head: %d\r\n", sbus_.head);printf(" %d, %d, %d, %d\r\n", sbus_.ch[0], sbus_.ch[1], sbus_.ch[2], sbus_.ch[3]);printf(" %d, %d, %d, %d\r\n", sbus_.ch[4], sbus_.ch[5], sbus_.ch[6], sbus_.ch[7]);printf(" %d, %d, %d, %d\r\n", sbus_.ch[8], sbus_.ch[9], sbus_.ch[10], sbus_.ch[11]);printf(" %d, %d, %d, %d\r\n", sbus_.ch[12], sbus_.ch[13], sbus_.ch[14], sbus_.ch[15]);printf("flag: %d\r\n", sbus_.flag);printf("end: %d\r\n", sbus_.end);printf("======================================\r\n\r\n");delay_ms(100); // 先做完延時再開啟中斷與下一次捕獲,否則延時期間中斷到來,沒有達到預期效果NVIC_EnableIRQ(USART2_IRQn); // 打開串口中斷sbus_rx_sta = 0; // 準備下一次接收}else{ delay_ms(100); // 免得異常時,到此處使得低優先級任務無法執行}} }
    2.2.3 數據解析細節

    注意到 SbusParseTask() 里面延時的位置。正常的思維是放在while(1) 的最后一行,也即 if else外,此處就不行了(為此冥思苦想了幾個小時,排除各種可能,偶然解決問題后才想通)。

    如果把延時放在最后 if else外,邏輯是這樣的:解析完此幀后,使能中斷,這個函數還在延時100ms的路途中,接收機的數據蜂擁而至,一直發一直發,不出bug就不正常了。

    但是把這100ms放在 if else內的開啟中斷和接收下一幀前,不過這 100ms,打死也進不來中斷的,實現了解析完一幀,休息一下,再解析下一幀的目的,這是我們預期的效果。

    2.3.4 遙控器校準與測試

    上面的內容以及成功獲取遙控器指令,存儲在 sbus_ 結構體之中。比如油門(第三通道)數據,取值可能在196 ~1289之間。這個數據不能直接使用,現在我們希望將這個數據轉化在 400 ~ 800(程序里有解釋)之間,用于直接調節電機占空比。因此我們需要做一個線性變化,將油門的數據變化到我們想要的區間。其他通道亦如此,暫且習慣性地叫做“校準”吧。

    除此之外,我們設計遙控器控制電機的任務,也即讀取遙控器油門數據,轉化為PWM波控制電機轉速。兩個API接口函數也在此,不再贅述。

    // sbus.c 遙控器校準與控制電機測試部分 /* CH1 -- 俯仰角, 歸中0°, 最大最小 ±30° CH2 -- 滾轉角, 歸中0°, 最大最小 ±30° CH3 -- 油門, 歸中0°, 最大設置占空比 80%, 最小設置占空比 40%, 電調驅動頻率為400Hz=2.5ms, 40%=1ms, 80%=2ms CH4 -- 偏航角角速度, 歸中0°/s, 最大最小 ±36°/s CH5 -- 檔位, 上中下分別為 1, 2, 3三檔 CH6 -- 檔位, 上下分別為 1, 2兩檔 */void CaliMc6cData(struct MC6C_t *mc6c) {static const float mc6c_min[6] = {64, 174, 196, 129, 193, 200}; // 轉動搖桿,各通道最小值,本為 uint16_t,為方便計算直接為 floatstatic const float mc6c_max[6] = {1812, 1800, 1289, 1833, 1973, 1544}; // 轉動搖桿,各通道最大值static const float mc6c_mid[6] = {1030, 1001, 489, 948, 996, 200}; // CH6 只有兩通道float k;float b;// CH1 映射, [64, 894] --> [-30, 0]; [894, 1812] --> [0 30]if (mc6c->ail < mc6c_mid[0]){k = (0 - (-30)) / (mc6c_mid[0] - mc6c_min[0]);b = 0 - k * mc6c_mid[0];mc6c->ail = k * mc6c->ail + b;}else{k = (30 - 0) / (mc6c_max[0] - mc6c_mid[0]);b = 0 - k * mc6c_mid[0];mc6c->ail = k * mc6c->ail + b;}// CH2 映射, [174, 1001] --> [-30, 0]; [1001, 1800] --> [0 30]if (mc6c->ele < mc6c_mid[1]){k = (0 - (-30)) / (mc6c_mid[1] - mc6c_min[1]);b = 0 - k * mc6c_mid[1];mc6c->ele = k * mc6c->ele + b; }else{k = (30 - 0) / (mc6c_max[1] - mc6c_mid[1]);b = 0 - k * mc6c_mid[1];mc6c->ele = k * mc6c->ele + b;} // CH3 映射, [196, 1289] --> [400, 800]if (mc6c->thr < mc6c_min[2])mc6c->thr = mc6c_min[2];else if (mc6c->thr > mc6c_max[2])mc6c->thr = mc6c_max[2];else{k = (800 - 400) / (mc6c_max[2] - mc6c_min[2]);b = 400 - k * mc6c_min[2];mc6c->thr = k * mc6c->thr + b;}// CH4 映射,[129, 948] --> [-36, 0]; [948, 1833] --> [0, 36]if (mc6c->rud < mc6c_mid[3]){k = (0 - (-36)) / (mc6c_mid[3] - mc6c_min[3]);b = 0 - k * mc6c_mid[3];mc6c->rud = k * mc6c->rud + b;}else{k = (36 - 0) / (mc6c_max[3] - mc6c_mid[3]);b = 0 - k * mc6c_mid[3];mc6c->rud = k * mc6c->rud + b;}// CH5 映射,得到三檔分別賦值 1,2,3if (mc6c->ch5 < (mc6c_min[4] + mc6c_mid[4]) / 2)mc6c->ch5 = 1;else if (mc6c->ch5 < (mc6c_mid[4] + mc6c_max[4]) / 2)mc6c->ch5 = 2;elsemc6c->ch5 = 3;// CH6 映射,得到兩檔分別賦值 1,2if (mc6c->ch6 < (mc6c_min[5] + mc6c_max[5]) / 2)mc6c->ch6 = 1;elsemc6c->ch6 = 2; }/* MC6C遙控器數據接口 */ /* 依賴SbusParseTask()任務 */void GetMc6cDataApi(struct MC6C_t *mc6c) {mc6c->ail = (float)sbus_.ch[0];mc6c->ele = (float)sbus_.ch[1];mc6c->thr = (float)sbus_.ch[2];mc6c->rud = (float)sbus_.ch[3];mc6c->ch5 = sbus_.ch[4];mc6c->ch6 = sbus_.ch[5];CaliMc6cData(mc6c); }/* 獲取遙控器數據接口 */ /* 目前未使用此函數 */ void GetSbusDataApi(struct SBUS_t *sbus) {sbus->head = sbus_.head;sbus->flag = sbus_.flag;sbus->end = sbus_.end ;sbus->ch[0] = sbus_.ch[0]; sbus->ch[1] = sbus_.ch[1]; sbus->ch[2] = sbus_.ch[2]; sbus->ch[3] = sbus_.ch[3]; sbus->ch[4] = sbus_.ch[4]; sbus->ch[5] = sbus_.ch[5]; sbus->ch[6] = sbus_.ch[6]; sbus->ch[7] = sbus_.ch[7]; sbus->ch[8] = sbus_.ch[8];sbus->ch[9] = sbus_.ch[9]; sbus->ch[10] = sbus_.ch[10];sbus->ch[11] = sbus_.ch[11];sbus->ch[12] = sbus_.ch[12];sbus->ch[13] = sbus_.ch[13];sbus->ch[14] = sbus_.ch[14];sbus->ch[15] = sbus_.ch[15]; }/* 遙控器控制電機測試 */ /* 遙控器油門將調節電機占空比 */ void TestCtrlMotorTask(void *arg) {struct MC6C_t mc6c;while (1){GetMc6cDataApi(&mc6c);SetMotorDutyApi(MOTOR1, (uint16_t)mc6c.thr); // MOTOR1, 引腳為TIM3 CH1, PB4SetMotorDutyApi(MOTOR2, (uint16_t)mc6c.thr); // MOTOR2, 引腳為TIM3 CH2, PB5SetMotorDutyApi(MOTOR3, (uint16_t)mc6c.thr); // MOTOR3, 引腳為TIM3 CH3, PB0SetMotorDutyApi(MOTOR4, (uint16_t)mc6c.thr); // MOTOR4, 引腳為TIM3 CH4, PB1delay_ms(200);} }

    2.4 測試效果

    2.4.1 協議采集與解析

    運行結果如下,正常時,head為0x0F,flag為0x00,end為0x00。

    2.4.2 遙控器控制電機

    現在已經開啟四路電機輸出PWM波,隨便測一路即可,輸入捕獲也開啟,遙控器也接上,引腳如下:

    PWM1 -- PB4 PWM2 -- PB5 PWM3 -- PB0 PWM4 -- PB1 CAP -- PA0 SBUS_TX -- PA3

    注意:

  • 可以先將PB4與PA0連接起來,調節遙控器油門,看看周期是不是400Hz,高電平脈寬是不是 1ms-2ms。
  • 不用遙控器,直接輸出固定的PWM波,電機是不會轉動的。想想電調是怎么校準的就明白了。
  • 有一個問題,依舊沒有解決,遙控器油門通道總是有跳變,其他通道正常,一直沒找到bug,如果遇到相同問題或解決辦法,討論區見。

    此時接收Sbus協議幀沒有使用DMA,后期將優化。

    完整工程源程序下載需積分:https://download.csdn.net/download/weixin_41869763/13054663

    — 完 —

    總結

    以上是生活随笔為你收集整理的UAV021(六):系统架构优化、SBUS协议、遥控器控制电机转动的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产中出在线观看 | 成人黄色在线 | 黄色免费网战 | 亚洲国产成人精品电影在线观看 | 国产精品国产三级国产不产一地 | 蜜臀久久99精品久久久酒店新书 | 中文字幕av专区 | 国产成人精品一区二 | 在线观看中文字幕 | 奇米导航| 中文在线a√在线 | 91九色精品女同系列 | 亚洲成人精品久久久 | 看全黄大色黄大片 | a资源在线| 天天爽天天做 | 黄色亚洲| 黄色av电影一级片 | 亚洲国产精品一区二区久久hs | 最新日本中文字幕 | 日韩极品在线 | 国产在线观看你懂的 | 久久久久久久国产精品影院 | 一区二区三区电影大全 | 97国产超碰 | 日韩一级片观看 | 日韩av中文在线 | 国产精品美女久久久久久久久 | 成年人视频在线免费观看 | 99久久精品久久久久久清纯 | 久久久久欧美精品999 | 国产小视频在线免费观看视频 | 国产午夜精品一区二区三区嫩草 | 主播av在线 | 久久国产精彩视频 | 国产一级精品视频 | 人人澡人摸人人添学生av | 国产色拍 | 国产精品激情偷乱一区二区∴ | 欧美韩日视频 | a级国产乱理论片在线观看 伊人宗合网 | 日韩国产欧美在线播放 | 久久免费的精品国产v∧ | 久久精品直播 | 国产精品美女 | 国产精品18毛片一区二区 | 亚洲综合一区二区精品导航 | 91九色国产蝌蚪 | 日本视频久久久 | 国产群p视频 | 成人毛片网 | 国产在线更新 | 成人免费视频a | 久久精品综合网 | 日韩欧美xxxx| 国产精品久久久久久久久久久久冷 | 久久久久久国产精品 | 国产一区二区中文字幕 | 久久综合偷偷噜噜噜色 | 一级做a爱片性色毛片www | a√国产免费a | 玖玖视频网 | 日韩中文字 | 国产自产高清不卡 | 国产糖心vlog在线观看 | 免费在线激情电影 | 亚洲五月婷婷 | 免费成人在线网站 | va视频在线观看 | 久久久久久久综合色一本 | 免费视频在线观看网站 | 麻豆一二 | 久久久久久国产精品免费 | 久久久久久久久久网 | 最新国产中文字幕 | 天天干.com| 国产精品地址 | 久久国产美女视频 | 97人人添人澡人人爽超碰动图 | 韩日电影在线 | 国产黄免费在线观看 | 欧美综合在线观看 | 日日天天干| 婷婷av网站 | av成人免费 | 久久久久麻豆v国产 | 日本少妇视频 | 国产日韩在线视频 | 亚洲网站在线看 | 精品专区 | 男女啪啪视屏 | 91热在线| 久久国产精品99国产精 | 91精品麻豆 | 国产精品正在播放 | 欧美日韩免费在线观看视频 | 午夜丁香网 | av电影在线观看 | 一区二区三区免费播放 | 日韩系列在线 | 久久一区二区三区国产精品 | 久久精品久久久久电影 | 亚洲天天摸日日摸天天欢 | 久久国产精品色婷婷 | 国产在线免费观看 | 911亚洲精品第一 | 国产精品手机在线 | 国产精品视频内 | 久久久久久美女 | 人人草网站 | 黄色动态图xx | 久久99久久99免费视频 | 久久国产一区二区 | 国产精品亚洲精品 | 国产黄在线 | 亚洲韩国一区二区三区 | 在线91播放 | 久久久久激情 | 欧美一级黄色网 | 国产99免费 | 亚洲三级国产 | 日本二区三区在线 | 92国产精品久久久久首页 | av中文资源在线 | 久久国产午夜精品理论片最新版本 | 操操操日日 | 欧美少妇xxx | 亚洲成人黄色 | 好看av在线 | 亚洲在线网址 | 在线国产黄色 | 草樱av| 日韩精品在线视频 | 国产一区欧美一区 | 九九免费在线看完整版 | 久久字幕 | 欧美精品久久久久久久久久丰满 | 亚洲三级在线免费观看 | 国产精品黑丝在线观看 | 免费看污在线观看 | 国产一线二线三线在线观看 | 亚洲精品777| 91香蕉国产在线观看软件 | 欧日韩在线视频 | 99色视频在线 | 在线天堂中文www视软件 | 天天在线操 | 久久不射网站 | 久久99婷婷 | 国产午夜在线观看 | 国产在线观看午夜 | 国产黄免费在线观看 | 在线v| 狠狠操夜夜 | 日本中文字幕在线电影 | 国产日韩欧美中文 | 成人va在线观看 | 成人9ⅰ免费影视网站 | 精品久久久久久国产91 | 波多野结衣日韩 | 免费在线观看视频一区 | 999成人| 黄a网 | 91精品国产99久久久久久红楼 | 97av在线视频免费播放 | 久久久久久免费视频 | 免费看片成人 | 色综合久久久久综合体 | 二区三区av | 国产视 | 免费日韩一区二区三区 | 久久久久免费精品视频 | 日韩视频免费 | 黄色精品一区二区 | 国产超碰97 | 丁香婷婷综合色啪 | 91久久一区二区 | 99视频这里只有 | 麻豆视频在线 | 久久精品一区二区三区中文字幕 | 国产在线国偷精品产拍 | 亚洲a资源| 欧美一级在线看 | 91av视频免费观看 | 黄色三级免费网址 | 在线免费看片 | 久久超级碰| 色在线网| 色婷婷成人 | 日韩高清三区 | 久久久免费少妇 | 亚洲成人精品在线 | 精品国产伦一区二区三区 | 香蕉影视 | 亚洲日本激情 | 最新日韩在线 | 国产一区二区免费看 | 在线观看视频一区二区三区 | 狠狠狠狠狠狠狠狠 | 亚一亚二国产专区 | 黄色国产高清 | 深爱激情av | 国产精品video爽爽爽爽 | 午夜视频欧美 | 久久久久久久影院 | 在线观看的黄色 | 久久久久久国产精品 | 免费高清在线观看电视网站 | 少妇bbbb | 色天天综合久久久久综合片 | 亚洲五月激情 | 国产精品自产拍 | 日本三级在线观看中文字 | 99视频精品全部免费 在线 | 在线观看日韩免费视频 | 国产露脸91国语对白 | 韩国精品在线 | 亚洲精品99久久久久久 | 91av在线不卡 | 免费看av在线 | 玖玖视频网 | 久久艹99 | 免费在线国产精品 | 91探花国产综合在线精品 | 国产精品久久久免费 | 国产亚洲在| 久久精品久久精品久久精品 | 久久精品2 | 看片网站黄色 | 91porny九色在线播放 | av综合 日韩 | 91成人精品视频 | 欧美性色黄 | av中文电影 | 91精品无人成人www | 久久精品欧美一区二区三区麻豆 | 日本黄色一级电影 | 91手机电影| 国际av在线 | 成人av资源在线 | 日韩在线观看视频中文字幕 | 二区视频在线 | av成人在线看 | 国产精品成人自产拍在线观看 | 欧美日韩免费一区二区三区 | 九九九在线观看视频 | 在线视频麻豆 | 色吊丝在线永久观看最新版本 | 在线视频久久 | 久久试看 | 香蕉精品视频在线观看 | 日韩一区二区三区视频在线 | 久久久久久免费视频 | 夜夜操网站 | 免费网址在线播放 | 欧美日韩视频在线播放 | 久久久69| 一二区av| 精品成人a区在线观看 | 免费在线观看av网址 | 国产精品视屏 | 免费av免费观看 | 免费网站黄色 | 久久99国产一区二区三区 | 狠狠狠综合 | 一级国产视频 | 国产精品第二页 | 超级碰碰免费视频 | 天天草天天 | 亚洲日韩欧美一区二区在线 | 麻豆视频免费版 | 久久婷婷色 | 青青河边草免费观看 | 免费成人在线观看视频 | 久久久久久99精品 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 狠狠色丁香久久婷婷综合_中 | 色综合久久中文综合久久牛 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 欧美aa在线 | 亚洲综合导航 | 婷婷视频在线播放 | 精品久久免费看 | 亚洲精品一区二区三区高潮 | 激情欧美一区二区三区 | 欧美成人理伦片 | 91系列在线观看 | 欧美日韩在线免费观看 | 美女黄频 | 免费在线成人av电影 | 欧美成人亚洲成人 | 九九热只有精品 | 久久97久久97精品免视看 | 久久国产精品一区二区三区四区 | 成人精品99 | 最新日本中文字幕 | 久久曰视频 | 亚洲国产精品成人va在线观看 | 国产中年夫妇高潮精品视频 | 成人一级免费电影 | 国产精彩视频一区 | 午夜视频免费 | 亚洲精品午夜久久久久久久 | 一区二区三区免费网站 | 成人在线免费小视频 | 国产久视频 | av不卡在线看 | 色综合久 | 在线播放国产一区二区三区 | 国产一级91 | 91九色视频在线观看 | 国产一区二区不卡在线 | 国产精品理论片在线播放 | 一区二区精品视频 | 日本特黄一级 | 欧美日韩有码 | 国产午夜精品av一区二区 | 亚洲精品免费观看视频 | 久久tv| 久久久久久久影院 | 国产精品成人一区二区 | 精品国产一二三四区 | 国内精品久久久久久久久 | 国产黄在线免费观看 | 欧美一区免费观看 | 五月天激情综合 | 日韩欧美在线综合网 | 中文字幕一区二 | 国产青青青 | 蜜臀av性久久久久av蜜臀妖精 | 在线观看中文字幕一区 | 九九热re| 精品国产1区二区 | 国产精品福利午夜在线观看 | 欧美日韩一区二区三区视频 | 在线免费观看av网站 | 亚洲国产福利视频 | 午夜色场 | 91丨九色丨国产在线观看 | 精品夜夜嗨av一区二区三区 | 99精品一区二区三区 | 在线观看视频亚洲 | 国产日韩欧美在线影视 | av免费网 | 97人人澡人人爽人人模亚洲 | 日韩av网址在线 | 亚洲高清激情 | 亚洲国产中文字幕 | 日韩动漫免费观看高清完整版在线观看 | 狠狠操综合网 | 五月婷婷.com | 亚洲涩涩网 | 伊人色综合久久天天 | 国产视频不卡一区 | 在线观看黄色免费视频 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 99中文视频在线 | 日韩女同一区二区三区在线观看 | 久久蜜臀一区二区三区av | 激情大尺度视频 | 99精品一区二区三区 | 5月丁香婷婷综合 | 在线高清一区 | 中文字幕日本在线 | 国产手机在线精品 | 91av蜜桃| 麻豆传媒视频在线免费观看 | 日韩69视频| 在线免费观看视频一区 | 国产美女精品 | 免费成人在线观看 | 亚洲专区在线播放 | 91视频免费视频 | 国产成人精品一区二区三区 | 国产不卡在线观看视频 | 99久久久国产精品美女 | 精品在线你懂的 | 日韩av电影免费观看 | 色综合婷婷久久 | 国产在线视频一区二区 | 久久久久99精品成人片三人毛片 | 激情丁香婷婷 | 久久国产色 | 91视频高清 | 亚洲a成人v| 一级免费黄色 | av电影在线观看 | 亚洲欧美色婷婷 | 国产专区一| 黄色大全免费观看 | 精品国产一区二区三区久久影院 | 美腿丝袜一区二区三区 | 久草视频99 | 婷婷综合电影 | 8x8x在线观看视频 | 国产精品视频内 | 精品国产一区二区三区久久 | 综合国产视频 | 国产96在线视频 | 婷婷丁香五 | 91av在线免费视频 | 区一区二区三区中文字幕 | 欧美视频不卡 | 岛国一区在线 | 中文在线8资源库 | 九九一级片 | 亚洲精品一区二区久 | 婷婷精品国产一区二区三区日韩 | 日韩在线视频看看 | 波多野结衣理论片 | www.av免费 | 久久久免费观看 | 狠狠gao | 亚洲精品美女久久 | 丁香花在线视频观看免费 | 欧美最猛性xxxxx(亚洲精品) | 日本精品久久久久久 | 97视频久久久 | 精品一区二三区 | 日本黄色免费看 | 超碰精品在线 | 久久天天操 | 亚洲国产伊人 | 91精品国产92久久久久 | 中文字幕人成乱码在线观看 | 国产精彩视频 | 成人免费毛片aaaaaa片 | 日日夜夜天天 | 亚洲h色精品 | 狠狠躁18三区二区一区ai明星 | 久久国产精品免费观看 | 在线免费高清一区二区三区 | 91精品视频在线观看免费 | www.香蕉视频在线观看 | 粉嫩aⅴ一区二区三区 | 久草www | 国产一级视频在线观看 | 日韩免费电影 | 国产精品9999久久久久仙踪林 | 黄色a在线| 国产精品久久久久9999 | 久久精彩免费视频 | 亚州精品成人 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 欧美日本一二三 | 日韩一区二区免费在线观看 | 婷婷午夜 | 亚洲欧美综合精品久久成人 | sm免费xx网站 | 91成人网在线播放 | 欧美天天综合网 | 欧美性精品 | 色小说在线 | 久久久久亚洲最大xxxx | 日韩 在线a | 亚洲精品中文字幕在线观看 | 天天干,狠狠干 | 国产精品成人免费一区久久羞羞 | 天堂在线免费视频 | 国产亚洲婷婷免费 | 91成人在线网站 | 亚洲精品高清在线观看 | 婷婷激情综合网 | 这里只有精品视频在线 | 亚州av成人| 美女国产精品 | 国产一区二区精品91 | 在线播放视频一区 | 丁香六月天婷婷 | 久久精品国产亚洲精品 | 99热播精品 | 日日夜夜精品视频天天综合网 | 91mv.cool在线观看 | 特级西西444www高清大视频 | 五月天婷婷免费视频 | 一区二区三区精品在线视频 | 亚洲视屏 | 在线观看中文字幕亚洲 | 亚洲成人午夜在线 | 国产男女无遮挡猛进猛出在线观看 | 午夜精选视频 | 国产99久久久国产 | 成人资源在线播放 | 日韩一区二区在线免费观看 | 国产成人精品一区二区三区福利 | 色婷婷视频在线观看 | 日韩一级电影在线观看 | 久久情网 | 欧美激情xxxx性bbbb | 国产精品麻豆视频 | 区一区二区三区中文字幕 | 日韩精品免费一线在线观看 | 久久视频在线观看免费 | 日韩精品中文字幕av | 免费成人黄色av | 久久久久国产精品一区 | 成人啊 v| 99综合电影在线视频 | 在线欧美国产 | 黄色大片网 | 1024手机看片国产 | 久久久九色精品国产一区二区三区 | 日韩av网址在线 | 免费国产在线精品 | 西西4444www大胆无视频 | 色婷在线 | 国产精品第54页 | 国产无遮挡又黄又爽在线观看 | 中文av在线免费观看 | 九九九视频在线 | 日韩精品亚洲专区在线观看 | 国产一级视频免费看 | 激情五月色播五月 | 欧美日韩免费一区 | 九七在线视频 | 一区二区三区在线免费观看 | 免费网站色 | 日韩大片在线免费观看 | 天堂在线v | 日韩黄色网络 | 玖草在线观看 | 久久久久高清毛片一级 | avav片| 婷婷丁香在线 | 欧美精品一区二区蜜臀亚洲 | 狠狠艹夜夜干 | 男女激情免费网站 | 免费合欢视频成人app | 一区二区三区精品久久久 | av免费电影在线观看 | 欧美日韩高清在线一区 | 中文字幕日韩电影 | 亚洲综合色婷婷 | 天天婷婷 | 欧美久久久影院 | 91在线视频免费91 | 干干夜夜 | 欧美精品中文在线免费观看 | 亚洲国产精品成人av | 欧美日韩三级在线观看 | 人人干人人草 | 久久久久久久国产精品视频 | 日韩在线视频一区 | 九九九九色| 99精品久久99久久久久 | 97电影在线 | 成人黄色电影在线播放 | 亚洲伊人第一页 | 亚洲国产小视频在线观看 | 亚洲激情视频 | 中文字幕在线看片 | 97超碰人人澡人人爱 | 欧美性极品xxxx做受 | 久久综合干 | 亚洲影院天堂 | 久热免费在线观看 | 午夜国产福利在线观看 | 韩国精品福利一区二区三区 | 97天堂网 | 国内免费的中文字幕 | 国产精品久久久久久超碰 | 天天操天操 | 精品中文字幕在线观看 | 日日夜夜精品免费观看 | 人人精品| 91视频成人免费 | 97成人精品视频在线观看 | 99精品偷拍视频一区二区三区 | 欧美一二三视频 | 日韩中出在线 | 波多野结衣在线播放一区 | 成人资源在线观看 | 亚洲精品九九 | 激情视频二区 | 国产一级在线看 | 探花视频在线观看免费 | 日韩理论片中文字幕 | 狠狠狠色狠狠色综合 | 干干夜夜 | 不卡的av电影 | 国产精品久久久久国产精品日日 | 久久看片网 | 成人免费视频在线观看 | 日b视频在线观看网址 | 久久婷五月| 五月天激情综合网 | 97在线免费视频观看 | 日韩在线字幕 | 99热在线看 | 91视频3p| 成全在线视频免费观看 | 日韩电影一区二区三区在线观看 | 国产九色在线播放九色 | 视频在线观看入口黄最新永久免费国产 | 欧美日韩性生活 | 日韩一三区 | 91成人看片 | 日韩精品视频免费在线观看 | 91麻豆精品国产91久久久更新时间 | 亚洲日本在线一区 | 一级黄色电影网站 | 精品国产日本 | 国产成人在线免费观看 | 欧美另类tv | 在线日韩亚洲 | 在线观看黄色大片 | 国产一卡二卡在线 | 最近最新最好看中文视频 | 夜夜躁日日躁狠狠久久88av | 在线观看亚洲成人 | 亚洲综合成人在线 | 又黄又爽又湿又无遮挡的在线视频 | 91丨九色丨国产丨porny精品 | 欧美 激情 国产 91 在线 | 国内视频| www黄免费 | 97在线观视频免费观看 | 国产精品久久久久久妇 | 最新中文字幕在线观看视频 | 国产一二三区在线观看 | 欧美网址在线观看 | 西西444www大胆高清图片 | 久久久久福利视频 | 四虎www. | 久久精品欧美 | 美女久久 | 中文字幕视频免费观看 | 九九久久精品视频 | 美女视频黄在线 | 欧美一级片免费 | 久久久黄色免费网站 | 国产不卡在线播放 | 久久久www成人免费精品 | 国产主播大尺度精品福利免费 | 欧美另类sm图片 | 久久深爱网 | 99中文字幕在线观看 | 国产精品久久久久一区二区三区共 | 国产99久久精品一区二区永久免费 | 一区二区激情 | 99精品电影| 中文字幕一区二区三区四区在线视频 | 日韩视频在线播放 | 亚洲日本激情 | 色婷婷综合久色 | 久久在线播放 | 91精品办公室少妇高潮对白 | 天天插天天干 | 国产人成一区二区三区影院 | 在线观看va | 丁香视频全集免费观看 | 天天操天天能 | 米奇四色影视 | 亚洲高清视频在线播放 | 91亚洲精品久久久久图片蜜桃 | 久久久久国产精品免费免费搜索 | 亚洲一区 av | www.久久com | av看片在线 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 日本久久成人中文字幕电影 | 成全在线视频免费观看 | a黄在线观看 | 国产精品99久久久精品 | 日韩激情第一页 | 国产婷婷vvvv激情久 | 日韩乱码在线 | 91免费高清在线观看 | 婷婷色婷婷| 久久在线免费 | 超碰在线最新 | 亚洲精品乱码久久 | 国产三级精品三级在线观看 | 日韩欧美国产精品 | 成人国产精品 | 日韩在线视频一区二区三区 | 婷婷国产一区二区三区 | 免费网站色 | 六月激情网| 日韩在线观看第一页 | 欧美久久久久久久久久 | 日韩精品一区二区免费视频 | 日韩视频在线不卡 | 欧美日韩在线观看不卡 | 91插插视频 | 亚洲激情在线视频 | 激情五月激情综合网 | 人人爽人人做 | 亚洲黄色软件 | 97视频入口免费观看 | 亚洲精品国产麻豆 | 国产经典 欧美精品 | 亚洲视频电影在线 | 国产剧情在线一区 | 91探花国产综合在线精品 | 国产在线观看一区 | 久久久av免费 | 午夜视频播放 | 天天射综合 | 一级理论片在线观看 | 欧美成亚洲 | 一区二区三区不卡在线 | 天堂网av 在线 | 国产高清免费视频 | 国产亚洲精品久久久久久电影 | 九九综合久久 | 中文字幕黄色网址 | 欧日韩在线视频 | 正在播放 国产精品 | 日本性生活免费看 | 97视频在线观看播放 | 亚洲码国产日韩欧美高潮在线播放 | 国产精品观看在线亚洲人成网 | 国产亚洲成人精品 | 中文字幕色综合网 | 国产一区视频在线播放 | 色婷婷www | 最新91在线视频 | 精品91久久久久 | 福利视频入口 | 日韩日韩日韩日韩 | 胖bbbb搡bbbb擦bbbb| 国产成人精品一区二区在线观看 | 国产自产高清不卡 | av在线影片 | 91成人看片| 99久久久国产精品免费观看 | 欧美色精品天天在线观看视频 | 日韩久久午夜一级啪啪 | 精产嫩模国品一二三区 | 亚洲国产精品999 | av免费电影网站 | www.久久成人 | 粉嫩aⅴ一区二区三区 | 免费性网站 | 亚洲一区二区三区在线看 | 欧美精品一区二区免费 | 一区二区视频在线观看免费 | 欧洲一区二区在线观看 | 国产精品福利在线 | 亚洲成a人片综合在线 | 亚洲欧美日韩国产一区二区三区 | 午夜国产福利在线观看 | 久久a久久| 中文字幕传媒 | 激情一区二区三区欧美 | 天天干视频在线 | 黄色91免费观看 | 四虎视频| 鲁一鲁影院 | 97超碰人人澡人人爱学生 | 在线观看色网站 | 五月婷婷综合激情网 | av三级在线看| 香蕉视频在线免费 | 精品亚洲午夜久久久久91 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 久草视频在线免费 | 极品久久久久久久 | 日本女人逼 | 在线国产专区 | 欧美一区二区三区在线看 | 91片网 | 日韩网站一区 | 日韩av在线网站 | 日韩视频一二三区 | 日韩专区一区二区 | 亚洲在线网址 | 久久综合久久综合这里只有精品 | 国产精品久久久久久久婷婷 | 视频在线观看91 | 久久精品综合视频 | 日韩理论影院 | www国产精品com | 午夜精品视频在线 | 96亚洲精品久久 | 国产精品毛片久久久久久 | 91看国产| 麻豆视频在线看 | 精品国产一区二区三区四区在线观看 | 成人av在线网址 | 精品久久久久久亚洲 | 久久精品视频免费播放 | 日韩丝袜 | 亚洲作爱视频 | 九九九热精品免费视频观看网站 | 日韩肉感妇bbwbbwbbw | 国产日韩欧美网站 | 九九色视频 | 国产日韩欧美在线影视 | 91国内在线| 国产免费av一区二区三区 | 国内精品免费久久影院 | 欧美与欧洲交xxxx免费观看 | 狠狠色香婷婷久久亚洲精品 | 日韩欧美在线综合网 | 99c视频在线 | 国产精品mm | 国产色资源 | av天天色 | japanesexxxhd奶水 91在线精品一区二区 | 国产麻豆视频网站 | 中文av网站| 91av在线免费播放 | 91网址在线观看 | 精品国产伦一区二区三区观看说明 | 久久艹影院 | 天堂va在线高清一区 | 69视频国产 | 亚洲色图av | 免费看黄在线看 | 亚洲精品合集 | 国产精品 日韩精品 | 国产免费又爽又刺激在线观看 | 久久一区精品 | 免费人成网| 97超碰人人澡人人 | 日韩免费成人 | 日本午夜在线观看 | 久久久性| 黄色一级影院 | 国产资源中文字幕 | 91免费视频网站在线观看 | 国产黄色精品在线观看 | 97视频在线观看播放 | 国产成人一级电影 | 激情久久小说 | 在线免费试看 | 成年人在线观看 | 综合色在线观看 | 天天插综合| 久久免费视频这里只有精品 | 欧美日韩xxxxx | 国产免费午夜 | 91精品国产麻豆国产自产影视 | 四虎www.| 国产亚洲精品久久久久5区 成人h电影在线观看 | 91精品视频一区二区三区 | 国产手机精品视频 | 成人久久综合 | 亚州国产视频 | 久久久久久久久久久久电影 | 国内视频在线 | 97高清视频 | 天堂资源在线观看视频 | 四虎影视成人精品国库在线观看 | 久久伊人精品一区二区三区 | 亚洲精品久久激情国产片 | 亚洲区另类春色综合小说校园片 | 午夜视频免费在线观看 | 91在线视频在线 | 91精品资源 | 国产精品成人av电影 | 日韩r级电影在线观看 | 亚洲电影毛片 | 久久综合欧美 | 国产成人在线精品 | 毛片网站在线观看 | 国产精品乱码一区二区视频 | 国产视频不卡一区 | 六月丁香六月婷婷 | 91精品毛片| 日韩一级电影网站 | 精品久久国产精品 | 久久99亚洲网美利坚合众国 | 国产精品99久久久久 | 国产精品成人自产拍在线观看 | 亚洲黄色在线 | 99国内精品久久久久久久 | 免费在线黄色av | 最新中文在线视频 | 久久亚洲私人国产精品va | 国产精品igao视频网网址 | 日韩国产欧美在线播放 | 国产高清无av久久 | 成 人 黄 色 免费播放 | 免费a一级 | 国产精品一区二区免费在线观看 | 操夜夜操| 福利视频 | 日韩在线高清 | 中文乱码视频在线观看 | 手机在线看a | www.亚洲激情.com | 久久精品—区二区三区 | 久久伊人精品天天 | 欧美巨大 | 国产黄色片一级三级 | 99精品久久精品一区二区 | 国产精品久久久久久久7电影 | 高清av在线| 亚洲狠狠婷婷综合久久久 | 蜜臀av在线一区二区三区 | 欧美日韩大片在线观看 | 看片网站黄色 | 日韩精品一区在线观看 | 国产精品va在线 | 日韩欧美精选 | 96视频在线 | 欧美日韩一区二区免费在线观看 | 天天爱综合 | 日韩日韩日韩日韩 | 在线观看一级视频 | 久久国内免费视频 | 欧美精品一区二区三区四区在线 | 中文字幕国产精品一区二区 | 成人性生交大片免费观看网站 | 五月婷婷综合色拍 | 美女视频黄免费 | 久久精品99视频 | 亚洲砖区区免费 | 人人草在线视频 | 超碰精品在线 | 天天射狠狠干 | 亚洲国产欧洲综合997久久, | 国内精品久久久久久久97牛牛 | 在线 国产 亚洲 欧美 | 五月天久久婷 | 午夜视频二区 | 日韩高清一二三区 | 国产明星视频三级a三级点| 欧美亚洲精品一区 | 91超级碰| 中文字幕在线资源 | 成人av中文字幕 | 69av在线播放| 人人插人人玩 | 国产美女在线免费观看 | 久久观看免费视频 | 国产精品免费在线视频 | 欧美日韩破处 | 欧美日韩裸体免费视频 | 人人澡人人添人人爽一区二区 | 亚洲在线网址 | 天天天天干 | 在线观看mv的中文字幕网站 | 国产日产精品一区二区三区四区的观看方式 | 欧美日产一区 | 亚洲精品欧美专区 | 日韩在线免费播放 | 国产一区二区三区免费在线观看 | 亚洲欧美日韩国产一区二区三区 | 操操操人人人 | 成人宗合网 | 91漂亮少妇露脸在线播放 | 91大神电影| 2019精品手机国产品在线 | 中文字幕日韩高清 | 99精品国产亚洲 | 欧美另类色图 | 色偷偷97 | 色福利网 | 人人爱天天操 | 久久精品国产亚洲精品 | 在线看片91 | 看av在线 | 探花视频在线观看免费版 | 国产亚洲精品久久久久动 | 欧美日韩在线视频免费 | 色在线国产 | 麻豆久久 | 日韩综合色 | 2020天天干夜夜爽 | 免费在线观看av网址 | 黄色av一级片 | 国产亚洲在线视频 | 最新中文字幕在线资源 | 婷婷在线综合 | 玖玖在线播放 | www.夜夜操.com | 免费成人在线观看视频 | 国产不卡高清 | 二区视频在线观看 | 亚洲另类视频在线 | 亚洲每日更新 | 24小时日本在线www免费的 | 激情婷婷综合网 | 中文字幕在线观看视频一区 | 91免费版成人 | 五月婷婷综合激情网 | 日日夜夜网 | 午夜123 | 黄色毛片视频免费观看中文 | 综合网伊人 | 色综合久久久久久久 | 超碰99在线| 成人蜜桃 | 午夜视频亚洲 | av一级在线 | 亚洲国产午夜 | 干干干操操操 | 91男人影院 | 欧美日韩视频在线观看免费 | 天天玩天天干 | 99久久精品国 | 欧美精品久久久久久 | 欧美日韩午夜在线 | 国产午夜精品福利视频 |