对I/O口电压的读取
UART介绍
发送端高电位说明串口是空闲状态,当变为低电位的时候开始发送数据,在最后停止位会把电压拉高,一般采用1位的停止位
当数据位中包含奇数个1的时候校验位就写的是1,偶数个就写0
波特率:
串口设置
在这里可以调整GPIO的设置
UART中参数解释
Basic Parments 基本参数
Baud Rate 波特率
World Length 用来设置数据位的长度:8 bits | 9 bits
Party 校验方式:None 不校验 | Even 偶校验 | Odd 奇校验
Stop Bits 停止位长度:1表示一位停止位 | 2表示两位停止位
Advanced Parments 高级参数
Data Direction 数据传输方向:Transmit-Only 只发送 | Receive-Only 只接受 | Receive and Transmit收发双向(一般选择收发双向)
使用串口调试助手的时候也需要相应的设置
在main.c文件的顶部会找到一个文件的句柄
时间一般填写HAL_MAX_DELAY
接受数据
点灯小程序
I2C
SCL是时钟线:频率越快,传输信号的速度越快
不管是主机还是从机的SCL和SDA都需要外接上拉电阻,这是为了实现逻辑线与
开漏输出置1输出高阻抗,整条总线的电平为1
当有一个从机为0时,这时的高电平已经失去作用,整条总线电平为0
通信过程:
将地址换算成二进制数据之后去掉最后一位,之后主机释放SDA线等待从机应答,从机通过把SDA拉低来释放一个应答信号(ACK)
从机发送ACK来告诉主机寻址成功
勘误:2->没来得及
写数据时从机拉低SDA释放ACK信号
读数据时主机拉低SDA释放ACK信号
stm32F103C8T6只支持前两种
一般选择1/2
设置
I2C支持两种模式
上面表示标准的I2C接口
后面的两种表示SMBus->系统管理总线
stm32作为主机时设置上面,作为从机设置下面
点亮oled时可以使用快速模式
这个上拉电阻还得自己加啊
确定从机地址
0x00 命令流
0x8d, 0x14 使能电荷泵
0xaf 打开屏幕的开关
0xa5 让屏幕全亮
时钟系统: