单片机02_寄存器_GPIO设置__点灯

芯片概述

        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芯片

开漏:P-MOS管断开

置位/复位寄存器与输出数据寄存器的区别:

输出数据寄存器:清0

GPIOB->ODR &= ~(1<<3);  //设置PB3为低电平

GPIOB->ODR = GPIOB->ODR &(~(1<<3));

  1. 先计算1<<3的结果: 000001000b
  2. 将第一步计算出来的结果~:111111110111b
  3. 将GPIOB->ODR的默认值取出来:000000000
  4. 将第三步取出来的值与第二步计算的结果进行相与:0000000000
  5. 将第四步计算出来的值赋值给ODR寄存器

置位/复位寄存器:清0

GPIOB->BSRRH = 1<<3;

  1. 计算1<<3的值:00001000b
  2. 将第一步计算的值赋值给BSRRH即可。

输出数据寄存器:置1

GPIOB->ODR |= 1<<3;  //将PB3置一

GPIOB->ODR = GPIOB->ODR | (1<<3);

  1. 先计算1<<3的结果
  2. 将计算的结果与ODR的值进行相或
  3. 将第二步计算的结果赋值给ODR寄存器

置位/复位寄存器:置1

GPIOB->BSRRL = 1<<3;

  1. 计算1<<3的结果
  2. 赋值给BSRRL寄存器
GPIO模块相关寄存器STM32F40x
时钟使能的概述   

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

APBx提供时钟源。

时钟使能相关寄存器

        ①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://xiahunao.cn/news/2805089.html

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

相关文章

robots.txt 文件规则

robots.txt 是一种用于网站根目录的文本文件&#xff0c;其主要目的在于指示网络爬虫&#xff08;web crawlers&#xff09;和其他网页机器人&#xff08;bots&#xff09;哪些页面可以抓取&#xff0c;以及哪些页面不应该被抓取。可以看作是网站和搜索引擎机器人之间的一个协议…

​LeetCode解法汇总2583. 二叉树中的第 K 大层和

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一棵二叉树的根节点 root 和一个正整…

红队评估四靶场

文章目录 环境搭建1.设置所需网卡2.更改win7设置3.DC设置4.web设置开启docker服务5.kali网段`渗透启动`1.确认对方靶机的IP地址2.端口探测3.web探测`2001端口``2002端口`Tomcat/8.5.19漏洞复现`2003端口`4.docker逃逸5.ssh密钥爆破`域渗透启动`1.提权2.隧道搭建各项配置文件内容…

windows 11+docker desktop+grafana+influxDB

下载安装docker desktop 出现WSL相关的错误。WSL是一个linux内核的子系统&#xff0c;docker是基于linux内核的&#xff0c;所以运行docker需要WSL。 以管理员权限打开powershell&#xff0c;查看WSL状态 wsl --status 我遇到的错误是因为我关闭了windows的某些更新 执行上…

MFC 配置Halcon

1.新建一个MFC 工程&#xff0c;Halcon 为64位&#xff0c;所以先将工程改为x64 > VC 目录设置包含目录和库目录 包含目录 库目录 c/c ->常规 链接器 ->常规 > 链接器输入 在窗口中添加头文件 #include "HalconCpp.h" #include "Halcon.h"…

【达梦数据库】数据库的方言问题导致的启动失败

问题场景 在项目中采用了hibernate &#xff0c;连接数据库原本为ORACLE&#xff0c;后续打算改造为国产数据库 达梦 链接配置&#xff1a; # 达梦写法&#xff0c; index:driver-class-name: dm.jdbc.driver.DmDriverjdbc-url: jdbc:dm://192.168.220.225:5236/IDX4username:…

(每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第11章 项目成本管理(四)

博主2023年11月通过了信息系统项目管理的考试&#xff0c;考试过程中发现考试的内容全部是教材中的内容&#xff0c;非常符合我学习的思路&#xff0c;因此博主想通过该平台把自己学习过程中的经验和教材博主认为重要的知识点分享给大家&#xff0c;希望更多的人能够通过考试&a…

计算机毕业设计 基于SpringBoot的宠物商城网站系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Clickhouse系列之连接工具连接、数据类型和数据库

基本操作 一、使用连接工具连接二、数据类型1、数字类型IntFloatDecimal 2、字符串类型StringFixedStringUUID 3、时间类型DateTimeDateTime64Date 4、复合类型ArrayEnum 5、特殊类型Nullable 三、数据库 一、使用连接工具连接 上一篇介绍了clickhouse的命令行登录&#xff0c…

Nginx基本操作

目录 引言 一、Nginx配置文件详解 &#xff08;一&#xff09;配置文件 &#xff08;二&#xff09;模块 二、全局配置文件 &#xff08;一&#xff09;关闭版本或修改版本 1.关闭版本号 2.修改版本信息 &#xff08;二&#xff09;修改启动的进程数 &#xff08;三&…

docker运行onlyoffice,并配置https访问【参考仅用】

官方说明&#xff1a; Installing ONLYOFFICE Docs for Docker on a local server - ONLYOFFICEhttps://helpcenter.onlyoffice.com/installation/docs-developer-install-docker.aspx 一、容器端口、目录卷映射 sudo docker run --name容器名称 --restartalways -i -t -d -p…

Moment.js——轻松处理日期和和时间,有实例代码

hello&#xff0c;我是贝格前端工场&#xff0c;本期给大家带来便捷的处理日期和时间的js库&#xff1a;Moment.js&#xff0c;用这个类库处理时间将会十分方便&#xff0c;欢迎老铁们点赞关注&#xff0c;如有前端定制开发需求可以私信我们。 一、Moment.js的简介和功能 Mom…

什么是柔性事务?

概念 柔性事务&#xff0c;是业内解决分布式事务的主要方案。所谓柔性事务&#xff0c;相比较与数据库事务中的ACID这种刚性事务来说&#xff0c;柔性事务保证的是“基本可用&#xff0c;最终一致。”这其实就是基于BASE理论&#xff0c;保证数据的最终一致性。 虽然柔性事务…

使用LinkedList实现堆栈及Set集合特点、遍历方式、常见实现类

目录 一、使用LinkedList实现堆栈 堆栈 LinkedList实现堆栈 二、集合框架 三、Set集合 1.特点 2.遍历方式 3.常见实现类 HashSet LinkedHashSet TreeSet 一、使用LinkedList实现堆栈 堆栈 堆栈&#xff08;stack&#xff09;是一种常见的数据结构&#xff0c;一端…

代码随想录算法训练营day24|理论基础、77. 组合

理论基础 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;带你学透回溯算法&#xff08;理论篇&#xff09;| 回溯法精讲&#xff01;_哔哩哔哩_bilibili 回溯法也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。回溯是递归的副产品&#xff0c;只要有递归…

java面试设计模式篇

面试专题-设计模式 前言 在平时的开发中&#xff0c;涉及到设计模式的有两块内容&#xff0c;第一个是我们平时使用的框架&#xff08;比如spring、mybatis等&#xff09;&#xff0c;第二个是我们自己开发业务使用的设计模式。 面试官一般比较关心的是你在开发过程中&#…

QGIS编译(跨平台编译)之七十:【Windows编译错误处理】找不到vector_tile.pb.h、vector_tile.pb.cc

文章目录 一、错误描述二、错误原因分析三、错误处理一、错误描述 ①无法打开源文件“vector_tile.pb.h” ②无法打开包含文件:“vector_tile.pb.h”:No Such file or directory ③无法打开源文件:“vector_tile.pb.cc”:No Such file or directory 二、错误原因分析 qgis\…

基于ssm框架的高校班级管理系统设计与实现

为解决当前高校班级管理中管理方式落后、手段落后及效率低下等问题而以当前主流的互联网技术设计一款高校班级管理系统。该系统采用B/S模式的设计思路而将前端&#xff08;JSP技术&#xff09;和后端&#xff08;SSM框架MySQL数据库&#xff09;整合于一体并通过Java语言代码编…

IT廉连看——操作符

IT廉连看—操作符 c语言中有许多操作符&#xff0c;可以用于对变量进行各种不同的操作 一、算术操作符 - * / % 除了 % 操作符之外&#xff0c;其他的几个操作符可以作用于整数和浮点数。 对于 / 操作符如果两个操作数都为整数&#xff0c;执行整数除法。而只要有浮点…

【GB28181】wvp-gb28181-Pro 运行错误汇总避坑大全(持续更新)

快捷查找 1、【问题】终端控制台打印的日志乱码 1、【问题】终端控制台打印的日志乱码 【解决】 由于windows系统默认编码是gbk,导致jar包在windows系统运行中文会导致乱码 控制台日志乱码&#xff1a; 打开cmd命令框&#xff0c;输入以下命令 chcp 65001 更改cmd的编码为UTF-8…