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

目录

前言

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 来完成对单片机外设的控制。

寄存器含义用法

  • 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.mzph.cn/web/63125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CSS in Depth 2 精译_081】 13.1:CSS 渐变效果(下)——CSS 径向渐变(13.1.3)+ CSS 锥形渐变(13.1.4)

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 13 章 渐变、阴影与混合模式】 ✔️ 13.1 渐变 ✔️ 13.1.1 使用多个颜色节点(上)13.1.2 颜色插值方法(中)13.1.3 径…

ubuntu 用 ss-tproxy的最终网络结构

1、包含了AD广告域名筛选 2、Ss-tproxy 国内国外地址分类 3、chinadns-ng解析 4、透明网关 更多细节看之前博客 ubuntu 用ss-TPROXY实现透明代理,基于TPROXY的透明TCP/UDP代理,在 Linux 2.6.28 后进入官方内核。ubuntu 用 ss-tproxy的内置 DNS 前挂上 AdGuardHome…

BUUCTF Pwn [HarekazeCTF2019]baby_rop2 题解

下载 得到两个文件 checksec 64位 拖入IDA64 查看main函数 看到给了个libc说明这题是ret2libc题 这里的打印函数是printf 所以利用printf函数的plt输出真实地址got 但printf的got好像不行 所以换成了read的got 因为这是64位程序 所以用寄存器传参;又因为printf得…

语音识别失败 chrome下获取浏览器录音功能,因为安全性问题,需要在localhost或127.0.0.1或https下才能获取权限

环境: Win10专业版 谷歌浏览器 版本 131.0.6778.140(正式版本) (64 位) 问题描述: 局域网web语音识别出现识别失败 chrome控制台出现下获取浏览器录音功能,因为安全性问题,需要在…

【一本通】输入两个不同的数,通过指针对两个数进行相加和相乘

【一本通】输入两个不同的数,通过指针对两个数进行相加和相乘 C语言代码C代码Java代码 💐The Begin💐点点关注,收藏不迷路💐 输入两个不同的数,通过指针对两个数进行相加和相乘,并输出。 输入 …

X.game解析柚子币提升速效双向利好和年中历史新低原因

柚子币最新消息,币安宣布将于2024年9月25日21:00左右暂停柚子币网络上的代币存取业务,以全力支持即将到来的柚子币网络升级和硬分叉,这一消息为柚子币的未来发展增添了新的期待和变数。 除了速度的提升,Spring1.0还带来了诸多技术…

redis集群安装部署 redis三主三从集群

redis集群安装部署 redis三主三从集群 1、下载redis2、安装redis集群 三主三从3、配置redis开机自启动3.1、建立启动脚本3.2、复制多份redis启动脚本给集群使用3.3、添加可执行权限3.4、配置开机自启动 1、下载redis 本次redis安装部署选择当前最新的稳定版本7.4.1 下载链接: …

数据结构,链表的简单使用

任意位置删除&#xff1a; void Any_Del(LinkListPtr h,int a)//任意删 {if(NULLh||a>h->len){printf("删除失败");}LinkListPtr ph;for(int i0;i<a-1;i){pp->next;}LinkListPtr p2p;p2p2->next;p->nextp->next->next;free(p2);p2NULL;h-&g…

Servlet容器来扫描指定包中的类 找到带有WebServlet注解的类

项目框架如上图 myweb下边三个类 package com.qcby.tomcat.myweb;import com.qcby.tomcat.webServlet.WebServlet;WebServlet(urlPatterns {"MyFirstServlet"}) public class MyFirstServlet {}package com.qcby.tomcat.myweb;import com.qcby.tomcat.webServlet.W…

两数之和(Hash表)

优质博文&#xff1a;IT-BLOG-CN 一、题目 给定一个整数数组nums和一个整数目标值target&#xff0c;请你在该数组中找出"和"为目标值target的那两个整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元…

C++8--赋值运算符重载

1.运算符重载 C引入运算符的目的是为了增强代码的可读性。运算符重载是具有特殊函数名的函数&#xff0c;也具有其返回值类型&#xff0c;函数名字以及参数列表&#xff0c;其返回值类型与参数列表与普通的函数相似。 函数名字为&#xff1a;关键字operator后面接需要重载的运算…

pyfink1.20版本下实现消费kafka中数据并实时计算

1、环境 JDK版本&#xff1a;1.8.0_412python版本&#xff1a;3.10.6apache-flink版本&#xff1a;1.20.0flink版本&#xff1a;1.20kafka版本&#xff1a;kafka_2.12-3.1.1flink-sql-connector-kafka版本&#xff1a;3.3.0-1.202、执行python-flink脚本 从kafka的demo获取消…

数据结构速成

1. 数据结构与算法 2. 顺序表 3. 链表 4. 栈与队列 5. 串 6. 树与二叉树&#xff08;1&#xff09; 7. 树与二叉树&#xff08;2&#xff09; 8. 图 9. 图的应用 10. 查找 11. 排序&#xff08;1&#xff09; 12. 排序&#xff08;2&#xff09;

从源码层级深入探索 Spring AMQP 如何在 Spring Boot 中实现 RabbitMQ 集成——消费者如何进行消费

本章节主要从底层源码探索Spring Boot中RabbitMQ如何进行消费&#xff0c;至于RabbitMQ是如何使用如何生产消息&#xff0c;本章不做过多介绍&#xff0c;感兴趣的小伙伴可以参考&#xff1a;从源码层级深入探索 Spring AMQP 如何在 Spring Boot 中实现 RabbitMQ 集成——生产者…

计算机视觉中的边缘检测算法

摘要&#xff1a; 本文全面深入地探讨了计算机视觉中的边缘检测算法。首先阐述了边缘检测的重要性及其在计算机视觉领域的基础地位&#xff0c;随后详细介绍了经典的边缘检测算法&#xff0c;包括基于梯度的 Sobel 算子算法、Canny 边缘检测算法等&#xff0c;深入剖析了它们的…

Unix 和 Windows 的有趣比较

Unix 和 Windows NT 比较 来源于这两本书&#xff0c;把两本书对照来读&#xff0c;发现很多有意思的地方&#xff1a; 《Unix 传奇》 https://book.douban.com/subject/35292726/ 《观止 微软创建NT和未来的夺命狂奔 》 Showstopper!: The Breakneck Race to Create Windows…

SSM 垃圾分类系统——高效分类的科技保障

第五章 系统功能实现 5.1管理员登录 管理员登录&#xff0c;通过填写用户名、密码、角色等信息&#xff0c;输入完成后选择登录即可进入垃圾分类系统&#xff0c;如图5-1所示。 图5-1管理员登录界面图 5.2管理员功能实现 5.2.1 用户管理 管理员对用户管理进行填写账号、姓名、…

系列1:基于Centos-8.6部署Kubernetes (1.24-1.30)

每日禅语 “木末芙蓉花&#xff0c;山中发红萼&#xff0c;涧户寂无人&#xff0c;纷纷开自落。​”这是王维的一首诗&#xff0c;名叫《辛夷坞》​。这首诗写的是在辛夷坞这个幽深的山谷里&#xff0c;辛夷花自开自落&#xff0c;平淡得很&#xff0c;既没有生的喜悦&#xff…

Y20030004基于asp.net+Sql的环保网站的设计与实现(附源码 调试 文档)

环保网站的设计与实现 1.摘要要2. 系统功能3.功能结构图4.界面展示5.源码获取 1.摘要要 近几年国家对于环境管理是高度重视&#xff0c;尤其是对于环境生态的破坏与环境污染&#xff0c;已经严重影响到人类的生存和发展。为了使生态环境能够得到保护和改善&#xff0c;持续发展…

安全计算环境-(一)路由器-1

安全计算环境-网络设备 安全管理中心针对整个系统提出了安全管理方面的技术控制要求&#xff0c;通过技术手段实现集中管理&#xff1b;涉及的安全控制点包括系统管理、审计管理、安全管理和集中管控。以下以三级等级保护对象为例&#xff0c;描述安全管理中心各个控制要求项的…