单片机02_寄存器_GPIO设置

news2025/1/12 23:09:13
芯片概述

        C51:0口、1口、2口、3口,P00~p07、P10~P17、P20~P27、P30~P37

        STM32:A口、B口、C口、D口,PA0~PA15/PA5 == GPIOA.5

        STM32F407ZGT6有7组GPIO端口,分别是:A B C D E F G,每组均有16个GPIO端口,端口编号:0-15。

GPIO模块功能

以STM32F40x芯片为例。

输入浮空

在浮空状态下,外界给GPIO端口的电平状态是不确定的,完全由外部输入决定。(一般选择使用时硬件工程师会加上拉或者下拉电阻)

输入上拉

在没有外界输入的情况下,能够让GPIO端口有一个确定的高电平状态。

输入下拉

在没有外界输入的情况下,能够让GPIO端口有一个确定的低电平状态。

模拟功能

芯片内部ADC或者DAC专用功能

通用开漏输出

也叫断开输出(断开MOS管),可以正常输出低电平“0”,没有输出高电平“1”的能力。

如果想输出高电平,则需要配置为具有上拉功能的开漏输出(芯片内部的上拉电阻属于弱上拉,如果需要或者较强的驱动能力,则需要外接一个上拉电阻(硬件工程师设置))。开漏输出慎用,用的时候尽量是在硬件工程师给配置了上拉电阻的时候使用。

通用推挽输出

单片机给外界输出数据,推挽输出既可以输出高电平也可以输出低电平

复用功能开漏输出

复用功能指的是GPIO端口的第二功能(除了默认的输入输出功能以外),也就是片内外设(芯片以内内核以外)模块功能管脚的专用功能。

复用功能推挽指的是当GPIO端口作为第二功能时配置为开漏模式输出。

复用功能推挽输出

复用功能推挽指的是当GPIO端口作为第二功能时配置为推挽模式输出。

注:通用/默认:GPIO的输入和输出功能   单片机给外界高低电平或者外界给单片机高低电平。

       复用:通过GPIO端口做其他的功能,比如给外界串口数据或者外界将数据/波形发给单片机。

GPIO端口内部框图STM32F40x芯片

GPIO模块相关寄存器STM32F40x
时钟使能的概述   

        为了节省功耗,STM系列单片机专门设置了相关寄存器来控制每一个片内外设模块的时钟使能(开启)或关闭(默认状态下时钟是关闭状态的),在使用任何模块之前都必须先使能对应模块的时钟,否则对对应模块的配置无效。

时钟使能相关寄存器

        ①RCC_AHB1外设时钟使能寄存器

          寄存器作用:对AHB1系统总线上的片内外设模块进行时钟使能,在对应的位上写‘1’,则使能相对应的外设模块时钟。

        ②RCC_AHB2外设时钟使能寄存器

        ③RCC_AHB3外设时钟使能寄存器

        ④RCC_APB1外设时钟使能寄存器

        ⑤RCC_APB2外设时钟使能寄存器

STM32F40x系列时钟使能步骤

        1.找出所需要使能时钟的片内外设模块挂载在那一条时钟总线上,参考“英文数据手册2.2章”。

        2.找出中文参考手册第六章系统总线对应的时钟使能寄存器,并且在相应的位上写‘1’使能外设模块时钟。

GPIO端口相关寄存器STM32F40x芯片

点亮位于PB3的LED6灯

GPIO端口模式寄存器

PB3设置为输出模式。

GPIO端口输出类型寄存器

PB3设置为推挽输出

GPIO端口输出速度寄存器

PB3设置高速输出模式

GPIO端口输出数据寄存器

关闭LED6,PB3设置为高电平,ODR3位设置为1;

引脚输出高电平;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1459426.html

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

相关文章

com.alibaba.fastjson.JSONException: toJSON error的原因

问题: 导出接口报错,显示json格式化异常 发现问题: 第一个参数为HttpResponse,转换成json的时候报错 修改方法: 1.调换两个参数的位置 2.在aop判断里边 把ServletAPI过滤掉 Before("excudeWebController()")pub…

Leetcode1206(设计跳表)

例题: 分析: 我们先来找一找跳表与单链表的相同点和不同点。 相同点: 跳表和单链表一样,都是由一个一个的节点组成的链表。 不同点: ①:跳表中的元素已经是排好序的(图中从小到大)&…

突破性创新:OpenAI推出Sora视频模型,预示视频制作技术的未来已到来!

一、前言 此页面上的所有视频均由 Sora 直接生成,未经修改。 OpenAI - Sora is an AI model that can create realistic and imaginative scenes from text instructions. 2024 年 2 月 16 日,OpenAI 发布 AI 视频模型 Sora,60 秒的一镜到底…

STM32-启用蜂鸣器

目录 1 、电路构成及原理图 2、编写实现代码 main.c beep.c beep.h 3、代码讲解 4、 烧录到开发板调试、验证代码 5、检验效果 本人使用的是朗峰 STM32F103 系列开发板,此笔记基于这款开发板记录。 1 、电路构成及原理图 首先,通过朗峰 F1 开…

VILT算法解读

VILT是一种典型的单塔结构,不同于双塔结构由两个独立的Image Encoder以及Text Encoder组成(比如clip),单塔结构的模型一般只有一个共用的编码器,称为Multi-Modal Encoder。 1、VILT算法原理 VILT被认为是最简单的…

SpringBoot中使用PageHelper插件实现Mybatis分页

场景 SpringBoot中整合Mybatis时一般添加的依赖为 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.1</version></dependency> 如果要实现分页查…

PostgreSQL按日期列创建分区表

在PostgreSQL中&#xff0c;实现自动创建分区表主要依赖于表的分区功能&#xff0c;这一功能从PostgreSQL 10开始引入。分区表可以帮助管理大量数据&#xff0c;通过分布数据到不同的分区来提高查询效率和数据维护的便捷性。以下是在PostgreSQL中自动创建分区表的一般步骤&…

docker之安装mongo创建运行环境

目录 一、docker pull 最新资源 二、启动mongo镜像 启动命令查看日志拉取低版本镜像成功启动 三、进入mongo容器 进入容器进入mongo环境查询当前所在库切换库至admin随意切换库 并 创建用户登录用户新增文档数据等 五、总结 版本兼容可备份操作 一、docker pull 最新资源…

java面试集合篇

上面是java中集合的整体框架图。 集合使用的数据结构 算法复杂度分析 时间复杂度分析 时间复杂度分析&#xff1a;来评估代码的执行耗时的 /*** 求1~n的累加和* param n* return*/ public int sum(int n) {int sum 0;for ( int i 1; i < n; i) {sum sum i;}return …

【常识】大数据设计基础知识

底层存储&#xff1a;hadoop&#xff08;hdfsmapreduce&#xff09; Hadoop已经有十几年的历史&#xff0c;它是大数据领域的存储基石&#xff0c;HDFS目前仍然没有成熟替代品;MapR 文件系统在业内已经具有一定知名度了&#xff0c;不仅 MapR 宣布它自己的文件系统比 HDFS 快2-…

模板(函数模板)---C++

模板目录 模板1.模板概念&#xff12;.泛型编程 1.函数模板1.1 函数模板语法1.2 函数模板注意事项1.3 普通函数与函数模板的区别1.4 普通函数与函数模板的调用规则1.5 模板的局限性1.6 函数模板案例 模板 1.模板概念 模板就是建立通用的模具&#xff0c;大大提高复用性。 模板…

如何在本地服务器部署TeslaMate并远程查看特斯拉汽车数据无需公网ip

文章目录 1. Docker部署TeslaMate2. 本地访问TeslaMate3. Linux安装Cpolar4. 配置TeslaMate公网地址5. 远程访问TeslaMate6. 固定TeslaMate公网地址7. 固定地址访问TeslaMate TeslaMate是一个开源软件&#xff0c;可以通过连接特斯拉账号&#xff0c;记录行驶历史&#xff0c;统…

解决Edge浏览器,微博无法查看大图(Edge Image Viewer)

使用Edge浏览器浏览微博或其它带校验的图片时&#xff0c;会导致无法查看。 主要原因为Edge自带了一个Edge Image Viewer, 但是该图片查看器无法查看带校验数据的图片&#xff0c;所以导致查看时一片空白。 解决方法 地址栏输入 edge://flags/搜索 Edge Image Viewer选择 Disa…

爬虫学习笔记-scrapy爬取电影天堂(双层网址嵌套)

1.终端运行scrapy startproject movie,创建项目 2.接口查找 3.终端cd到spiders,cd scrapy_carhome/scrapy_movie/spiders,运行 scrapy genspider mv https://dy2018.com/ 4.打开mv,编写代码,爬取电影名和网址 5.用爬取的网址请求,使用meta属性传递name ,callback调用自定义的…

JVM原理学习

一.栈上的数据存储P95 二.堆上的数据存储 标记字段 指针压缩(节省空间 内存对齐(提高CPU缓存行效率 字段重排列方便内存对齐 类排在基本类型之后 三.JIT实时编译 优化手段 C2编译器&#xff0c;直接将循环相加求和优化为乘法。 方法内联 逃逸分析 四.G1垃圾回收器原理 年轻代…

Vue | (三)使用Vue脚手架(中)| 尚硅谷Vue2.0+Vue3.0全套教程

文章目录 &#x1f4da;Todo-list 案例&#x1f407;组件化编码流程&#xff08;通用&#xff09;&#x1f407;实现静态组件&#x1f407;展示动态数据&#x1f407;交互⭐️添加一个todo⭐️todo勾选实现⭐️删除功能实现⭐️底部统计功能实现⭐️底部全选功能实现⭐️底部一…

Vue报错,xxx is defined #变量未定义

vue.js:5129 [Vue warn]: Error in v-on handler: "ReferenceError: count is not defined" 浏览器将这个变量 当做全局变量了&#xff0c;事实上它只是实例中的变量 加上this指定&#xff0c;是vue实例中的变量

Android之Android.bp文件格式语法(一百八十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

代码随想录算法训练营day20

题目&#xff1a;530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先 参考链接&#xff1a;代码随想录 530.二叉搜索树的最小绝对差 思路&#xff1a;我一开始想到的方法是先生成中序序列&#xff0c;然后对相邻两项的差进行计算&#xff0c;取…

代码随想录刷题笔记-Day21

1. 二叉搜索树中的插入操作 701. 二叉搜索树中的插入操作https://leetcode.cn/problems/insert-into-a-binary-search-tree/给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。…