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 来完成对单片机外设的控制。
寄存器含义用法
- 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
欢迎指正,希望对你,有所帮助!!!
相关文章:
STM8单片机学习笔记·GPIO的片上外设寄存器
目录 前言 IC基本定义 三极管基础知识 单片机引脚电路作用 STM8GPIO工作模式 GPIO外设寄存器 寄存器含义用法 CR1:Control Register 1 CR2:Control Register 2 ODR:Output Data Register IDR:Input Data Register 赋值…...
2-2-18-16 QNX系统架构之自适应分区
阅读前言 本文以QNX系统官方的文档英文原版资料为参考,翻译和逐句校对后,对QNX操作系统的相关概念进行了深度整理,旨在帮助想要了解QNX的读者及开发者可以快速阅读,而不必查看晦涩难懂的英文原文,这些文章将会作为一个…...
【Python网络爬虫笔记】11- Xpath精准定位元素
目录 一、Xpath 在 Python 网络爬虫中的作用(一)精准定位元素(二)应对动态网页(三)数据结构化提取 二、Xpath 的常用方法(一)节点选取(二)谓词筛选࿰…...
Rustdesk 安装客户端以及自己搭建服务器跑通参考资料
Rustdesk 安装客户端以及自己搭建服务器跑通参考资料 下载客户端: rustdesk客户端-github下载地址 windows正常安装就行了,ubuntu安装参考下面: ubuntu安装rustdesk客户端 在centos中利用docker安装rustdesk-server,先进行cento…...
源码编译jdk7 超详细教程 openjdk7
关于源代码 当前的openJDK的源代码已经被发布到了github上了,所以我们可以直接从github上下载到。 OpenJDK7u源码托管地址:https://github.com/openjdk/jdk7u 带后缀U的地址,或者发行的jdk包,表示当前版本下的持续跟新版。而他…...
如何实现日期选择窗口
文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了TimePicker Widget相关的内容,本章回中将介绍DatePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里说的DatePickerDialog是一种弹出窗口,只不过窗口的内容固定显示为日期,它…...
Spring Security 6 系列之一 - 开篇入门
之所以想写这一系列,是因为之前工作过程中使用Spring Security,但当时基于spring-boot 2.3.x,其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0,结果一看Spring Security也升级为6.3.0,关键是其风…...
Spring Cloud概述
1. 认识微服务 1.1 单体架构 很多创业公司早期或者传统企业会把业务的所有功能实现都打包在⼀个项⽬, 这就是单体架构. 业务的所有功能实现都打包在⼀个war包或者Jar包中, 这种⽅式就称为单体架构. 举个例子: 电商系统包括: ⽤⼾管理, 商品管理, 订单管理, ⽀付管理, 库存…...
mvc如何给action传递参数
步骤(常规方法) 新建一个控制器--LarsController.cs using Microsoft.AspNetCore.Mvc; namespace Blog.Controller; public class LarsController:Controller -----继承 {public IActionResult Index(){return View();} }获取id // program.cs中默认值是idpublic IAction…...
【银河麒麟高级服务器操作系统】有关dd及cp测试差异的现象分析详解
了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://documentkylinos.cn dd现象 使用银河麒麟高级服务器操作系统执行两次…...
视频智能分析平台LiteAIServer未戴安全帽检测算法助力矿山安全:精准监督矿工佩戴安全帽情况
矿山作业环境复杂多变,安全隐患层出不穷。其中,矿工未佩戴安全帽这一行为,看似微不足道,实则潜藏着巨大的安全风险。一旦发生事故,未佩戴安全帽的矿工将极易受到重创,甚至危及生命。因此,确保每…...
整数的四舍五入----->记录每一点进步
我们知道整数类型的变量对小数部分都不感冒,只要是小数都会舍去,都让他舍去了我们还讲个P,所以接下来就是告诉你怎么不让他全都舍去。 先来试想一下如果这个数字是3.4,存到整数型变量里面是不是直接变成了3,那么我要是…...
Linux栈帧
相关寄存器&指令 寄存器 rax(accumulator):return value rbx(base) rcx(count):4st argument rdx(data):3st argument rsi(sour…...
【代码随想录day59】【C++复健】 47. 参加科学大会(dijkstra(堆优化版)精讲 );94. 城市间货物运输 I
前几天有些事情耽搁了,不过好在图论我完全不会,所以偷看代码思路也没有任何的心理负担,做起来反而相对独立思考更快一点点。 47. 参加科学大会(dijkstra(堆优化版)精讲 ) 本来一开始以为这个堆…...
【网络安全】WIFI WPA/WPA2协议:深入解析与实践
WIFI WPA/WPA2协议:深入解析与实践 1. WPA/WPA2 协议 1.1 监听 Wi-Fi 流量 解析 WPA/WPA2 的第一步是监听 Wi-Fi 流量,捕获设备与接入点之间的 4 次握手数据。然而,设备通常不会频繁连接或重新连接,为了加速过程,攻…...
穷举vs暴搜vs深搜vs回溯vs剪枝专题一>子集
题目: 两个方法本质就是决策树的画法不同 方法一解析: 代码: class Solution {private List<List<Integer>> ret;//返回结果private List<Integer> path;//记录路径,注意返回现场public List<List<Int…...
试题转excel;word转excel;大风车excel
一、问题描述 一名教师朋友,偶尔会需要整理一些高质量的题目到excel中 以往都是手动复制搬运,几百道题几乎需要一个下午的时间 关键这些事,枯燥无聊费眼睛,实在是看起来就很蠢的工作 就想着做一个工具,可以自动处理…...
Unity NTPComponent应用, 实现一个无后端高效获取网络时间的组件
无后端高效获取网络时间的组件 废话不多说,直接上源码m_NowSerivceTime 一个基于你发行游戏地区的时间偏移, 比如北京时区就是 8, 巴西就是-3,美国就是-5using Newtonsoft.Json; 如果这里报错, 就说明项目没有 NewtonsoftJson插件…...
复合机器人为生产提供精准的建议和决策支持
在现代化生产的浪潮中,智能复合机器人以其卓越的性能和高度智能化特点,正成为保障生产安全与可靠性的重要力量。 智能复合机器人具备精确的感知、判断和决策能力,能够在复杂的生产环境中自主导航、精确操作,避免了人为因素可能导致…...
springboot/ssm二手儿童绘本交易系统Java代码编写web项目闲置书籍源码
springboot/ssm二手儿童绘本交易系统Java代码编写web项目闲置书籍源码 基于springboot(可改ssm)vue项目 开发语言:Java package com.controller;import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.Map;import javax.s…...
30. Three.js案例-绘制并渲染圆弧
30. Three.js案例-绘制并渲染圆弧 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它利用 WebGL 技术在浏览器中渲染 3D 图形。 构造器 new THREE.WebGLRenderer(parameters) 参数类型描述parametersObject可选参数对象ÿ…...
类和对象(2)
大家好,今天我们继续来学习类和对象的知识,那么今天我们来看看类的概念和类的定义相关的知识,那么话不多说,我们直接开始。 2.类定义和使用 面向对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机,但是…...
240004基于ssm+maven+mysql+Java的房屋租赁系统的设计与实现
基于ssmmavenmysql的房屋租赁系统的设计与实现 1.项目描述2.运行环境3.项目截图4.源码获取 1.项目描述 该项目在原有的基础上进行了优化,包括新增了注册功能,房屋模糊查询功能,管理员和用户信息管理等功能,以及对网站界面进行了优…...
HTTP、WebSocket、gRPC 或 WebRTC:各种协议的区别
在为您的应用程序选择通信协议时,有很多不同的选择。 本文将了解四种流行的解决方案:HTTP、WebSocket、gRPC 和 WebRTC。 我们将通过深入学习其背后原理、最佳用途及其优缺点来探索每个协议。 通信方式在不断改进:变得更快、更方便、更可靠&…...
FlowNex 中的两相建模基础知识
通过 FlowNex 中的两相建模解开高效流体动力学的秘密,彻底改变制造业。 挑战 两相流是指两个不同相(通常是液体和气体)同时流动,它们具有不同的特性和行为。在制造业中,了解两相流对于优化热交换器、化学反应器和流体…...
Mysql笔记
windows安装记录Windows中Mysql安装-CSDN博客 用到的库 通过网盘分享的文件:atguigudb.sql 链接: https://pan.baidu.com/s/1YfC20c2vK9odn-XRJJwUJw 提取码: utk7 --来自百度网盘超级会员v5的分享 Mysql4中表关联关系 1.1对1,比较少用,因为完全可以一张表,当有…...
docker拉取rabbitmq镜像安装延迟队列插件
我这里使用的是rabbitmq:3.12.0-management版本作为示例 1.拉取rabbitmq镜像 docker pull rabbitmq:3.12.0-management 2.启动rabbitmq docker run -d --namerabbitmq --restartalways -p 5672:5672 -p 15672:15672 rabbitmq:3.12.0-management 在咱们拉取时如果出现连接超时可…...
创建一个谷歌插件项目dome上线流程+源码
创建一个简单的 Chrome 扩展程序,其主要功能是 JSON 格式化。用户可以通过点击扩展图标打开一个弹出窗口,在弹出窗口中输入或粘贴 JSON 数据,然后点击格式化按钮来格式化 JSON 数据 谷歌插件(即 Chrome 扩展程序)主要设…...
举例说明如何在linux下检测摄像头设备具备的功能
假设摄像头设备文件为/dev/video1 ,下面是一个专门用于检测 /dev/video1 设备能力的简化程序。这个程序将打印出设备的所有能力、格式和其他相关信息,以帮助你了解设备支持的功能。 检测 /dev/video1 设备能力的程序 #include <fcntl.h> #includ…...
win10配置子系统Ubuntu子系统(无需通过Windows应用市场)实际操作记录
win10配置子系统Ubuntu子系统(无需通过Windows应用市场)实际操作记录 参考教程 : win10配置子系统Ubuntu子系统(无需通过Windows应用市场) - 一佳一 - 博客园 开启虚拟机服务的 以管理员方式运行PowerShell运行命令。 …...
东北大学《2024年839自动控制原理真题》 (完整版)
本文内容,全部选自自动化考研联盟的:《东北大学839自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题...
5G中的ATG Band
Air to Ground Networks for NR是R18 NR引入的。ATG很多部分和NTN类似中的内容类似。比较明显不同的是,NTN的RF内容有TS 38.101-5单独去讲,而ATG则会和地面网络共用某些band,这部分在38.101-1中有描述。 所以会存在ATG与地面网络之间的相邻信…...
nginx负载均衡配置
目录 一、简介 二、nginx下载 二、nginx配置 四、注意点 (1)/api与/api/的区别 (2)http://gatewayserver与http://gatewayserver/的区别 一、简介 Nginx(发音为 "engine-x")是一个高性能的HTTP和反向代理服务器,也是一个IMA…...
【教学类-83-02】20241214立体书三角嘴2.0——青蛙(扁菱形嘴)
背景需求: 制作小鸡立体贺卡三角嘴,它的嘴是正菱形(四条边长度相等,类似正方形) 【教学类-83-01】20241215立体书三角嘴1.0——小鸡(正菱形嘴)-CSDN博客文章浏览阅读744次,点赞22次…...
vscode设置终端代理
转载请标明出处:小帆的帆的博客 设置终端代理 修改项目的.vscode/settings.json {"terminal.integrated.env.windows": {"http_proxy": "http://127.0.0.1:7890","https_proxy": "http://127.0.0.1:7890"}, }…...
【C++】函数计算题解论
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述💯思路解析3.1 函数的递归定义3.2 边界条件控制3.3 记忆化搜索 💯C实现代码💯添加解释💯小结 💯前言 在…...
Redis篇-21--运维篇3-集群(分片,水平扩展,高可用,集群配置案例,扩展哨兵案例)
1、概述 Redis集群(Cluster)通过分片(sharding)实现了水平扩展,允许数据分布在多个节点上,从而提升性能和存储容量。 在Redis集群中,数据被分割成16384个哈希槽(hash slots&#x…...
Unity3d场景童话梦幻卡通Q版城镇建筑植物山石3D模型游戏美术素材
注明:网络素材,仅供学习使用! https://download.csdn.net/download/elineSea/90017291...
深入理解addEventListener中的第二个参数:listener
起因 首先,之前留给我们的一点东西,js的深入内容关键在addEventListener,这个函数中的参数,它们三个参数,分别为type、listener、options,当然在这里还有一些小的问题,比如mdn文档中它介绍到了另…...
数据库镜像(Database Mirroring):高可用性与灾难恢复技术
一、引言 在现代信息系统中,数据的可用性和完整性至关重要,尤其是对金融、电商、医疗等高并发和高可靠性要求的行业。数据库镜像(Database Mirroring) 作为一种高可用性与灾难恢复技术,通过将主数据库的数据实时复制到…...
【Qt】按钮类控件:QPushButton、QRadioButton、QCheckBox、ToolButton
目录 QPushButton 例子: QRadioButton 例子: 按钮的常见信号函数 单选按钮分组 例子: QCheckButton 例子: QToolButton QWidget的常见属性及其功能对于它的派生类控件都是有效的(也就是Qt中的各种控件),包括…...
day-21 内核链表以及栈
1.昨日作业 1.删除指定节点 找到删除就完事了,双向可以停在删除处。 /***************************** 功能:删除指定结点(通过姓名)* 参数:phead;oldname; * 返回:成功0,失-1&…...
深度与视差的关系及其转换
深度与视差的关系及其转换 在计算机视觉和立体视觉中,深度和视差是两个重要的概念。理解这两者之间的关系对于实现立体图像处理、三维重建以及深度估计至关重要。在这篇博客中,我们将深入探讨深度和视差的概念,并介绍它们之间的转换关系。 …...
Unity全局光照详解
之前就学过但是太久没用又忘了,因此用最简洁易懂的语言做个记录。 全局光照分为两个系统,分别是实时光照和混合光照。(点击window/Rendering/Lighing打开此面板) 其中全局光照对于我来说都是新技术了,上一次学…...
外观模式的理解和实践
外观模式(Facade Pattern)是一种常用的软件设计模式,它提供了一个统一的接口,用来访问子系统中的一群接口。该模式定义了一个高层的接口,使得子系统更容易使用。简单来说,外观模式就是通过引入一个外观角色…...
【前端知识】Javascript进阶-类和继承
文章目录 概述一、类(Class)二、继承(Inheritance) 三、继承的实现方式作用一、类和作用二、继承和作用 概述 当然可以,以下是对JavaScript中类和继承的详细介绍: 一、类(Class) 定…...
Kylin麒麟操作系统 | Nginx服务部署
目录 一、理论储备1. Nginx概述2. Nginx与Apache的区别3. Nginx的服务配置 二、任务实施任务1 Nginx的编译安装1. Server配置2. 客户端测试 任务2 Nginx反向代理1. Server1配置2. Server2配置3. 客户端测试 一、理论储备 1. Nginx概述 Nginx是一个轻量级的web服务器ÿ…...
51单片机--- 串口控制仿真
51单片机--- 串口控制仿真 实验目标:51单片机接收串口数据,根据数据点亮LED。 实验步骤: 在Proteus里画出原理图 在Keil里用C语言编写程序 在Proteus中导入HEX文件,启动仿真 实验协议: 波特率115200 数据位:8位,停止位:1位,校验位:无。 命令格式: 一条命令为…...
<数据集>输电线塔杂物识别数据集<目标检测>
数据集下载链接 <数据集>输电线塔杂物识别数据集<目标检测>https://download.csdn.net/download/qq_53332949/90141102数据集格式:VOCYOLO格式 图片数量:1099张 标注数量(xml文件个数):1099 …...
HarmonyOS学习 --- Mac电脑获取手机UDID
一,手机打开开发者选项 1,打开“设置 > 关于本机”,连续点击7次版本号,打开开发者选项。 2,打开“USB调试”。 二,配置环境变量 获取OpenHarmony SDK 安装路径 /Users/admin/Library/OpenHarmony/Sdk/10…...