本文主要介绍IIC总线通信协议和SPI协议,并使用STM32系列芯片基于IIC协议实现AHT20温湿度传感器上位机数据采集,基于SPI协议实现OLED显示。

目录

一、IIC总线通信协议

1、IIC协议简介

2、IIC物理层

3、IIC协议层

4、软硬件IIC

二、基于STM32的温湿度数据采集

1、题目要求

2、理解代码含义

3、代码编译

4、硬件连接和烧录之后的实验结果

三、SPI协议和OLED介绍

1、SPI协议简介

2、SPI连接方式(物理层)

3、SPI通讯过程(协议层)

4、OLED原理

四、STM32+OLED显示个人学号姓名

1、题目要求

2、文字取模

3、显示自己的名字和学号

4、显示AHT20的温度和湿度

5、左右滑动显示长字符

五、总结

六、参考文献


一、IIC总线通信协议

1、IIC协议简介

I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。

IIC最重要的功能包括:

  • 只需要两条总线;
  • 没有严格的波特率要求,例如使用RS232,主设备生成总线时钟;
  • 所有组件之间都存在简单的主/从关系,连接到总线的每个设备均可通过唯一地址进行软件寻址;
  • IIC是真正的多主设备总线,可提供仲裁和冲突检测;
  • 传输速度:

标准模式:Standard Mode = 100 Kbps
             快速模式:Fast Mode = 400 Kbps
             高速模式: High speed mode = 3.4 Mbps
             超快速模式: Ultra fast mode = 5 Mbps

  • 最大主设备数:无限制;
  • 最大从机数:理论上是127。

2、IIC物理层

I2C 总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,SCL和SDA被上拉电阻Rp拉高,使SDA和SCL线都保持高电平。

I2C通信方式为半双工,只有一根SDA线,同一时间只可以单向通信,485也为半双工,SPI和uart通信为全双工。

它的物理层有如下特点:

  1. 它是一个支持设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总线中,可连接多个 I2C 通讯设备,支持多个通讯主机及多个通讯从机。
  2. 一个 I2C 总线只使用两条总线线路,一条双向串行数据线(SDA) ,一条串行时钟线(SCL)。数据线即用来表示数据,时钟线用于数据收发同步。
  3. 每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间的访问。
  4. 总线通过上拉电阻接到电源。当 I2C 设备空闲时,会输出高阻态,而当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。
  5. 多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用总线。
  6. 具有三种传输模式:标准模式传输速率为 100kbit/s ,快速模式为 400kbit/s ,高速模式下可达 3.4Mbit/s,但目前大多 I 2 C 设备尚不支持高速模式。
  7. 连接到相同总线的 IC 数量受到总线的最大电容 400pF 限制 。

3、IIC协议层

IIC 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。

开始信号SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
结束信号SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。
应答信号接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。

这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。

4、软硬件IIC

硬件IIC对应芯片上的IIC外设,有相应IIC驱动电路,其所使用的IIC管脚也是专用的;软件IIC一般是用GPIO管脚,用软件控制管脚状态以模拟IIC通信波形。硬件IIC的效率要远高于软件的,而软件IIC由于不受管脚限制,接口比较灵活。模拟IIC 是通过GPIO,软件模拟寄存器的工作方式,而硬件(固件)IIC是直接调用内部寄存器进行配置。

软件IIC:

直接使用 CPU 内核按照 IIC 协议的要求控制 GPIO 输出高低电平,从而模拟IIC。
使用: 需要在控制产生 IIC 的起始信号时,控制作为SCL 线的 GPIO 引脚输出高电平,然后控制作为 SDA 线的 GPIO 引脚在此期间完成由高电平至低电平的切换,最后再控制SCL线切换为低电平,这样就输出了一个标准的 IIC 起始信号。

硬件IIC:

直接利用 STM32 芯片中的硬件 IIC 外设。
使用: 只要配置好对应的寄存器,外设就会产生标准串口协议的时序。在初始化好 IIC 外设后,只需要把某寄存器位置 1,此时外设就会控制对应的 SCL 及 SDA 线自动产生 IIC 起始信号,不需要内核直接控制引脚的电平

软硬件IIC之间的差别:

硬件 IIC 直接使用外设来控制引脚,可以减轻 CPU 的负担。不过使用硬件IIC 时必须使用某些固定的引脚作为 SCL 和 SDA,软件模拟 IIC 则可以使用任意 GPIO 引脚,相对比较灵活。对于硬件IIC用法比较复杂,软件I2C的流程更清楚一些。如果要详细了解IIC的协议,使用软件IIC可能更好的理解这个过程。在使用IIC过程,硬件IIC可能通信更加快,更加稳定。

二、基于STM32的温湿度数据采集

1、题目要求

编程实现:每隔2秒钟采集一次温湿度数据,并通过串口发送到上位机(win10)。

2、理解代码含义

AHT20芯片的使用过程:

void  read_AHT20_once(void)
{delay_ms(10);reset_AHT20();//重置AHT20芯片delay_ms(10);init_AHT20();//初始化AHT20芯片delay_ms(10);startMeasure_AHT20();//开始测试AHT20芯片delay_ms(80);read_AHT20();//读取AHT20采集的到的数据delay_ms(5);
}

AHT20芯片读取数据:

void read_AHT20(void)
{uint8_t   i;for(i=0; i<6; i++){readByte[i]=0;}I2C_Start();//I2C启动I2C_WriteByte(0x71);//I2C写数据ack_status = Receive_ACK();//收到的应答信息readByte[0]= I2C_ReadByte();//I2C读取数据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();//I2C停止函数//判断读取到的第一个字节是不是0x08,0x08是该芯片读取流程中规定的,如果读取过程没有问题,就对读到的数据进行相应的处理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");//根据AHT20芯片中,温度和湿度的计算公式,得到最终的结果,通过串口显示printf("温度:%d%d.%d",T1/100,(T1/10)%10,T1%10);printf("湿度:%d%d.%d",H1/100,(H1/10)%10,H1%10);printf("\r\n");
}

3、代码编译

编译无误,可以进行烧录。

4、硬件连接和烧录之后的实验结果

USB 转 TTL 模块与STM32F103 核心板的连接:

GND----GND
3V3----3.3
RXD----A9
TXD----A10

AHT20 芯片与STM32F103 核心板的连接:

SCL----B6
GND----GND
SDA----B7
VCC----5V

烧录:

实验效果:

完整代码链接: 百度网盘 请输入提取码
提取码:o72s

三、SPI协议和OLED介绍

1、SPI协议简介

SPI(Serial peripheral interface)即串行外围设备接口,是由Motorola首先在其MC68HCxx系列单片机上定义的,基于高速全双工总线的通讯协议。(又是高速,而且全双工,确实强大)被广泛应用于ADC、LCD等设备与MCU之间。

跟前面学习IIC、USART一样,学习一种协议,还是从两个层面分析:物理层和协议层。

2、SPI连接方式(物理层)

SS( Slave Select):从设备选择信号线,常称为片选信号线。
SCK (Serial Clock):时钟信号线,用于通讯数据同步。
MOSI (Master Output, Slave Input):主设备输出/从设备输入引脚。
MISO(Master Input,,Slave Output):主设备输入/从设备输出引脚。

3、SPI通讯过程(协议层)

NSS、SCK、MOSI 信号都由主机控制产生,而 MISO 的信号由从机产生,主机通过该信号线读取从机的数据。MOSI 与 MISO 的信号只在 NSS 为低电平的时候才有效,在 SCK 的每个时钟周期 MOSI 和 MISO 传输一位数据。

通讯的起始和停止信号
在上图的标号①处,NSS 信号线由高变低,是 SPI 通讯的起始信号。NSS 是每个从机各自独占的信号线,当从机在自己的 NSS 线检测到起始信号后,就知道自己被主机选中了,开始准备与主机通讯。在图中的标号⑥处,NSS 信号由低变高,是 SPI 通讯的停止信号,表示本次通讯结束,从机的选中状态被取消。
数据有效性
SPI 使用 MOSI 及 MISO 信号线来传输数据,使用 SCK 信号线进行数据同步。MOSI 及 MISO 数据线在 SCK 的每个时钟周期传输一位数据,且数据输入输出是同时进行的。数据传输时,MSB 先行或 LSB 先行并没有作硬性规定,但要保证两个 SPI 通讯设备之间使用同样的协定,一般都会采用上图中的 MSB 先行模式。
观察图中的②③④⑤标号处,MOSI 及 MISO 的数据在 SCK 的上升沿期间变化输出,在SCK 的下降沿时被采样。即在 SCK 的下降沿时刻,MOSI 及 MISO 的数据有效,高电平时表示数据“1”,为低电平时表示数据“0”。在其它时刻,数据无效,MOSI及 MISO 为下一次表示数据做准备。
SPI 每次数据传输可以 8 位或 16 位为单位,每次传输的单位数不受限制。
完整的时序图如下:

4、OLED原理

OLED(OrganicLight-Emitting Diode),又称为有机电激光显示、有机发光半导体(OrganicElectroluminesence Display,OLED)。OLED属于一种电流型的有机发光器件,是通过载流子的注入和复合而致发光的现象,发光强度与注入的电流成正比。OLED在电场的作用下,阳极产生的空穴和阴极产生的电子就会发生移动,分别向空穴传输层和电子传输层注入,迁移到发光层。当二者在发光层相遇时,产生能量激子,从而激发发光分子最终产生可见光。

LCD 都需要背光,而 OLED 不需要,因为它是自发光的。这样同样的显示,OLED 效果要来得好一些。以目前的技术,OLED 的尺寸还难以大型化,但是分辨率确可以做到很高。

我们使用的是 ALINETEK 的 OLED 显示模块,该模块有以下特点:
1)模块有单色和双色两种可选,单色为纯蓝色,而双色则为黄蓝双色。
2)尺寸小,显示尺寸为 0.96 寸,而模块的尺寸仅为 27mmx26mm 大小。
3)高分辨率,该模块的分辨率为128x64。
4)多种接口方式,该模块提供了总共 5 种接口包括:6800、8080 两种并行接口方式、3线或 4 线的穿行 SPI 接口方式、IIC 接口方式(只需要 2 根线就可以控制 OLED 了)。
5)不需要高压,直接接 3.3V 就可以工作了。
在下面实验中,将会采用七线OLED
参考厂家给出的Demo程序:0.96寸SPI_OLED模块配套资料包

0.96寸OLED显示屏相关介绍可参考链接:
0.96inch SPI OLED Module - LCD wiki

四、STM32+OLED显示个人学号姓名

1、题目要求

理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI或IIC接口实现以下功能:
1) 显示自己的学号和姓名; 
2) 显示AHT20的温度和湿度;
3) 上下或左右的滑动显示长字符,比如“Hello,欢迎来到重庆交通大学物联网205实训室!”或者一段歌词或诗词(最好使用硬件刷屏模式)。

2、文字取模

字库取模
由于OLED显示中使用了中文字符,因此需要将中文进行取模得到中文的点阵编码并存到oledfont.h中,方便程序调用并显示到OLED上去。在此我们应用的是PCtoLCD2002软件来对汉字取模

文字取模软件:

链接:https://pan.baidu.com/s/1XfS6tToEo-vO-yOA5kt0IQ 
提取码:q45w

1.打开软件,选择选项,配置字模选项

2.输入要显示的数据,点击生成字模

3、显示自己的名字和学号

完整代码工程链接:https://pan.baidu.com/s/1ueLkRFvStGZXsvKRUIkB6A 
提取码:q45w

修改程序
内容显示 TEST_MainPage函数->test.c文件

void TEST_MainPage(void)
{
//  GUI_ShowString(28,0,"mo",16,1);//英文姓名GUI_ShowCHinese(28,20,16,"莫泉军",1);//中文姓名GUI_ShowString(4,48,"631909080117",16,1);//数字详细delay_ms(1500);       delay_ms(1500);
}

将字模 添加到oledfont.h中:

主函数修改:

int main(void)
{   delay_init();                  //延时函数初始化      OLED_Init();                   //初始化OLED  OLED_Clear(0);             //清屏(全黑)while(1) { TEST_MainPage();         //界面显示}
}

编译烧录

烧录运行

实验结果

4、显示AHT20的温度和湿度

完整代码工程链接:https://pan.baidu.com/s/1I99nZ9jtouUjpezkhK0ekg 
提取码:q45w

代码修改

main.c

#include "delay.h"
#include "usart.h"
#include "bsp_i2c.h"
#include "sys.h"#include "oled.h"
#include "gui.h"
#include "test.h"int main(void)
{   delay_init();                  //延时函数初始化          uart_init(115200);     IIC_Init();NVIC_Configuration();      //设置NVIC中断分组2:2位抢占优先级,2位响应优先级     OLED_Init();                     //初始化OLED  OLED_Clear(0); while(1){//printf("温度湿度显示");read_AHT20_once();OLED_Clear(0); delay_ms(1500);}
}

温湿度显示read_AHT20函数->bsp_i2c.c文件

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("lyy");}/*通过串口显示采集得到的温湿度printf("\r\n");printf("温度:%d%d.%d",T1/100,(T1/10)%10,T1%10);printf("湿度:%d%d.%d",H1/100,(H1/10)%10,H1%10);printf("\r\n");*/t=T1/10;t1=T1%10;a=(float)(t+t1*0.1);h=H1/10;h1=H1%10;b=(float)(h+h1*0.1);sprintf(strTemp,"%.1f",a);   //调用Sprintf函数把DHT11的温度数据格式化到字符串数组变量strTemp中  sprintf(strHumi,"%.1f",b);    //调用Sprintf函数把DHT11的湿度数据格式化到字符串数组变量strHumi中  GUI_ShowCHinese(16,00,16,"温湿度显示",1);GUI_ShowCHinese(16,20,16,"温度",1);GUI_ShowString(53,20,strTemp,16,1);GUI_ShowCHinese(16,38,16,"湿度",1);GUI_ShowString(53,38,strHumi,16,1);delay_ms(1500);      delay_ms(1500);
}

编译烧录运行即可

实验结果如下:

5、左右滑动显示长字符

完整代码工程链接:链接:https://pan.baidu.com/s/1JaAMaIfhppOKOfdE6BVQDQ 
提取码:q45w

主要代码:

main.c

#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "gui.h"
#include "test.h"
int main(void)
{   delay_init();                  //延时函数初始化      NVIC_Configuration();        //设置NVIC中断分组2:2位抢占优先级,2位响应优先级     OLED_Init();                     //初始化OLED  OLED_Clear(0);             //清屏(全黑)OLED_WR_Byte(0x2E,OLED_CMD);        //关闭滚动OLED_WR_Byte(0x27,OLED_CMD);        //水平向左或者右滚动 26/27OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节OLED_WR_Byte(0x00,OLED_CMD);        //起始页 0OLED_WR_Byte(0x07,OLED_CMD);        //滚动时间间隔OLED_WR_Byte(0x07,OLED_CMD);        //终止页 7OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节OLED_WR_Byte(0xFF,OLED_CMD);        //虚拟字节TEST_MainPage();OLED_WR_Byte(0x2F,OLED_CMD);        //开启滚动while(1) {    }
}

 修改text.c中的TEST_MainPage函数

 添加字模数据 :

编译烧录之后就可以运行

实验结果如下:

五、总结

这次实验主要是对于硬件接线的把握以及原理的理解,在实验过程中,也遇到了一些问题,比如代码的修改过程,在字模复制上去后一定要记得,在16进制码前面一定要加上文字,不然会无法显示。通过这三个实验做了之后,对嵌入式应用有了更深的了解,以后我可以通过OLED屏显示更多的东西,这是可以展示给别人看的。OLED是一个比较有意思的外设,在之后完成更多硬件项目时,可以利用OLED进行调试显示,帮助会很大,所以要好好掌握OLED的使用,多加练习,受益匪浅。

六、参考文献

https://blog.csdn.net/qq_43279579/article/details/111597278
https://blog.csdn.net/qq_43279579/article/details/111414037
https://blog.csdn.net/qq_43279579/article/details/111678857
https://blog.csdn.net/qq_60678931/article/details/121410035

【嵌入式基础】基于IIC和SPI协议的温湿度采集与OLED显示相关推荐

  1. 【嵌入式08】基于IIC和SPI协议的温湿度采集与OLED显示

    文章目录 一.温湿度采集 1.I2C总线协议 2.电路连接 3.代码编写 4.烧录输出 二.OLED显示 1.SPI和OLED介绍 2.电路连接 3.汉字取模 4.代码编写 5.烧录输出 三.总结 四 ...

  2. 基于IIC和SPI协议的温湿度采集与OLED显示

    前言 环境 KEIL:5.0 FIyMcu:V0.993 开发板:STM32F103C8T6 器件 AHT-20 温湿度传感器 0.96英寸OLED屏幕 任务1内容 学习I2C总线通信协议,使用STM ...

  3. 基于I2C/SPI总线的温湿度采集与OLED显示

    实验一 实验目的 学习I2C总线通信协议,使用STM32F103完成基于I2C协议的AHT20温湿度传感器的数据采集,并将采集的温度-湿度值通过串口输出.具体任务: 1)解释什么是"软件I2 ...

  4. 基于 SPI 协议的0.96 寸OLED显示

    目录 一. SPI 协议 1.简介 2.SPI的连接方式 3.通信过程​ 二.OLED 1.OLED原理 2.点阵编码原理与显示 三.OLED显示实验 Demo 程序 1.要求 2. OLED 显示汉 ...

  5. 基于I2C/SPI的温湿度采集与OLED显示

    目录 一.温湿度采集 1.了解I2C总线协议 2.实现AHT20采集程序 3.温湿度的OLED(4SPI)显示 二.OLED显示 1.了解SPI(串行外设接口) 2.使用0.96寸OLED显示屏显示数 ...

  6. 基于IIC和SPI协议的OLED显示(STM32)

    文章目录 一.介绍SPI 二.使用OLED显示屏显示数据 1.介绍OLED 2.连接开发板和显示屏 3.运行结果 三.修改程序实现显示 四.结果展示 五.参考 一.介绍SPI SPI(Serial P ...

  7. 基于stm32、spi协议的Fatfs文件系统移植(附完整代码下载)

    开发环境:Window 7 32bit 开发工具:Keil uVision4 硬件:stm32f103vct6 目录 1.硬件设计: 2.软件设计 1.SPI收发数据 2.向SD卡发送的命令格式: 3 ...

  8. 基于SPI的OLED显示

    文章目录 一.SPI协议 1. SPI简介 2. SPI通信原理 3. GPIO口配置 二.OLED原理及应用 1. OLED原理 2. OLED显示 2.1 姓名学号显示 ①准备工作及部分代码 ②实 ...

  9. 用STM32F103达成基于I2C协议的AHT20温湿度传感器和OLED屏显示汉字

    目录 一 I2C协议简介 硬件I2C与软件I2C 二 代码和ATH20芯片实现温湿度的串口显示 三 用stm32f103芯片的SPI和IIC接口接上OLED屏显示中文姓名温湿度 1 先用文字字模生成器 ...

最新文章

  1. html 写一个日志控件 查看log
  2. EmbeddedWebBrowser(EmbeddedWB)不显示图片
  3. Windows10下搭建Java环境(最新教程)
  4. 2.cocos2d-x坐标体系(UI坐标系,GL坐标系,本地坐标,世界坐标,节点坐标)
  5. 【杂谈】数学,计算机视觉,图形图像处理
  6. Visio 方向工程连接 Oracle 10G
  7. step1 . day2:Linux系统基础知识
  8. 学习转载:Linux命令--grep|正则表达式
  9. 读再多书都没觉得自己变强?试试我这“5年陈”的方法
  10. 学硕计算机考296算高分么,考研总分是多少算高分?考研340分是什么水平?
  11. android之WIFI小车编程详述
  12. 水晶报表设置图片高度与宽度
  13. 生产中k8s适合mysql_在K8S集群中构建复杂的MySQL单实例数据库
  14. 女孩子怎样能赚到月薪一万
  15. 原创设计师交流平台|集设作品传播和推荐的地方
  16. VB 汉字字符串转换成拼音
  17. 咱也写个小写数字转大写金额 ,纯粹字符串操作实现
  18. STM32F072单片机的低功耗实验/STOP模式低功耗调试
  19. php盘古分词,百度分词技术_百度输入法分词怎么关_百度分词原理
  20. 计算机配置很不错但是卡,高手告诉你win10电脑明明配置很好却卡顿的详尽处理手法...

热门文章

  1. PCI设备的访问方法_桥设备(type1)
  2. EasySwoole 基础入门
  3. 简单介绍长短期记忆网络 - LSTM
  4. UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initial
  5. SeekBarVolumizer.java
  6. [转]图像梯度:算子
  7. C#压缩或解压(rar和zip文件)
  8. psycopg2连接PostgreSQL下的不同模式(SCHEMA)
  9. python程序判断梅森素数_梅森素数的探索之旅
  10. 电子签名工具 SignatureTool