目录
前言
IC基本定义
三极管基础知识
单片机引脚电路作用
STM8GPIO工作模式
GPIO外设寄存器
寄存器含义用法
CR1:Control Register 1
CR2:Control Register 2
ODR:Output Data Register
IDR:Input Data Register
赋值寄存器更改引脚状态
编写不易,仅供学习,请勿搬运,感谢理解
前言
本文讲述了STM8位单片机的GPIO 工作模式 相关寄存器 芯片引脚内部状态 同时通过对单片机外界寄存器的读写数据来完成对引脚的配置,以及本文参考B站龙顺宇STM8单片机教程连接放在最后。
IC基本定义
在嵌入式开发中又很多常用的ic hc164 tja1050 这些都是常用的ic芯片 而ic芯片的定义是集成电路是一种微型电路或者器件,把一个电路中所需要的器件 晶体管 电阻 电容 电感等原件与布线连在一起制作在一块或者几小块晶体上,然后封装在外壳内,留出芯片的基本功能引脚。
ic图片
三极管基础知识
三极管分为npn三极管 pnp三级管,同时还有mos管也是三极管的一种,三极管本身有 集电极 发射极 基极 常见的作用是作为开关跟放大电流使用 ,原理是当三极管 基极通电导通 发射极跟集电极导通 同时集电极的电流是基极的电流的倍数。
区分三极管是npn三极管还是pnp三极管有一个很好的方法,就是看三极管本身图标的箭头箭头是从 p指向n 中间的基极是n就是pnp三极管 ,中间是p就是npn三极管,然后图标中间的是三极管的基极,有箭头的一侧是三极管发射极,另一侧没有箭头的一侧是三极管的集电极。
除此之外还有mos管也是三极管的一种,跟三极管一样有三个基本的电极 栅极(Gate)、源极(Source)、漏极(Drain)
同样的mos管也具体能细分为p沟道mos管 n沟道mos管,具体的区分方法也就看箭头的指向方向,箭头从内向外指的是pmos管 箭头从外指向内的是n沟道mos管,然后mos管的原理和三极管差不多当,G极是高电平的时候,D极和S极就导通了。
单片机引脚电路作用
引脚最外边的两个二极管,是为了防止引脚在输入状态下的,输入的电压过高或者过低,这样对引脚会造成破坏,加上了两个二极管钳位电路,当引脚处于输入状态,输入的电平超过vdd 或者 vss的时候 二极管导通 这个时候 电压就没有接到芯片的引脚,而是进入到二极管的回路里面,就形成了,对单片机引脚的输入保护。
但是需要注意到的是,二极管钳位电路的保护是有限度的,当输入电压超过电路的限制幅度,单片机引脚一样会被击穿的,同事样的输入电压超过vss幅度限制太多,照样会把单片机的引脚给击穿。
另外就是两个mos管,上面那个是p mos管,下面的是n mos管,因为上面 p mos管连接的是vdd 也就是芯片的高电平,当上面的mos管导通的时候,vdd会从三极管的 g 极到 s极然后再输出,同样的如果需要输出低电平也就是 给下面nmos管一个高电平 这个时候单片机的nmos 会被导通同时因为连接着单片机的vss,也就是单片机内部的低电平,如果nmos导通过后,也就输出引脚外边的低电平了。
这里vdd的意思是芯片内部的电源正极 vss的意思是芯片内部的电源负极,同时需要注意的是二极管的导通压降,普通二极管是0.7v肖特基二极管是0..2 0.3v 0.4v 这里芯片的vdd一般是3.3V,输入电压当时4v的时候才会通道,也就是vdd+0.7v的时候才会导通。
同样的当输入电压为 vss-0.7v的时候,电压才会导通,也是因为二极管本身的导通压降,这里导通压降的意思是,如果二极管导通二极管两端会存在一个,电源电压降。
STM8GPIO工作模式
这里STM8单片机跟STM32单片机不一样只有6中GPIO的模式,少了输入下拉,还有复用推完输出,复用开漏输出,这里开漏的意思是,内部引脚的mos管pmos管不能导通,既然不能导通就没有办法输出vdd高电平。
GPIO外设寄存器
STM8对单片机GPIO外设的控制是通过,给GPIO的寄存器来赋值来完成的,GPIO有五个寄存器分别是 输入寄存器 IDR 输出寄存器 ODR 方向寄存器 DDR 控制寄存器1 CR1 控制寄存器 CR2 。
在程序中,通过对这些GPIO外设的寄存器写入1 或者 0 来完成对单片机外设的控制。
寄存器含义用法
- DDR 是 Data Direction Register 的缩写,表示“数据方向寄存器”。
- 它用于设置 GPIO 引脚的方向:输入或输出。
- 0:引脚配置为输入模式。
- 1:引脚配置为输出模式。
CR1:Control Register 1
- CR1 是 Control Register 1 的缩写,表示“控制寄存器1”。
- 它用于配置 GPIO 引脚的输入/输出特性,例如输出驱动模式或输入浮空/上拉特性等。
- 0:设置为普通模式(例如弱上拉、无特殊功能)。
- 1:激活额外功能(例如启用上拉电阻、增强驱动能力)。
CR2:Control Register 2
- CR2 是 Control Register 2 的缩写,表示“控制寄存器2”。
- 它用于进一步增强 GPIO 的功能配置,例如输出速率控制或引脚复用模式等。
- 0:禁用高驱动或复用功能。
- 1:启用高驱动模式或特殊功能(例如快速响应输出)。
ODR:Output Data Register
- ODR 是 Output Data Register 的缩写,表示“输出数据寄存器”。
- 它用于控制 GPIO 引脚的输出电平:
- 0:输出低电平(0V,接地)。
- 1:输出高电平(通常为VDD电压)。
IDR:Input Data Register
- IDR 是 Input Data Register 的缩写,表示“输入数据寄存器”。
- 它用于读取 GPIO 引脚的当前电平状态:
- 0:引脚当前为低电平(0V)。
- 1:引脚当前为高电平(通常为VDD电压)。
这里需要注意的是 DDR 还有 CR1 CR2 配置的是GPIO的模式,配置完模式之后,根据自身设定的模式对 ODR 寄存器写入数据或者IDR寄存器读取数据。
STM8赋值寄存器控制引脚状态
上面给出了GPIO的每个寄存器的作用,这里就开始使用这些寄存器,来完成对引脚的状态进行控制。
问题1 将PB端口引脚高4位配置为输出,第四位配置为输入模式
问题2 配置PB端口 PB7 PB6输出模式 PB5 PB4 PB3 PB2输入模式 PB0 PB1为输出模式
void GPIO_Init(void)
{
PB_DDR = 0xf0;
//方向寄存器DDR控制 0 输入 1 输出
}
PX_DDR X取值 A B C D 取不同的值代表不同的端口
void GPIO_Init(void)
{
PB_DDR = 0xc3;
}
问题3将PB端口PB6和PB2配置为输出模式 其余端口保持原有状态不变
问题4将PB端口PB7 PB5 PB3 PB1配置为输出模式 其余端口保持不变
void GPIO_Init(void)
{
PB_DDR= PB_DDR|0x42;
}
//这里使用|运算 将数据其他格式全部取0 1|0还是1 0|0还是0 这样原有位就保留不变了
void GPIO_Init(void)
{
PB_DDR = PB_DDR |0xAA;
}
【龙顺宇STM8单片机教程】51单片机过渡32单片机的好“跳板”_哔哩哔哩_bilibili
欢迎指正,希望对你,有所帮助!!!