STM8单片机学习笔记·GPIO的片上外设寄存器

ops/2024/12/17 7:38:20/

目录

前言

IC基本定义

三极管基础知识

单片机引脚电路作用

GPIO.html" title=STM8GPIO>STM8GPIO%E5%B7%A5%E4%BD%9C%E6%A8%A1%E5%BC%8F-toc" style="margin-left:0px;">GPIO.html" title=STM8GPIO>STM8GPIO工作模式

GPIO%E5%A4%96%E8%AE%BE%E5%AF%84%E5%AD%98%E5%99%A8-toc" style="margin-left:0px;">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的时候,电压才会导通,也是因为二极管本身的导通压降,这里导通压降的意思是,如果二极管导通二极管两端会存在一个,电源电压降。

GPIO.html" title=STM8GPIO>STM8GPIO%E5%B7%A5%E4%BD%9C%E6%A8%A1%E5%BC%8F">GPIO.html" title=STM8GPIO>STM8GPIO工作模式

        这里STM8单片机跟STM32单片机不一样只有6中GPIO的模式,少了输入下拉,还有复用推完输出,复用开漏输出,这里开漏的意思是,内部引脚的mos管pmos管不能导通,既然不能导通就没有办法输出vdd高电平。

GPIO%E5%A4%96%E8%AE%BE%E5%AF%84%E5%AD%98%E5%99%A8">GPIO外设寄存器

        STM8对单片机GPIO外设的控制是通过,给GPIO的寄存器来赋值来完成的,GPIO有五个寄存器分别是 输入寄存器 IDR 输出寄存器 ODR 方向寄存器 DDR 控制寄存器1 CR1 控制寄存器 CR2 。

        在程序中,通过对这些GPIO外设的寄存器写入1 或者 0 来完成对单片机外设的控制。

寄存器含义用法

  • DDRData 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

                                        欢迎指正,希望对你,有所帮助!!!


http://www.ppmy.cn/ops/142591.html

相关文章

clearvoice 语音降噪、语音分离库

参看: https://github.com/modelscope/ClearerVoice-Studio/tree/main ClearVoice 提供了一个统一的推理平台,用于语音增强、语音分离以及视听目标说话人提取。 代码参看: https://github.com/modelscope/ClearerVoice-Studio/tree/main/clearvoice https://github.com/mode…

超越飞书钉钉:探索高效内部知识库平替方案与应用

在团队协作日益频繁的今天,飞书与钉钉作为两大主流的企业沟通与协作平台,广受企业青睐。然而,随着企业规模的扩大和知识的累积,单纯的沟通与协作已难以满足企业对知识管理与传承的需求。因此,寻找一款能够高效整合内部…

在k8s上暴露EMQX(v4)的指标

1.开启prometheus 插件 部署的是 EMQX 4.4 开源版, 则需要通过 EmqxPlugin CRD 开启emqx_prometheus 插件: cat << "EOF" | kubectl apply -f - apiVersion: apps.emqx.io/v1beta4 kind: EmqxPlugin metadata:name: emqx-prometheus spec:pluginName: emqx_p…

【python从入门到精通】-- 第六战:列表和元组

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;重生之我在学Linux&#xff0c;C打怪之路&#xff0c;python从入门到精通&#xff0c;数据结构&#xff0c;C语言&#xff0c;C语言题集&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持…

OCR与视觉模型应用浅析

光学字符识别&#xff08;OCR&#xff09;与视觉模型的深度解析 引言行业发展与背景市场规模与应用场景技术沿革 响应的技术与工具技术特点工具 功能与效果功能效果 视觉模型介绍视觉大模型的原理应用方向发展方向 详细分析OCR技术的发展背景OCR技术的关键技术OCR技术的应用案例…

C++:一个以继承方式展开模板参数包的步步解析

我们来分析一下主函数中T的最终类型是什么。 // T1 template<int...> struct IndexSeq {};// T2 template<int N, int... Indices> struct MakeIndices : MakeIndices<N - 1, N - 1, Indices...> {};// T3 template<int... Indices> struct MakeIndic…

Ubuntu安装Gitlab详细图文教程

1、环境准备 1.1、Ubuntu环境 Ubuntu24.04Sever版安装教程 1.2、更新系统 sudo apt update -y sudo apt-get update sudo apt-get upgrade 2、安装Nginx 2.1 安装nginx # 安装 apt install nginx -y 2.2 修改nginx配置⽂件 # 修改nginx配置 vim /etc/nginx/si…

阿里云服务器手动部署LNMP环境【官方文档注意事项】

这是官方文档 注意&#xff1a; 要添加安全组&#xff0c;端口为80。否则最后用浏览器访问公网IP没有结果。 Mysql密码策略要求密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符&#xff0c;并且密码总长度至少为 8 个字符。sudo mysqladmin -uroot -p<ol…