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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32采集温湿度

發布時間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32采集温湿度 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 寫作目的
  • 一、I2C基礎
    • 1.什么是I2C協議?
    • I2C協議的物理層
    • I2C的協議層
  • 二、采集溫濕度
    • 1.使用儀器:
    • 2.代碼實現
    • 實現效果
  • 總結


寫作目的

幫助讀者掌握I2C總線通信協議,使用STM32F103完成基于I2C協議的AHT20溫濕度傳感器的數據采集,并將采集的溫度-濕度值通過串口輸出。
編程實現:每隔2秒鐘采集一次溫濕度數據,并通過串口發送到上位機(win10)。


一、I2C基礎

1.什么是I2C協議?

在嵌入式系統內部電路中,眾多功能需要用到許多集成電路IC來實現,包括主控器件微控制器和眾多外圍設備器件,如:PLL合成器、非易失性存儲器、音頻處理器、視頻處理器、屏幕顯示器等。這些器件相互之間要傳遞數據信息,那么就需要用導線相互連接,如此眾多IC器件的互連,勢必導致芯片引腳、PCB走線以及連接導線變得數量龐大,錯綜復雜,這會導致IC芯片體積增大、功耗增大、成本增加,給IC芯片設計制造廠商帶來不利影響,同時也給IC芯片應用廠商和應用工程師們造成極大不便。

1982年,從事電燈泡、電剃刀、電唱機、收音機、電視機等研發制造已久的荷蘭飛利浦公司,為解決電視機的上述問題,從而發明了一種集成電路互連通信電路,該電路的優點就是僅用兩條線就可以實現芯片之間的互連通信,使硬件電路最簡化,硬件效益最大化,給芯片設計制造者和芯片應用者帶來極大益處。

飛利浦公司給這種集成電路互連通信電路命名為Inter-Integrated Circuit,簡稱為Inter-IC,或I2C(數字“2”為上標,讀作英文讀作“I squared C”,中文讀作“I平方C”)。

I2C協議的物理層

所有主從器件的SDA線全部連在一根線上,這些器件分時占用這根公共數據線,來實現兩兩互傳數據,那么SDA符合了數據總線的特征;所有主從器件的SCL線全部連在一根線上,它們分時占用這根公共時鐘線,來實現兩兩互傳時鐘,那么SCL符合了時鐘總線的特征。

因為I2C中的兩根導線(SDA和SCL)構成了兩根Bus,實現了Bus的功能;由于I2C電路能實現Bus的功能,故把I2C 電路稱為 I2C-bus,中文叫I2C總線(I2C總線是一個兩線總線)。

I2C的協議層

主要是定義了通訊的起始和停止信號、數據有效性、響應、仲裁、時鐘同步和地址廣播等

通訊的起始和停止信號

數據有效性

從圖中可以看出I2C在通訊的時候,只有在SCL處于高電平時,SDA的數據傳輸才是有效的。SDA 信號線是用于傳輸數據,SCL 信號線是保證數據同步。

響應

當SDA傳輸數據后,接收方對接受到的數據進行一個應答。如果希望繼續進行傳輸數據,則回應應答信號(低電平),否則回應非應答信號(高電平)。

I2C總線的特點
①只需要兩條總線;串行數據線(SDA)和串行時鐘線(SCL)。

②連接到總線的每個設備都是可通過唯一地址進行軟件尋址的,并且始終存在簡單的控制器/目標關系;控制器可以作為控制器發送器或控制器接收器運行。

③這是一種真正的多控制器總線,包括沖突檢測和仲裁,以防止兩個或更多控制器同時啟動數據傳輸時出現數據損壞。

④面向8位的串行雙向數據傳輸速率在標準模式下最高可達100 kbit/s,在快速模式下最高可達400 kbit/s,在快速增強模式下最高可達1 Mbit/s,在高速模式下最高可達3.4 Mbit/s。

⑤串行、面向8位、單向數據傳輸,在超快速模式下最高可達5 Mbit/s。

⑥片內濾波可抑制總線數據線上的尖峰信號,以保持數據完整性。

⑦可以連接到同一總線的IC數量僅受最大總線電容的限制。在某些條件下(如簡化SCL時鐘頻率、增加輸出驅動力、增加緩沖器件、改進上拉電阻等),可以允許更大的電容。

⑧極低的電流消耗,高抗擾度,寬電源電壓范圍,寬工作溫度范圍。

⑨硬件的最簡化,給芯片設計師減輕了節省輸出引腳的壓力,給芯片應用商帶來了成本降低、空間減小、測試方便、易于升級等諸多好處,為芯片應用工程師的產品開發帶來靈活多樣的選擇方案、方便快捷的調試手段、開發周期的縮短、開發效率的提高等好處。

二、采集溫濕度

1.使用儀器:

AHT20芯片
具體信息請到官方下載對應產品介紹文檔,資料鏈接如下
http://www.aosong.com/class-36.html

硬件連接:

產品實拍:

對應管腳:

實物連接:

ATH20 —— STM32

VDD——5V
SDA——B7
GND——GND
SCL——B6
(GND和5V任意模塊都可以)

2.代碼實現

本次實驗將會使用到KEIL的固件庫模板,如果你還不會搭建固件庫模板請看這篇文章:固件庫模板

或者固件庫教程

main.c

#include "delay.h" #include "usart.h" #include "bsp_i2c.h"int main(void) { delay_init(); //?óê±oˉêy3?ê??ˉ uart_init(115200); //′??ú3?ê??ˉ?a115200IIC_Init();while(1){printf("?aê?2aá?£???é?μè£o");read_AHT20_once();delay_ms(1500);} }

然后把以下代碼文件和main.c放到一起
usart.c

#include "sys.h" #include "usart.h"//STM32F103o?D?°?ày3ì //?aoˉêy°?±?ày3ì /********** mcudev.taobao.com 3??· ********/// //è?1?ê1ó?ucos,?ò°üà¨????μ?í·???t?′?é. #if SYSTEM_SUPPORT_UCOS #include "includes.h" //ucos ê1ó? #endif // //STM32?a·¢°? //′??ú13?ê??ˉ // // //?óè?ò???′ú??,?§3?printfoˉêy,??2?Dèòa????use MicroLIB #if 1 #pragma import(__use_no_semihosting) //±ê×??aDèòaμ??§3?oˉêy struct __FILE { int handle; }; FILE __stdout; //?¨ò?_sys_exit()ò?±ü?aê1ó?°??÷?ú?£ê? void _sys_exit(int x) { x = x; } //???¨ò?fputcoˉêy int fputc(int ch, FILE *f) { while((USART1->SR&0X40)==0);//?-?··¢?í,?±μ?·¢?ííê±? USART1->DR = (u8) ch; return ch; } #endif /*ê1ó?microLibμ?·?·¨*//* int fputc(int ch, FILE *f) {USART_SendData(USART1, (uint8_t) ch);while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) {} return ch; } int GetKey (void) { while (!(USART1->SR & USART_FLAG_RXNE));return ((int)(USART1->DR & 0x1FF)); } */#if EN_USART1_RX //è?1?ê1?üá??óê? //′??ú1?D??·t??3ìDò //×¢òa,?áè?USARTx->SR?ü±ü?a?a??????μ?′í?ó u8 USART_RX_BUF[USART_REC_LEN]; //?óê??o3?,×?′óUSART_REC_LEN??×??ú. //?óê?×′ì? //bit15£? ?óê?íê3é±ê?? //bit14£? ?óê?μ?0x0d //bit13~0£? ?óê?μ?μ?óDD§×??úêy?? u16 USART_RX_STA=0; //?óê?×′ì?±ê?? void uart_init(u32 bound){//GPIO???úéè??GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //ê1?üUSART1£?GPIOAê±?ó//USART1_TX PA.9GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //?′ó?í?íìê?3?GPIO_Init(GPIOA, &GPIO_InitStructure);//USART1_RX PA.10GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//????ê?è?GPIO_Init(GPIOA, &GPIO_InitStructure); //Usart1 NVIC ????NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//?à??ó??è??3NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //×óó??è??3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQí¨μàê1?üNVIC_Init(&NVIC_InitStructure); //?ù?Y???¨μ?2?êy3?ê??ˉVIC??′??÷//USART 3?ê??ˉéè??USART_InitStructure.USART_BaudRate = bound;//ò?°?éè???a9600;USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×?3¤?a8??êy?Y??ê?USART_InitStructure.USART_StopBits = USART_StopBits_1;//ò???í£?1??USART_InitStructure.USART_Parity = USART_Parity_No;//?T????D£?é??USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//?Tó2?têy?Yá÷????USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //ê?·¢?£ê?USART_Init(USART1, &USART_InitStructure); //3?ê??ˉ′??úUSART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//?a???D??USART_Cmd(USART1, ENABLE); //ê1?ü′??ú }void USART1_IRQHandler(void) //′??ú1?D??·t??3ìDò{u8 Res; #ifdef OS_TICKS_PER_SEC //è?1?ê±?ó?ú??êy?¨ò?á?,?μ?÷òaê1ó?ucosIIá?.OSIntEnter(); #endifif(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //?óê??D??(?óê?μ?μ?êy?Y±?D?ê?0x0d 0x0a?á?2){Res =USART_ReceiveData(USART1);//(USART1->DR); //?áè??óê?μ?μ?êy?Yif((USART_RX_STA&0x8000)==0)//?óê??′íê3é{if(USART_RX_STA&0x4000)//?óê?μ?á?0x0d{if(Res!=0x0a)USART_RX_STA=0;//?óê?′í?ó,??D??aê?else USART_RX_STA|=0x8000; //?óê?íê3éá? }else //?1??ê?μ?0X0D{ if(Res==0x0d)USART_RX_STA|=0x4000;else{USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;USART_RX_STA++;if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//?óê?êy?Y′í?ó,??D??aê??óê? } }} } #ifdef OS_TICKS_PER_SEC //è?1?ê±?ó?ú??êy?¨ò?á?,?μ?÷òaê1ó?ucosIIá?.OSIntExit(); #endif } #endif

usart.h

#ifndef __USART_H #define __USART_H #include "stdio.h" #include "sys.h" //STM32F103o?D?°?ày3ì //?aoˉêy°?±?ày3ì /********** mcudev.taobao.com 3??· ********/// //STM32?a·¢°? //′??ú13?ê??ˉ #define USART_REC_LEN 200 //?¨ò?×?′ó?óê?×??úêy 200 #define EN_USART1_RX 1 //ê1?ü£¨1£?/???1£¨0£?′??ú1?óê?extern u8 USART_RX_BUF[USART_REC_LEN]; //?óê??o3?,×?′óUSART_REC_LEN??×??ú.??×??ú?a??DD·? extern u16 USART_RX_STA; //?óê?×′ì?±ê?? //è?1???′??ú?D???óê?£???2?òa×¢êíò???oê?¨ò? void uart_init(u32 bound); #endif

bsp_i2c.c

#include "bsp_i2c.h" #include "delay.h"uint8_t ack_status=0; uint8_t readByte[6]; uint8_t AHT20_status=0;uint32_t H1=0; //Humility uint32_t T1=0; //Temperatureuint8_t AHT20_OutData[4]; uint8_t AHT20sendOutData[10] = {0xFA, 0x06, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF};void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE ); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; //í?íìê?3?GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);IIC_SCL=1;IIC_SDA=1;} //2úéúIIC?eê?D?o? void IIC_Start(void) {SDA_OUT(); //sda??ê?3?IIC_SDA=1; IIC_SCL=1;delay_us(4);IIC_SDA=0;//START:when CLK is high,DATA change form high to low delay_us(4);IIC_SCL=0;//?ˉ×?I2C×ü??£?×?±?·¢?í?ò?óê?êy?Y } //2úéúIICí£?1D?o? void IIC_Stop(void) {SDA_OUT();//sda??ê?3?IIC_SCL=0;IIC_SDA=0;//STOP:when CLK is high DATA change form low to highdelay_us(4);IIC_SCL=1; IIC_SDA=1;//·¢?íI2C×ü???áê?D?o?delay_us(4); } //μè′yó|′eD?o?μ?à′ //·μ???μ£o1£??óê?ó|′eê§°ü // 0£??óê?ó|′e3é1| u8 IIC_Wait_Ack(void) {u8 ucErrTime=0;SDA_IN(); //SDAéè???aê?è? IIC_SDA=1;delay_us(1); IIC_SCL=1;delay_us(1); while(READ_SDA){ucErrTime++;if(ucErrTime>250){IIC_Stop();return 1;}}IIC_SCL=0;//ê±?óê?3?0 return 0; } //2úéúACKó|′e void IIC_Ack(void) {IIC_SCL=0;SDA_OUT();IIC_SDA=0;delay_us(2);IIC_SCL=1;delay_us(2);IIC_SCL=0; } //2?2úéúACKó|′e void IIC_NAck(void) {IIC_SCL=0;SDA_OUT();IIC_SDA=1;delay_us(2);IIC_SCL=1;delay_us(2);IIC_SCL=0; } //IIC·¢?íò???×??ú //·μ??′ó?úóD?Tó|′e //1£?óDó|′e //0£??Tó|′e void IIC_Send_Byte(u8 txd) { u8 t; SDA_OUT(); IIC_SCL=0;//à-μíê±?ó?aê?êy?Y′?ê?for(t=0;t<8;t++){ IIC_SDA=(txd&0x80)>>7;txd<<=1; delay_us(2); //??TEA5767?aèy???óê±??ê?±?D?μ?IIC_SCL=1;delay_us(2); IIC_SCL=0; delay_us(2);} } //?á1??×??ú£?ack=1ê±£?·¢?íACK£?ack=0£?·¢?ínACK u8 IIC_Read_Byte(unsigned char ack) {unsigned char i,receive=0;SDA_IN();//SDAéè???aê?è?for(i=0;i<8;i++ ){IIC_SCL=0; delay_us(2);IIC_SCL=1;receive<<=1;if(READ_SDA)receive++; delay_us(1); } if (!ack)IIC_NAck();//·¢?ínACKelseIIC_Ack(); //·¢?íACK return receive; }void IIC_WriteByte(uint16_t addr,uint8_t data,uint8_t device_addr) {IIC_Start(); if(device_addr==0xA0) //eepromμ??·′óóú1×??úIIC_Send_Byte(0xA0 + ((addr/256)<<1));//·¢?í??μ??·elseIIC_Send_Byte(device_addr); //·¢?÷?tμ??·IIC_Wait_Ack(); IIC_Send_Byte(addr&0xFF); //·¢?íμíμ??·IIC_Wait_Ack(); IIC_Send_Byte(data); //·¢?í×??ú IIC_Wait_Ack(); IIC_Stop();//2úéúò???í£?1ì??t if(device_addr==0xA0) //delay_ms(10);elsedelay_us(2); }uint16_t IIC_ReadByte(uint16_t addr,uint8_t device_addr,uint8_t ByteNumToRead) //?á??′??÷?ò?áêy?Y { uint16_t data;IIC_Start(); if(device_addr==0xA0)IIC_Send_Byte(0xA0 + ((addr/256)<<1));elseIIC_Send_Byte(device_addr); IIC_Wait_Ack();IIC_Send_Byte(addr&0xFF); //·¢?íμíμ??·IIC_Wait_Ack(); IIC_Start(); IIC_Send_Byte(device_addr+1); //·¢?÷?tμ??·IIC_Wait_Ack();if(ByteNumToRead == 1)//LM75???èêy?Y?a11bit{data=IIC_Read_Byte(0);}else{data=IIC_Read_Byte(1);data=(data<<8)+IIC_Read_Byte(0);}IIC_Stop();//2úéúò???í£?1ì??t return data; }/********** *é???2?·??aIO?ú?£?éI2C???? * *′ó?aò????aê??aAHT20μ?????I2C *oˉêy??óDIICoíI2Cμ???±e£???×¢òa£?£?£?£?£? * *2020/2/23×?oóDT??è??ú * ***********/ void read_AHT20_once(void) {delay_ms(10);reset_AHT20();delay_ms(10);init_AHT20();delay_ms(10);startMeasure_AHT20();delay_ms(80);read_AHT20();delay_ms(5); }void reset_AHT20(void) {I2C_Start();I2C_WriteByte(0x70);ack_status = Receive_ACK();if(ack_status) printf("1");else printf("1-n-");I2C_WriteByte(0xBA);ack_status = Receive_ACK();if(ack_status) printf("2");else printf("2-n-");I2C_Stop();/*AHT20_OutData[0] = 0;AHT20_OutData[1] = 0;AHT20_OutData[2] = 0;AHT20_OutData[3] = 0;*/ }void init_AHT20(void) {I2C_Start();I2C_WriteByte(0x70);ack_status = Receive_ACK();if(ack_status) printf("3");else printf("3-n-"); I2C_WriteByte(0xE1);ack_status = Receive_ACK();if(ack_status) printf("4");else printf("4-n-");I2C_WriteByte(0x08);ack_status = Receive_ACK();if(ack_status) printf("5");else printf("5-n-");I2C_WriteByte(0x00);ack_status = Receive_ACK();if(ack_status) printf("6");else printf("6-n-");I2C_Stop(); }void startMeasure_AHT20(void) {//------------I2C_Start();I2C_WriteByte(0x70);ack_status = Receive_ACK();if(ack_status) printf("7");else printf("7-n-");I2C_WriteByte(0xAC);ack_status = Receive_ACK();if(ack_status) printf("8");else printf("8-n-");I2C_WriteByte(0x33);ack_status = Receive_ACK();if(ack_status) printf("9");else printf("9-n-");I2C_WriteByte(0x00);ack_status = Receive_ACK();if(ack_status) printf("10");else printf("10-n-");I2C_Stop(); }void read_AHT20(void) {uint8_t i;for(i=0; i<6; i++){readByte[i]=0;}//-------------I2C_Start();I2C_WriteByte(0x71);ack_status = Receive_ACK();readByte[0]= I2C_ReadByte();Send_ACK();readByte[1]= I2C_ReadByte();Send_ACK();readByte[2]= I2C_ReadByte();Send_ACK();readByte[3]= I2C_ReadByte();Send_ACK();readByte[4]= I2C_ReadByte();Send_ACK();readByte[5]= I2C_ReadByte();SendNot_Ack();//Send_ACK();I2C_Stop();//--------------if( (readByte[0] & 0x68) == 0x08 ){H1 = readByte[1];H1 = (H1<<8) | readByte[2];H1 = (H1<<8) | readByte[3];H1 = H1>>4;H1 = (H1*1000)/1024/1024;T1 = readByte[3];T1 = T1 & 0x0000000F;T1 = (T1<<8) | readByte[4];T1 = (T1<<8) | readByte[5];T1 = (T1*2000)/1024/1024 - 500;AHT20_OutData[0] = (H1>>8) & 0x000000FF;AHT20_OutData[1] = H1 & 0x000000FF;AHT20_OutData[2] = (T1>>8) & 0x000000FF;AHT20_OutData[3] = T1 & 0x000000FF;}else{AHT20_OutData[0] = 0xFF;AHT20_OutData[1] = 0xFF;AHT20_OutData[2] = 0xFF;AHT20_OutData[3] = 0xFF;printf("ê§°üá?");}printf("\r\n");printf("???è:%d%d.%d",T1/100,(T1/10)%10,T1%10);printf("êa?è:%d%d.%d",H1/100,(H1/10)%10,H1%10);printf("\r\n"); }uint8_t Receive_ACK(void) {uint8_t result=0;uint8_t cnt=0;IIC_SCL = 0;SDA_IN(); delay_us(4);IIC_SCL = 1;delay_us(4);while(READ_SDA && (cnt<100)){cnt++;}IIC_SCL = 0;delay_us(4);if(cnt<100){result=1;}return result; }void Send_ACK(void) {SDA_OUT();IIC_SCL = 0;delay_us(4);IIC_SDA = 0;delay_us(4);IIC_SCL = 1;delay_us(4);IIC_SCL = 0;delay_us(4);SDA_IN(); }void SendNot_Ack(void) {SDA_OUT();IIC_SCL = 0;delay_us(4);IIC_SDA = 1;delay_us(4);IIC_SCL = 1;delay_us(4);IIC_SCL = 0;delay_us(4);IIC_SDA = 0;delay_us(4); }void I2C_WriteByte(uint8_t input) {uint8_t i;SDA_OUT();for(i=0; i<8; i++){IIC_SCL = 0;delay_ms(5);if(input & 0x80){IIC_SDA = 1;//delaymm(10);}else{IIC_SDA = 0;//delaymm(10);}IIC_SCL = 1;delay_ms(5);input = (input<<1);}IIC_SCL = 0;delay_us(4);SDA_IN();delay_us(4); } uint8_t I2C_ReadByte(void) {uint8_t resultByte=0;uint8_t i=0, a=0;IIC_SCL = 0;SDA_IN();delay_ms(4);for(i=0; i<8; i++){IIC_SCL = 1;delay_ms(3);a=0;if(READ_SDA){a=1;}else{a=0;}//resultByte = resultByte | a;resultByte = (resultByte << 1) | a;IIC_SCL = 0;delay_ms(3);}SDA_IN();delay_ms(10);return resultByte; }void set_AHT20sendOutData(void) {/* --------------------------* 0xFA 0x06 0x0A temperature(2 Bytes) humility(2Bytes) short Address(2 Bytes)* And Check (1 byte)* -------------------------*/AHT20sendOutData[3] = AHT20_OutData[0];AHT20sendOutData[4] = AHT20_OutData[1];AHT20sendOutData[5] = AHT20_OutData[2];AHT20sendOutData[6] = AHT20_OutData[3];// AHT20sendOutData[7] = (drf1609.shortAddress >> 8) & 0x00FF; // AHT20sendOutData[8] = drf1609.shortAddress & 0x00FF;// AHT20sendOutData[9] = getXY(AHT20sendOutData,10); }void I2C_Start(void) {SDA_OUT();IIC_SCL = 1;delay_ms(4);IIC_SDA = 1;delay_ms(4);IIC_SDA = 0;delay_ms(4);IIC_SCL = 0;delay_ms(4); }void I2C_Stop(void) {SDA_OUT();IIC_SDA = 0;delay_ms(4);IIC_SCL = 1;delay_ms(4);IIC_SDA = 1;delay_ms(4); }

bsp_i2c.h

在這里插入代#ifndef __BSP_I2C_H #define __BSP_I2C_H#include "sys.h" #include "delay.h" #include "usart.h" //ê1ó?IIC1 1ò??M24C02,OLED,LM75AD,HT1382 PB6,PB7#define SDA_IN() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;} #define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}//IO2ù×÷oˉêy #define IIC_SCL PBout(6) //SCL #define IIC_SDA PBout(7) //SDA #define READ_SDA PBin(7) //ê?è?SDA //IIC?ùóD2ù×÷oˉêy void IIC_Init(void); //3?ê??ˉIICμ?IO?ú void IIC_Start(void); //·¢?íIIC?aê?D?o? void IIC_Stop(void); //·¢?íIICí£?1D?o? void IIC_Send_Byte(u8 txd); //IIC·¢?íò???×??ú u8 IIC_Read_Byte(unsigned char ack);//IIC?áè?ò???×??ú u8 IIC_Wait_Ack(void); //IICμè′yACKD?o? void IIC_Ack(void); //IIC·¢?íACKD?o? void IIC_NAck(void); //IIC2?·¢?íACKD?o?void IIC_WriteByte(uint16_t addr,uint8_t data,uint8_t device_addr); uint16_t IIC_ReadByte(uint16_t addr,uint8_t device_addr,uint8_t ByteNumToRead);//??′??÷μ??·£??÷?tμ??·£?òa?áμ?×??úêy void read_AHT20_once(void); void reset_AHT20(void); void init_AHT20(void); void startMeasure_AHT20(void); void read_AHT20(void); uint8_t Receive_ACK(void); void Send_ACK(void); void SendNot_Ack(void); void I2C_WriteByte(uint8_t input); uint8_t I2C_ReadByte(void); void set_AHT20sendOutData(void); void I2C_Start(void); void I2C_Stop(void); #endif

delay.c

#include "delay.h" #include "sys.h"//STM32F103o?D?°?ày3ì //?aoˉêy°?±?ày3ì /********** mcudev.taobao.com 3??· ********/// //è?1?ê1ó?ucos,?ò°üà¨????μ?í·???t?′?é. #if SYSTEM_SUPPORT_UCOS #include "includes.h" //ucos ê1ó? #endif // //STM32?a·¢°? //ê1ó?SysTickμ???í¨??êy?£ê????ó3ù??DD1üàí //°üà¨delay_us,delay_ms// static u8 fac_us=0;//us?óê±±?3?êy static u16 fac_ms=0;//ms?óê±±?3?êy #ifdef OS_CRITICAL_METHOD //è?1?OS_CRITICAL_METHOD?¨ò?á?,?μ?÷ê1ó?ucosIIá?. //systick?D??·t??oˉêy,ê1ó?ucosê±ó?μ? void SysTick_Handler(void) { OSIntEnter(); //??è??D??OSTimeTick(); //μ÷ó?ucosμ?ê±?ó·t??3ìDò OSIntExit(); //′¥·¢è????D??èí?D?? } #endif//3?ê??ˉ?ó3ùoˉêy //μ±ê1ó?ucosμ?ê±oò,′?oˉêy?á3?ê??ˉucosμ?ê±?ó?ú?? //SYSTICKμ?ê±?ó1ì?¨?aHCLKê±?óμ?1/8 //SYSCLK:?μí3ê±?ó void delay_init() {#ifdef OS_CRITICAL_METHOD //è?1?OS_CRITICAL_METHOD?¨ò?á?,?μ?÷ê1ó?ucosIIá?.u32 reload; #endifSysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //????ía2?ê±?ó HCLK/8fac_us=SystemCoreClock/8000000; //?a?μí3ê±?óμ?1/8 #ifdef OS_CRITICAL_METHOD //è?1?OS_CRITICAL_METHOD?¨ò?á?,?μ?÷ê1ó?ucosIIá?.reload=SystemCoreClock/8000000; //?????óμ???êy′?êy μ¥???aK reload*=1000000/OS_TICKS_PER_SEC;//?ù?YOS_TICKS_PER_SECéè?¨ò?3?ê±??//reload?a24????′??÷,×?′ó?μ:16777216,?ú72M??,??o?1.86s×óóò fac_ms=1000/OS_TICKS_PER_SEC;//′ú±íucos?éò??óê±μ?×?éùμ¥?? SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk; //?a??SYSTICK?D??SysTick->LOAD=reload; //??1/OS_TICKS_PER_SEC???D??ò?′? SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //?a??SYSTICK #elsefac_ms=(u16)fac_us*1000;//·?ucos??,′ú±í????msDèòaμ?systickê±?óêy #endif } #ifdef OS_CRITICAL_METHOD //ê1ó?á?ucos //?óê±nus //nus?aòa?óê±μ?usêy. void delay_us(u32 nus) { u32 ticks;u32 told,tnow,tcnt=0;u32 reload=SysTick->LOAD; //LOADμ??μ ticks=nus*fac_us; //Dèòaμ??ú??êy tcnt=0;told=SysTick->VAL; //????è?ê±μ???êy?÷?μwhile(1){tnow=SysTick->VAL; if(tnow!=told){ if(tnow<told)tcnt+=told-tnow;//?aà?×¢òaò???SYSTICKê?ò???μY??μ???êy?÷?í?éò?á?.else tcnt+=reload-tnow+told; told=tnow;if(tcnt>=ticks)break;//ê±??3?1y/μèóúòa?ó3ùμ?ê±??,?òí?3?.} }; } //?óê±nms //nms:òa?óê±μ?msêy void delay_ms(u16 nms) { if(OSRunning==TRUE)//è?1?osò??-?ú?üá? { if(nms>=fac_ms)//?óê±μ?ê±??′óóúucosμ?×?éùê±???ü?ú {OSTimeDly(nms/fac_ms);//ucos?óê±}nms%=fac_ms; //ucosò??-?T·¨ìá1??a?′D?μ??óê±á?,2éó???í¨·?ê??óê± }delay_us((u32)(nms*1000)); //??í¨·?ê??óê±,′?ê±ucos?T·¨???ˉμ÷?è. } #else//2?ó?ucosê± //?óê±nus //nus?aòa?óê±μ?usêy. void delay_us(u32 nus) { u32 temp; SysTick->LOAD=nus*fac_us; //ê±???ó?? SysTick->VAL=0x00; //??????êy?÷SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //?aê?μ1êy do{temp=SysTick->CTRL;}while(temp&0x01&&!(temp&(1<<16)));//μè′yê±??μ?′? SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //1?±???êy?÷SysTick->VAL =0X00; //??????êy?÷ } //?óê±nms //×¢òanmsμ?·??§ //SysTick->LOAD?a24????′??÷,?ùò?,×?′ó?óê±?a: //nms<=0xffffff*8*1000/SYSCLK //SYSCLKμ¥???aHz,nmsμ¥???ams //??72Mì??t??,nms<=1864 void delay_ms(u16 nms) { u32 temp; SysTick->LOAD=(u32)nms*fac_ms;//ê±???ó??(SysTick->LOAD?a24bit)SysTick->VAL =0x00; //??????êy?÷SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //?aê?μ1êy do{temp=SysTick->CTRL;}while(temp&0x01&&!(temp&(1<<16)));//μè′yê±??μ?′? SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //1?±???êy?÷SysTick->VAL =0X00; //??????êy?÷ } #endif

delay.h

#ifndef __DELAY_H #define __DELAY_H #include "sys.h" // //STM32F103o?D?°?ày3ì //?aoˉêy°?±?ày3ì /********** mcudev.taobao.com 3??· ********///ê1ó?SysTickμ???í¨??êy?£ê????ó3ù??DD1üàí //°üà¨delay_us,delay_ms// void delay_init(void); void delay_ms(u16 nms); void delay_us(u32 nus);#endif

sys.c

#include "sys.h"//STM32F103o?D?°?ày3ì //?aoˉêy°?±?ày3ì /********** mcudev.taobao.com 3??· ********/// //STM32?a·¢°? //?μí3?D??·?×ééè???ˉ //******************************************************************************** void NVIC_Configuration(void) {NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //éè??NVIC?D??·?×é2:2???à??ó??è??£?2???ìó|ó??è??}

sys.h

#ifndef __SYS_H #define __SYS_H #include "stm32f10x.h" // //STM32F103o?D?°?ày3ì //?aoˉêy°?±?ày3ì /********** mcudev.taobao.com 3??· ********/// //0,2??§3?ucos //1,?§3?ucos #define SYSTEM_SUPPORT_UCOS 0 //?¨ò??μí3???t?Dê?·??§3?UCOS//??′?2ù×÷,êμ??51àà??μ?GPIO????1|?ü //??ì?êμ??????,2???<<CM3è¨ít????>>μú????(87ò3~92ò3). //IO?ú2ù×÷oê?¨ò? #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) #define MEM_ADDR(addr) *((volatile unsigned long *)(addr)) #define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum)) //IO?úμ??·ó3é? #define GPIOA_ODR_Addr (GPIOA_BASE+12) //0x4001080C #define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C #define GPIOC_ODR_Addr (GPIOC_BASE+12) //0x4001100C #define GPIOD_ODR_Addr (GPIOD_BASE+12) //0x4001140C #define GPIOE_ODR_Addr (GPIOE_BASE+12) //0x4001180C #define GPIOF_ODR_Addr (GPIOF_BASE+12) //0x40011A0C #define GPIOG_ODR_Addr (GPIOG_BASE+12) //0x40011E0C #define GPIOA_IDR_Addr (GPIOA_BASE+8) //0x40010808 #define GPIOB_IDR_Addr (GPIOB_BASE+8) //0x40010C08 #define GPIOC_IDR_Addr (GPIOC_BASE+8) //0x40011008 #define GPIOD_IDR_Addr (GPIOD_BASE+8) //0x40011408 #define GPIOE_IDR_Addr (GPIOE_BASE+8) //0x40011808 #define GPIOF_IDR_Addr (GPIOF_BASE+8) //0x40011A08 #define GPIOG_IDR_Addr (GPIOG_BASE+8) //0x40011E08 //IO?ú2ù×÷,????μ¥ò?μ?IO?ú! //è·±£nμ??μD?óú16! #define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) //ê?3? #define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) //ê?è? #define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //ê?3? #define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) //ê?è? #define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) //ê?3? #define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) //ê?è? #define PDout(n) BIT_ADDR(GPIOD_ODR_Addr,n) //ê?3? #define PDin(n) BIT_ADDR(GPIOD_IDR_Addr,n) //ê?è? #define PEout(n) BIT_ADDR(GPIOE_ODR_Addr,n) //ê?3? #define PEin(n) BIT_ADDR(GPIOE_IDR_Addr,n) //ê?è?#define PFout(n) BIT_ADDR(GPIOF_ODR_Addr,n) //ê?3? #define PFin(n) BIT_ADDR(GPIOF_IDR_Addr,n) //ê?è?#define PGout(n) BIT_ADDR(GPIOG_ODR_Addr,n) //ê?3? #define PGin(n) BIT_ADDR(GPIOG_IDR_Addr,n) //ê?è?void NVIC_Configuration(void);#endif

然后把usart.c,bsp_i2c.c,delay.c,sys.c加到工程文件中,如下圖。

實現效果


總結

本次實驗中學會了一個經典接口IIC的使用方法,在實驗中體會到,作為物聯網工程師,學會閱讀各種接口協議有多么重要。IIC是一種僅用兩根線就能完成大部分數據傳輸功能的協議,但是若想提高通信速度,還是需要增加數據線數量。

stm32通過I2C接口實現溫濕度(AHT20)的采集:https://blog.csdn.net/qq_43279579/article/details/111597278

總結

以上是生活随笔為你收集整理的STM32采集温湿度的全部內容,希望文章能夠幫你解決所遇到的問題。

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

欧美日一级片 | 人人干天天射 | 久久精品欧美日韩精品 | 色婷婷97 | 欧美日本在线观看视频 | 美女福利视频在线 | 超级碰碰视频 | 久久免费中文视频 | 热久久电影 | 国产一二三四在线观看视频 | 国产伦精品一区二区三区照片91 | 欧美十八 | 国产精品久久久久久一二三四五 | 一本—道久久a久久精品蜜桃 | aaawww| 麻豆91精品| 免费高清看电视网站 | 99性视频| 超碰免费97| 超碰在线色| 综合色中文 | 中文字幕91在线 | 91资源在线视频 | 麻豆视频国产精品 | 在线观看视频在线 | 国产福利在线不卡 | 国产69精品久久app免费版 | 婷婷中文字幕综合 | av免费线看| 免费试看一区 | 欧美福利网站 | 婷婷综合 | 国产精品视频免费 | 亚洲久在线 | 色小说av | 激情综合网五月婷婷 | 日韩欧美高清不卡 | 婷婷久久一区 | 国产成人黄色在线 | 国产高清小视频 | 国产高清 不卡 | 四虎国产精品成人免费影视 | 国产成人精品一区在线 | 日日麻批40分钟视频免费观看 | av网站免费看 | 国产黄色观看 | 国产精品乱看 | 中文字幕av影院 | 又黄又爽又无遮挡的视频 | 亚洲国产成人精品久久 | 99久久精品久久久久久动态片 | 在线观看网站黄 | 国产精品久久嫩一区二区免费 | 久久久久久高潮国产精品视 | 伊人网站 | 久福利| 国产中文字幕网 | 手机av在线免费观看 | 最新av电影网址 | 国产精品久久久久婷婷二区次 | 日日夜夜天天综合 | 毛片网站免费 | 成人国产精品免费观看 | 免费av福利 | 欧美日韩国产二区三区 | 色婷婷狠狠干 | 免费观看一级特黄欧美大片 | 四虎永久精品在线 | 91视频在线网址 | 久久激情日本aⅴ | 久久亚洲免费视频 | 日本字幕网 | 91av在线播放 | 中文字幕影片免费在线观看 | 一区二区视频在线播放 | 日韩亚洲欧美中文字幕 | 手机看片久久 | av高清在线观看 | 丝袜美腿在线播放 | 西西www4444大胆视频 | 一本一道波多野毛片中文在线 | 日韩大片在线 | 手机成人在线 | 日韩在线在线 | 欧美一级片免费播放 | 91桃色在线观看视频 | 九九亚洲视频 | 国产生活一级片 | 久久久久成人精品亚洲国产 | 国产黄色电影 | 久久艹99| 色网站免费在线看 | 99视频国产精品免费观看 | 久久免费在线观看 | 91精品一 | 在线观看免费福利 | 91精彩视频 | www国产亚洲 | 最近中文国产在线视频 | 国产精品久久久久影院日本 | 亚洲影视资源 | 久久久国产网站 | 国产高清一级 | 精品国产中文字幕 | 亚洲人成人99网站 | 91桃色在线观看视频 | 亚洲播播| 久草在线在线视频 | 99久久精品免费看国产四区 | 欧美日韩视频一区二区三区 | 97夜夜澡人人爽人人免费 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 日韩在线观看三区 | 97韩国电影| 中文字幕欧美日韩va免费视频 | 国产精品二区在线观看 | 久草在线免费看视频 | 久久久亚洲网站 | 亚洲乱码精品久久久 | 亚洲欧洲中文日韩久久av乱码 | 最近中文字幕完整视频高清1 | 国产福利不卡视频 | 天天五月天色 | 亚洲午夜精品久久久久久久久久久久 | 色五月成人 | 五月天久久综合 | 精品一区精品二区 | 中文字幕在线观看视频网站 | 波多野结衣在线播放视频 | 国产精品久久久久久久电影 | 日日弄天天弄美女bbbb | 国产69精品久久99的直播节目 | 91香蕉视频 | 久久99久久99精品免视看婷婷 | 国产色秀视频 | 亚洲无吗视频在线 | 五月天亚洲婷婷 | 免费av网址在线观看 | 波多野结衣在线视频免费观看 | 综合黄色网 | 久操操 | 成人毛片久久 | 手机看片福利 | 中文字幕一区在线观看视频 | 婷婷在线看 | 99精品黄色片免费大全 | 麻豆成人小视频 | 中国美女一级看片 | 黄色av免费看 | 亚洲精品视频网 | 在线播放 日韩专区 | www.夜夜干.com | 成人久久18免费网站图片 | 精品国产1区 | 99热最新地址| 国内久久 | 久久亚洲在线 | 色婷婷综合成人av | 欧美夫妻生活视频 | 色婷婷88av视频一二三区 | 国产午夜精品在线 | 日韩成人精品一区二区三区 | 精品一区二区三区四区在线 | 久久九九影视网 | 国产最顶级的黄色片在线免费观看 | av在线h | 九九导航 | 中文字幕 在线 一 二 | 久久免费在线观看视频 | 国产a视频免费观看 | 日韩理论在线 | 成人观看视频 | 在线观看一区视频 | 国产一级二级在线 | 一区二区三区四区影院 | 久久a热6 | 久久69精品久久久久久久电影好 | 日韩xxxx视频 | 91视频高清免费 | 91精品办公室少妇高潮对白 | 黄色亚洲免费 | 久草观看 | av一区在线 | 色综合网在线 | 天天色综合三 | 日韩精品国产一区 | 精品国产精品久久 | 黄色a在线观看 | 国产精品久久一卡二卡 | 激情av综合 | 亚洲综合在线播放 | 在线黄色国产电影 | 亚洲精品成人av在线 | 日韩精品中文字幕有码 | 国产只有精品 | 人人超碰97 | 成人精品一区二区三区电影免费 | 成年人黄色大片在线 | 欧美成人性网 | 亚洲乱亚洲乱妇 | 69国产盗摄一区二区三区五区 | 免费福利在线播放 | 日韩一二区在线观看 | 97视频网址 | 欧美日韩免费视频 | 91av视频导航 | 激情一区二区三区欧美 | 日韩高清观看 | 久久成人午夜视频 | 波多野结衣在线播放视频 | 综合网中文字幕 | 波多野结衣视频一区二区 | 成人h视频在线 | 久久久久久国产精品免费 | 色婷婷综合久久久 | 超碰97在线资源 | 日韩在线欧美在线 | 亚洲成av片人久久久 | 一级全黄毛片 | 亚洲天堂va | 免费日韩电影 | 久久理论片 | 最新一区二区三区 | 国内精品久久久久久久久久久久 | 精品国产自在精品国产精野外直播 | 91在线精品秘密一区二区 | 免费看片成年人 | 激情图片久久 | 欧美va在线观看 | 日韩一区二区三区免费视频 | 国产精品久久免费看 | 国产午夜剧场 | 亚州精品在线视频 | 人人舔人人插 | 久久精品视频免费 | 337p日本欧洲亚洲大胆裸体艺术 | 91看片在线| 久久99热这里只有精品 | 亚洲激情 在线 | 91爱爱视频 | 成年人网站免费观看 | 日批在线观看 | 色婷婷激情五月 | 精品国产一区二区三区不卡 | 天天曰天天爽 | 亚洲国产日韩精品 | 久久在线观看 | 免费观看的黄色片 | 国产999久久久 | 99精品国产一区二区三区不卡 | 中文字幕日韩无 | 激情在线五月天 | 亚洲激情综合 | 欧美乱大交 | 日本精品久久久一区二区三区 | 91精品国产成人www | 日韩视频免费观看高清 | 亚洲精品成人av在线 | 成人欧美一区二区三区黑人麻豆 | 久久66热这里只有精品 | 国产精品自产拍在线观看中文 | 狠狠躁日日躁 | 三三级黄色片之日韩 | 免费美女久久99 | 国产精品麻豆91 | www.国产在线视频 | 国产精品免费观看视频 | 欧美热久久| 欧美日韩国产在线精品 | 成人免费视频播放 | 在线播放日韩av | 狠狠精品 | 成人看片| 国产一区二区三区在线免费观看 | 国产中文字幕视频在线 | 在线视频一二区 | 国产亚洲日 | 超碰在线97免费 | 亚洲精品日韩av | 香蕉久久久久久久 | 中文字幕 国产专区 | 中文字幕中文字幕中文字幕 | 欧美黑吊大战白妞欧美 | 久草在线视频在线 | 婷婷色综合色 | 91.麻豆视频 | 五月激情姐姐 | 超碰精品在线 | 四虎在线免费观看 | 亚洲综合视频在线播放 | 亚州欧美精品 | 在线精品视频在线观看高清 | 日韩3区| 狠狠躁夜夜躁人人爽超碰97香蕉 | 亚洲成人精品国产 | japanesefreesex中国少妇 | 精品视频在线看 | 国产老熟| 久久成人亚洲欧美电影 | 91试看 | 国产日韩欧美网站 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 国产成人综合在线观看 | 欧美在线视频免费 | www.神马久久 | 亚洲永久字幕 | 在线久草视频 | 日韩av区| 99精品久久久久 | 五月天亚洲激情 | 91在线麻豆 | 久久精品日本啪啪涩涩 | 一区二区三区在线免费 | 97夜夜澡人人双人人人喊 | 丁香午夜 | 九九热在线观看 | 天天做天天爱天天综合网 | 亚洲精品理论 | 中文字幕高清免费日韩视频在线 | 国产精品免费视频网站 | 欧美aaa大片 | 日韩极品视频在线观看 | 久久在线观看 | 中文字幕在线观看一区二区三区 | 久久网站最新地址 | 精品国产伦一区二区三区观看说明 | 9在线观看免费高清完整版在线观看明 | 天天操夜夜曰 | 日韩一区二区三区视频在线 | 亚洲一区二区精品 | 日韩精品一区二区免费视频 | 国产小视频在线观看 | 丝袜美腿在线播放 | 色国产精品一区在线观看 | 久久综合免费视频 | av888.com| 天天操欧美 | 亚洲在线国产 | 国内精品在线观看视频 | 久久久久免费精品国产小说色大师 | 欧美色图视频一区 | 欧美精品一区二区三区一线天视频 | 国产精品综合久久久 | 私人av | 久久天堂亚洲 | 97精品免费视频 | 欧美亚洲一级片 | 手机av网站 | 亚洲 欧洲av| 国产精品一区二区av日韩在线 | 日日操天天操狠狠操 | 97视频在线观看成人 | av久久在线 | 天天鲁天天干天天射 | 成人午夜精品福利免费 | 日韩av一区二区三区 | 最新亚洲视频 | 久草在| 青春草免费视频 | 亚洲播放一区 | 毛片网站在线观看 | 中文字幕亚洲五码 | 国产伦精品一区二区三区高清 | 片网址| 综合久久网| 国产午夜麻豆影院在线观看 | 久久久久久免费网 | 久久免费试看 | 亚洲精品福利在线观看 | 91看片一区二区三区 | 日韩av黄 | 久久理论视频 | 国产特级毛片aaaaaa毛片 | 欧美成人69av | av中文在线 | 久久久美女 | 中文字幕九九 | 中文字幕在线免费97 | www.91成人| 日韩高清国产精品 | 8x8x在线观看视频 | 中文字幕久久精品一区 | 国产91九色视频 | 毛片网站免费 | 亚洲国产日韩在线 | 中文字幕久久精品 | 黄色网www | 91大神免费视频 | 色久综合| 国产精品久久久久久久久久久久冷 | 最新精品国产 | 成人在线免费观看网站 | bbbb操bbbb| 色婷婷狠狠五月综合天色拍 | 黄色免费国产 | 久二影院| 少妇精品久久久一区二区免费 | 在线观看91视频 | 国语黄色片 | 天天伊人网| 激情婷婷亚洲 | 欧美黄在线| 麻豆91精品 | 亚洲h色精品| 国产手机在线观看视频 | 69中文字幕 | 九九九在线| 黄色小说视频网站 | 亚洲黄色在线观看 | 色综合久久五月天 | 国产成人不卡 | 日韩精品视频第一页 | 国产精品一区二区三区电影 | 成人日批视频 | 丁香婷婷激情国产高清秒播 | 精品久久久99 | 99久久99久久| 麻豆av一区二区三区在线观看 | 国产精品一区二区在线看 | 成人午夜在线电影 | 91精品国产乱码久久桃 | 亚洲不卡av一区二区三区 | 91九色视频在线播放 | 国产免费叼嘿网站免费 | 五月婷婷影院 | 久久精品79国产精品 | 亚洲国产经典视频 | 中文有码在线 | 国产成人精品综合 | www免费网站在线观看 | 久久另类小说 | 91福利免费 | 在线中文字幕观看 | 国产日产欧美在线观看 | 97超视频在线观看 | 97精品国产97久久久久久久久久久久 | 国产一区高清在线观看 | 日韩超碰在线 | 成人99免费视频 | 九九热有精品 | 色夜视频| 天天干夜夜 | 香蕉视频亚洲 | 国产免费久久久久 | 精品国产免费av | 狠狠躁夜夜a产精品视频 | 欧美一级片免费在线观看 | 看片一区二区三区 | 五月天婷婷综合 | 国产精品一区二区在线免费观看 | 四虎在线免费观看 | 超碰九九 | 国产精品涩涩屋www在线观看 | 91av电影在线 | 久久久高清一区二区三区 | av在观看| 国产一区在线免费 | 精品免费一区二区三区 | 男女视频91 | 99在线高清视频在线播放 | 蜜臀av麻豆 | 婷婷色社区 | 成人毛片一区 | 二区三区在线视频 | 丁香激情综合 | 国产精品美女久久久久久久久 | 正在播放国产91 | 久久久综合色 | 激情小说网站亚洲综合网 | 三级av免费看 | 婷婷九月激情 | 永久免费视频国产 | 黄色一级在线观看 | 成人黄色小视频 | 久久免费视频在线观看 | 天天爱天天草 | 九草在线观看 | 丁香激情综合国产 | 麻豆国产精品一区二区三区 | 一区二区三区免费在线观看视频 | 亚洲精品免费在线播放 | 亚洲精品乱码久久久久v最新版 | 色婷婷国产精品 | 一本色道久久综合亚洲二区三区 | 在线视频电影 | 在线va网站 | 丁香六月婷 | 亚洲丁香日韩 | 免费在线一区二区 | 黄色软件视频网站 | 日韩草比 | 中文字幕亚洲国产 | 欧美日韩不卡一区 | 国产91九色蝌蚪 | 成人黄色小说视频 | 久久久www | 天天做天天爱天天爽综合网 | 色婷婷综合久久久 | 久草在线电影网 | 国内精品免费 | 麻豆传媒视频在线 | 久草视频视频在线播放 | 中日韩在线视频 | 中文字幕电影一区 | 国产高清亚洲 | 最近高清中文字幕在线国语5 | 狠狠狠狠干 | 欧美精品久久久久久久免费 | 成年人视频在线免费观看 | 天堂在线视频免费观看 | 成人av在线直播 | 天天透天天插 | 日韩美在线 | 欧美性生交大片免网 | 日韩精品视频免费 | 久久久久久久毛片 | 色五月情| 国产第一福利 | 国产福利电影网址 | 久久少妇免费视频 | 国产成人一区二区三区 | 国产专区欧美专区 | 免费a视频在线 | 综合色婷婷 | 国产女人18毛片水真多18精品 | 色午夜 | 在线看成人 | 西西大胆啪啪 | 少妇超碰在线 | 中文在线最新版天堂 | 日本三级中文字幕在线观看 | 日韩三级视频在线看 | 国产综合视频在线观看 | 免费涩涩网站 | 中文字幕日韩在线播放 | 深爱激情综合网 | 丁香婷婷综合五月 | 超级碰99| 日韩综合视频在线观看 | 超碰在线中文字幕 | 黄色av一区二区 | 亚洲国产字幕 | 成人动漫一区二区三区 | 在线观看国产区 | 色婷婷丁香 | 国产日韩欧美在线观看视频 | 免费av网址在线观看 | 黄色免费在线视频 | 久久人人爽人人片av | 丁香色综合 | 日日摸日日碰 | 久香蕉| 欧美乱码精品一区二区 | 久久人人爽人人爽人人片 | 日韩激情在线视频 | 国产成人av一区二区三区在线观看 | 国产在线免费 | 久久99偷拍视频 | 日韩av一区二区在线播放 | 天天天射 | 黄色av电影免费观看 | 99久久久久免费精品国产 | 一本色道久久综合亚洲二区三区 | 国产.精品.日韩.另类.中文.在线.播放 | 色视频网站在线 | 久久人人艹 | 中文字幕国产视频 | 国语自产偷拍精品视频偷 | 五月婷婷开心 | 精品免费一区二区三区 | 91精品免费在线观看 | 国产剧情一区二区在线观看 | 国产69精品久久99不卡的观看体验 | 91干干干 | 欧美精品久 | 激情网站免费观看 | 欧美日韩一区二区三区视频 | 免费福利视频导航 | 日韩免费在线观看视频 | av在线播放快速免费阴 | 亚洲国产欧美在线人成大黄瓜 | 2024国产在线| 精品国产乱码久久久久久久 | 在线免费观看黄色小说 | 91精品国产自产91精品 | 日韩在线电影一区二区 | 午夜少妇av | 日韩成人精品一区二区 | 黄色小说在线免费观看 | 日韩精品一区二区三区高清免费 | 日本久久久精品视频 | 91精品国产乱码久久桃 | 97视频在线看 | 91精品国产综合久久久久久久 | avwww在线观看 | 久久国产精品久久精品 | 久久综合射 | 国产午夜一级毛片 | 国产1区2区3区精品美女 | 亚洲精品国产精品国自产观看 | 九九爱免费视频 | 在线观看av黄色 | 在线免费高清 | 久久久久国 | www.色的| 久久免费美女视频 | 国产一级大片在线观看 | 久久五月情影视 | 国产精品自产拍 | 国产精品成人一区二区三区吃奶 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 九九在线视频 | 国产成人精品a | 国产999免费视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 欧美精品久久久久久久久久白贞 | 中文字幕在线观看一区 | 91在线免费视频观看 | 久久午夜电影网 | 911久久| 国产91免费在线观看 | 91精品在线免费观看 | 91秒拍国产福利一区 | 欧美 另类 交 | 97精品国产97久久久久久免费 | 色狠狠综合天天综合综合 | 一级免费看视频 | 欧美大片在线看免费观看 | 在线小视频你懂的 | 日韩在线高清 | 国产精品自产拍在线观看 | 操操综合| 婷婷久月 | 黄网站a| 久久狠狠婷婷 | 免费亚洲黄色 | www.黄色小说.com | 男女拍拍免费视频 | 成人在线一区二区三区 | 黄色av网站在线观看免费 | 国产激情电影综合在线看 | 欧美日韩二三区 | 国内精品视频在线 | 日韩av中文 | 国产黄色在线 | 日韩电影一区二区在线 | 天天亚洲| 国产打女人屁股调教97 | 久久综合久久综合这里只有精品 | 五月婷婷深开心 | 午夜免费久久看 | 国产精品成久久久久 | 国产精品 9999 | 操碰av | 婷婷免费视频 | 在线成人观看 | japanesexxxxfreehd乱熟| 99精品久久99久久久久 | 久久国产一区二区三区 | 人人狠狠综合久久亚洲婷 | 91精品国产电影 | 欧美一级性生活片 | av片一区二区 | 波多野结衣亚洲一区二区 | 久久99亚洲热视 | 麻豆传媒在线视频 | 国产成人精品亚洲日本在线观看 | 久久精品久久久精品美女 | 亚洲综合视频在线播放 | 97免费在线观看 | 色综合久久网 | 男女视频国产 | 丁香六月国产 | 香蕉精品视频在线观看 | 91完整版 | 日韩午夜电影院 | 欧美在线观看小视频 | 色综合天天色综合 | 色妞色视频一区二区三区四区 | 国产精品青青 | 天天干天天操天天做 | 婷婷色六月天 | 亚洲香蕉在线观看 | 九九九九九九精品任你躁 | 日韩网站在线播放 | 精品美女久久久久久免费 | 色综合久久88色综合天天 | 国产精品高清免费在线观看 | 成人aⅴ视频 | av中文字幕在线免费观看 | 91av资源网| 天天操,夜夜操 | 丁香视频在线观看 | av成人在线观看 | 国产一级视频 | 国产高清久久 | 国产成人一区二区精品非洲 | 狠狠插狠狠操 | 91精品国产91久久久久福利 | 午夜12点| 久久久久一区 | 首页中文字幕 | 国产精品女同一区二区三区久久夜 | 国产精品一区二区三区观看 | 在线观看一级视频 | 精品v亚洲v欧美v高清v | 在线视频麻豆 | 国产一卡久久电影永久 | 国产成人福利在线观看 | 69精品| 精品在线视频一区二区三区 | 国产99久久久精品视频 | 香蕉视频网站在线观看 | 久草电影网 | 久久久久9999亚洲精品 | 色婷婷综合视频在线观看 | 亚洲丝袜一区二区 | 久久精品欧美一 | av大全在线| 欧美日韩国产三级 | 最新日本中文字幕 | 久久婷亚洲五月一区天天躁 | 99视频+国产日韩欧美 | 国产又粗又猛又黄 | 国产精品观看视频 | 91看片在线免费观看 | 中文免费在线观看 | 国产中文字幕视频在线 | 五月花丁香婷婷 | 亚洲精品动漫久久久久 | 欧美韩日精品 | 成人av中文字幕在线观看 | 国产一线二线三线性视频 | 狠狠操狠狠干天天操 | 麻豆视频免费入口 | av免费网 | 亚洲精品videossex少妇 | 国产黄色在线 | 色视频在线免费 | 久久五月婷婷丁香社区 | 丁香六月色 | 黄色特级片| 成人h电影在线观看 | 五月天婷婷在线播放 | 看av在线| 国产精品av久久久久久无 | 97精品国自产拍在线观看 | 久久天天躁狠狠躁夜夜不卡公司 | 国产一级电影网 | 人人看看人人 | 日韩理论在线观看 | 日韩免费观看高清 | 中文国产在线观看 | 91精品毛片 | 亚洲综合射 | 国产xx视频 | 成人免费在线观看av | 国产精品久久久久av免费 | 中文字幕在线看视频 | 99视频导航 | 美女视频一区二区 | 成人一区二区三区在线 | 午夜精品福利影院 | 久久久久国产成人精品亚洲午夜 | 久久久免费精品视频 | 久久伦理视频 | 一级电影免费在线观看 | 成人午夜精品福利免费 | 黄色一级动作片 | 日韩欧美v | 制服丝袜在线91 | 色婷婷综合久久久中文字幕 | 午夜精品视频免费在线观看 | 在线观看免费成人av | 99精品色 | 91精品办公室少妇高潮对白 | 91精品久久久久久综合五月天 | 99久久精品国产毛片 | 成人av网页 | 欧美精品免费在线 | 国产视频一区二区在线观看 | 久久久久久高潮国产精品视 | 国产资源在线观看 | 天天干天天拍天天操天天拍 | 久久久亚洲网站 | www.久久久久 | 日韩二区在线播放 | 国产精品成人免费一区久久羞羞 | 久久99在线观看 | 最近最新中文字幕 | 九九热有精品 | 国产精品久久久久久久免费观看 | 日日操操 | 日韩免费高清 | 五月天中文在线 | 中文字幕国内精品 | 草莓视频在线观看免费观看 | 超碰97免费观看 | 在线国产专区 | 66av99精品福利视频在线 | 欧美一进一出抽搐大尺度视频 | 日本三级久久久 | 午夜精品视频在线 | 91影视成人 | 免费视频国产 | 国产一级电影免费观看 | 色婷婷久久 | www.黄色小说.com | 久久精品美女视频网站 | 蜜臀久久99精品久久久无需会员 | 国产一级视频在线 | 一级c片| 国产午夜精品一区二区三区嫩草 | 丰满少妇在线观看资源站 | 亚洲深夜影院 | 欧美夫妻生活视频 | 亚洲视频久久久久 | 欧美男男tv网站 | 一区二区欧美在线观看 | 少妇视频一区 | 欧美九九视频 | а天堂中文最新一区二区三区 | 成人小视频在线观看免费 | japanesefreesex中国少妇 | 男女激情免费网站 | 97在线观看免费视频 | 午夜色影院 | 久久99婷婷 | 久久综合九色综合欧美狠狠 | 久久99国产一区二区三区 | 午夜丁香视频在线观看 | 在线播放av网址 | 国产高清久久久久 | 午夜少妇一区二区三区 | 九月婷婷综合网 | 精品久久免费 | 日韩欧美视频在线播放 | 99精品影视| 亚洲第一区精品 | 一区在线电影 | 中文字幕久久精品一区 | 91最新视频在线观看 | 91成人在线视频观看 | www久草| 久久久久久久久久久免费视频 | 手机av在线网站 | 精品视频亚洲 | 综合网在线视频 | 久久久精品网 | 日韩在线首页 | 国内小视频在线观看 | 九七视频在线观看 | 中文字幕 国产精品 | 精品日本视频 | 丝袜+亚洲+另类+欧美+变态 | 久久精品欧美 | 天天操天天干天天操天天干 | 久久久久国产免费免费 | 国产日女人 | 国产女人40精品一区毛片视频 | 久久超碰网 | 91爱爱视频 | 国产精品第52页 | 国产一区在线免费观看视频 | 日韩精品播放 | 在线性视频日韩欧美 | 成人免费视频视频在线观看 免费 | 国产精品成人av在线 | 日日夜夜噜噜噜 | 国产精品久久久久久久毛片 | 国产亚洲综合在线 | 成人小视频在线 | 久久 在线 | 一区二区三区动漫 | www.97色.com| 色视频成人在线观看免 | 国产精品免费在线观看视频 | 国产精品99久久久久的智能播放 | 久久高清av | 久久a v视频| 免费色黄 | 日韩大片在线免费观看 | 久久免费av电影 | 欧美一区日韩一区 | 在线视频精品 | 91精品国产麻豆国产自产影视 | 欧美大荫蒂xxx | 国内少妇自拍视频一区 | 精品久久免费看 | 日本动漫做毛片一区二区 | 精品久久久久久电影 | 欧美另类激情 | 国产精品亚洲片在线播放 | 2019天天干天天色 | 久草91视频 | 国产精品激情偷乱一区二区∴ | 天天干 天天摸 天天操 | 色91在线视频 | 日韩免费视频在线观看 | 麻豆国产网站 | 正在播放国产精品 | 色婷婷国产精品 | 91福利免费 | 久久久久久久久久久久久国产精品 | 人人草在线视频 | 亚洲欧美日韩不卡 | 91在线资源 | 丁香激情网 | 欧美色图一区 | 国产精品日韩高清 | 精品免费一区二区三区 | 国产亚洲精品日韩在线tv黄 | 中国精品一区二区 | 黄色91在线观看 | 国产成人不卡 | 在线观看av小说 | 色综合久久五月天 | 亚洲精品字幕在线观看 | 91视频啊啊啊 | 四虎影视8848aamm | 国产成人三级三级三级97 | 国产日产精品久久久久快鸭 | 免费91在线 | 91黄色在线观看 | 又色又爽又黄高潮的免费视频 | 成全在线视频免费观看 | 欧美日产一区 | 亚洲欧美经典 | 色偷偷88欧美精品久久久 | 免费在线播放黄色 | 狠狠色丁香婷婷综合橹88 | 日韩欧美综合 | 久久极品| 国产精品毛片一区二区三区 | 亚洲aⅴ乱码精品成人区 | 国产精品九九久久99视频 | 最近中文字幕在线播放 | av在线免费在线观看 | 五月天婷婷视频 | 狠狠操狠狠干天天操 | 91.dizhi永久地址最新 | 久久久精品高清 | 天天舔夜夜操 | 国产视频日韩视频欧美视频 | 日本久草电影 | 免费国产视频 | 中文字幕第一页在线 | 中国一级片在线观看 | 夜夜夜夜爽 | 黄色1级毛片 | 久草在线电影网 | 亚洲精品中文在线 | 99r精品视频在线观看 | 色精品视频 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 91精品视频免费 | 成人h视频在线播放 | 久久免费av | 91激情视频在线 | 国产不卡免费av | 激情视频免费观看 | 免费观看www7722午夜电影 | wwwwww色| 国产亚洲精品久久久久久久久久 | 久久国产精品区 | av大全在线免费观看 | 黄色片软件网站 | 亚洲一级片av | 成人午夜精品 | 国产成人精品999 | www.99在线观看| 久久男人中文字幕资源站 | 亚洲第一中文网 | 天天爱综合| 日日婷婷夜日日天干 | 国产精品免费久久久久影院仙踪林 | 久久成人免费视频 | 国产精品美女免费看 | 国产网站av | a天堂一码二码专区 | 狠狠躁夜夜躁人人爽超碰97香蕉 | www.香蕉 | www.com操| 国产精品久久一区二区三区不卡 | 日韩精品久久久久久中文字幕8 | 99视频导航 | 97色se | 欧美一区在线观看视频 | 国产精品成人自产拍在线观看 | 91最新在线 | 亚洲精品www久久久久久 | 色www. | 国产 中文 日韩 欧美 | 麻豆传媒视频观看 | 亚洲精品裸体 | 91字幕| 天天色综合1 | 国产99久久精品一区二区永久免费 |