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 径…

商务礼仪学习笔记

时间,场合,地点 女士: 1. 着装(裙装套装,最短不能超过膝盖一拳,裙子形状直通,颜色简单不能花里胡哨,上下颜色不能超过三种,深灰深蓝;上下颜色,装饰,面料统一;丝袜不要过于花,肉色透明比较推荐) 2. 妆容和发型(经过搭理,不要毛躁; 肤色保持一致,均衡;腮红…

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…

iOS swift开发系列--如何给swiftui内容视图添加背景图片显示

我需要在swiftui项目中显示背景图,有两种方式,一种是把图片拖入asset资源中,另外一种是直接把图片放在源码目录下。采用第一种方式,直接把图片拖到资源目录,但是swiftui项目没有弹出, “Copy items if need…

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控制台出现下获取浏览器录音功能,因为安全性问题,需要在…

【前端知识】Javascript进阶-类和继承

文章目录 概述一、类(Class)二、继承(Inheritance) 三、继承的实现方式作用一、类和作用二、继承和作用 概述 当然可以,以下是对JavaScript中类和继承的详细介绍: 一、类(Class) 定…

前端搭建企业级项目的具体步骤?

‌前端搭建企业级项目的具体步骤如下‌: ‌确定项目技术栈和规划项目结构‌:首先,确定使用的前端框架,如Vue.js,并规划项目的目录结构,包括src、components、routes、store等‌。 ‌准备开发环境‌&#x…

Less和SCSS,哪个更好用?

前言 Less 和 SCSS 都是流行的 CSS 预处理器,它们的目的都是扩展 CSS 的功能,使样式表更具组织性、可维护性和可重用性。虽然它们有许多相似之处,但在语法、特性和工作方式上也存在一些差异。 Less Less 是一种动态样式表语言,…

【第三节】Git 基本操作指南

目录 前言 一、获取与创建项目 1.1 git init 1.2 git clone 二、基本快照操作 2.1 git add 2.2 git status 2.3 git diff 2.4 git commit 2.5 git reset HEAD 三、 文件管理 3.1 git rm 3.2 git mv 四、 总结 前言 本文将详细介绍 Git 的基本操作,包括…

【Graylog】索引别名deflector的异常处理和索引分片数限制解除

索引别名deflector的异常处理 官方推荐处理步骤 Stop all Graylog nodes (OPTIONAL) If you want to keep the already ingested messages, reindex them into the Elasticsearch index with the greatest number, e. g. graylog_23 if you want to fix the deflector graylo…

PyTorch 2.0 以下版本中设置默认使用 GPU 的方法

PyTorch 2.0 以下版本中设置默认使用 GPU 的方法 在 PyTorch 2.0以下版本中,默认情况下仍然是使用 CPU 进行计算,除非明确指定使用 GPU。在 PyTorch 2.0 以下版本中,虽然没有 torch.set_default_device 的便捷方法,但可以通过显式…

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

【一本通】输入两个不同的数,通过指针对两个数进行相加和相乘 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…

clickhouse 查询优化思路

最重要的是要学会看懂explain &#xff0c;尤其是下推创建表时&#xff0c;可以选择表为分布式表。多个表join &#xff0c;创建表时根据join 字段,进行分片&#xff0c;让数据在同一个节点进行join &#xff0c;提高join 效率。多个表join , 通过创建物化视图的方式&#xff0…

两数之和(Hash表)

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