STM32F4系列学习笔记2:IO相关

2023-05-16

一、寄存器说明:

STM32F4 GPIO最多有9组,从GPIOA-GPIOI,每组IO有16个Pin,STM32F407有7组,所以一共有7*16=112个引脚,再加上PH0和PH1,一共有114个

对应一组有一套寄存器来进行控制,这一套寄存器里面常用的有8个:MODER、OTYPER、OSPEEDR、PUPDR(四个配置寄存器)ODR、IDR (输入输出电平控制相关的寄存器)BSRR(32 位置位/复位寄存器)、LCKR(32 位锁定寄存器)、AFRH、AFRL(复用功能选择寄存器)

1.MODER 寄存器 :该寄存器是 GPIO 端口模式控制32位寄存器,用于控制 GPIOx 的工作模式
每组IO下有16个IO口,该寄存器共32 位,每2个位控制1个IO
具体的控制方法,无非是赋0赋1,那就有四种可能,所以也能推出一个寄存器,最多能给定一组GPIO的16个Pin分别有4种可能,对应于Moder寄存器

 

所以最后通过MODER 寄存器控制得到的模式有输入/输出/复用/模拟四种, 只是还不太明白,因为还觉着模拟就应该是输入的一种,还是说分成了普通输入和模拟输入呢
2.OTYPER 寄存器 :根据对于MODER寄存器的分析,下面的直接看教材就能得到很好地理解了
当且仅当MODER寄存器在对应为为输出模式时,(即非00时?那模拟模式算什么,模拟难道也有输出么),OTYPER寄存器有效,因为是对输出进行配置,所以只有两种可能,也就是推挽和开漏
3.OSPEEDER 寄存器
两位的,设置3种速度,但是需要注意,设置的仅为输出速度
4.PUPDR 寄存器
用于控制是上拉、下拉还是既不上拉也不下拉,保留一个11,但是有不明白的是 对于输出来说也有上拉和下拉吗,开漏和推挽内本身应该没有这样上拉或是下拉的定义(那什么是上拉推挽,下拉推挽这种输出呢?)
5.ODR寄存器
6.IDR寄存器
7.BSRR寄存器
二、各种工作模式说明:
具体的工作模式就是八种,分别为:
1、输入浮空
2、输入上拉
3、输入下拉
4、模拟输入
5、开漏输出
6、推挽输出
7、推挽式复用功能
8、开漏式复用功能(复用的时候都是给复用成了输出的?)

一共有八种模式,一直都没详细的沉下心看,今天找一些文章好好看

http://www.openedv.com/posts/list/32730.htm

三、和IO相关的操作函数说明

1.配置相关:

step1:无论怎么样,都要先使能一组GPIO的时钟

step2:操作四个配置寄存器配制成想要的八种模式?和选定不同的输出速度

2.使用GPIO相关:

2.1控制/读出输出状态

这里说明了可以用GPIO_Write,确实在大多数情况应该是不用的,在正点原子的点灯的程序中,用的是

#setBits和ResetBits能够控制的只是对应引脚在PF9和PF10位置的高低,对应电路图可以看到,当PF9或PF10为高时,即在SetBits之后,是两边都高,没有压降,是暗的,在ReSetBits之后,一边低,另外一边高,是亮的

在ReadOutputData和ReadOutputDataBit中,能够做到读出对应的IO口的输出状态

2.2读取输入状态

2.3 常用的设置输出状态的方法-->设置BSRR寄存器的固件库设置方法

    """

    不明白为什么有IO端口可以自动提供5V和3.3V的电,是硬件上自动设置的输出,是推挽还是开漏吗,还是什么别的IO的功能呢

    """

参考资料:

1.https://blog.csdn.net/JianZhiZG/article/details/99714785

2.正点原子-《STM32F407最小系统板开发指南-库函数版本_V1.1》      

3.https://blog.csdn.net/weixin_42108484/article/details/80511568

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32F4系列学习笔记2:IO相关 的相关文章

随机推荐

  • PyCharm使用技巧记录(一)如何查看变量

    为了方便自己以后查阅 xff0c 记录下使用PyCharm时的一些小技巧 正在学习Python xff0c 在调试Python程序时 xff0c 遇到了一个非常大的问题 xff1a 如何能够方便地查看变量的取值呢 xff1f 由于使用mat
  • 如何在ubuntu下使用Github?

    安装Git 一个全新的ubunt系统 xff0c 需要安装Git xff08 系统是不具有该工具的 xff09 xff0c 方法如下 xff1a 在terminel中输入如下命令 xff1a sudo apt span class hljs
  • Docker学习系列(一):windows下安装docker

    本文目录如下 windows按照docker的基本要求具体安装步骤开始使用安装远程连接工具连接docker安装中遇到的问题Docker的更新Docker中的jupyterwindows下使用docker的常用命令 windows下安装doc
  • Docker学习系列(三):Ubuntu下使用Docker的基本指令记录及一些注意事项

    最近发现极客学院docker教程 xff0c 还不错 xff0c 可以参考 1 Dockerhub下载镜像 注 xff1a Dockerhub地址 有两种方式可以获得新的镜像 直接从dockerhub下载编译好的image xff08 该编
  • 安装visual studio 2012,并配置opencv

    在同学的帮助下 xff0c 终于成功配置了vs 43 opencv xff0c 将详细过程记录在此 xff0c 方便以后查阅 参考1 本文目录 安装vs2012安装opencv在vs2012中配置opencv测试opencv是否配置成功关于
  • Ubuntu下如何安装TensorFlow

    本文目录 引言基于Anaconda的tensorflow安装 1 下载linux版本的Anaconda安装包2 安装Anaconda 利用anaconda安装tensorflow 1 建立一个 conda 计算环境2 激活环境使用 cond
  • Visualizing and Understanding Convolutional Networks

    Matthew D Zeiler xff0c Rob Fergus Visualizing and Understanding Convolutional Networks CVPR2014 论文下载 推荐一篇比较好的blog xff1a
  • 对极几何基本概念

    对极几何 xff08 Epipolar Geometry xff09 描述的是两幅视图之间的内在射影关系 xff0c 与外部场景无关 xff0c 只依赖于摄像机内参数和这两幅试图之间的的相对姿态 什么是对极几何粗略概念对极几何相关的一个重要
  • Python·Win10通过Anaconda安装python和Jupyter(python2.7为例)

    Python Win10通过Anaconda安装python和Jupyter xff08 python2 7为例 xff09 标签 xff08 空格分隔 xff09 xff1a 软件安装 管理 使用 Python 本文主要讨论如何利用Ana
  • Ubuntu14.04安装build-essential失败,包依赖问题如何解决?

    正在读取软件包列表 完成 正在分析软件包的依赖关系树 正在读取状态信息 完成 有一些软件包无法被安装 如果您用的是 unstable 发行版 xff0c 这也许是 因为系统无法达到您要求的状态造成的 该版本中可能会有一些您需要的软件 包尚未
  • 最优化理论·非线性最小二乘

    最优化理论 非线性最小二乘 标签 xff08 空格分隔 xff09 xff1a 数学 非线性最小二乘问题是椭圆拟合中最易遇到的优化问题 xff0c 本文主要对非线性二乘的基本分析做简单介绍 1 什么是最小二乘问题 目标函数能够写为m个函数平
  • 所有线段的交点-初级篇

    所有线段的交点 初级篇 标签 xff08 空格分隔 xff09 xff1a 计算机视觉 图形学 所有线段的交点 初级篇 参考 xff1a 计算几何 算法与应用 邓俊辉 译 清华大学出版社 本文以一个小例子介绍如何计算所有线段交点 xff0c
  • 服务器docker使用

    这篇文章是我给自己的一个记录 xff0c 有些名词可能写的不专业 xff0c 请见谅 docker里面有两个概念 xff0c 一个是镜像 xff0c 一个是容器 镜像可以看做是类 xff0c 容器就是类的实例 在学院的服务器上 xff0c
  • MPC模型预测控制

    这篇主要讲一下模型预测控制 xff0c 如果对PID控制了解的同学 xff0c 那效果更好 如果不了解PID控制 xff0c 还是熟悉下比较好 模型预测控制 xff0c 顾名思义 xff0c 基于模型 xff0c 预测未来 xff0c 进行
  • MPC自学资料总结

    1 书籍 xff1a 无人驾驶车辆模型预测控制 2 视频 xff1a https ww2 mathworks cn videos understanding model predictive control part 1 why use m
  • [授权发表]基于 VNCServer + noVNC 构建 Docker 桌面系统

    by Falcon of TinyLab org 2015 05 02 最初发表 xff1a 泰晓科技 聚焦嵌入式 Linux xff0c 追本溯源 xff0c 见微知著 xff01 原文链接 xff1a 基于 VNCServer 43 n
  • 【c语言】字符串输出方式 | API仿真

    创作不易 xff0c 本篇文章如果帮助到了你 xff0c 还请点赞 关注支持一下 gt x16966 lt 主页专栏有更多知识 xff0c 如有疑问欢迎大家指正讨论 xff0c 共同进步 xff01 给大家跳段街舞感谢支持 xff01 c语
  • 【c语言】结构体详解 | 结构体数组/指针

    创作不易 xff0c 本篇文章如果帮助到了你 xff0c 还请点赞 关注支持一下 gt x16966 lt 主页专栏有更多知识 xff0c 如有疑问欢迎大家指正讨论 xff0c 共同进步 xff01 x1f525 c语言系列专栏 xff1a
  • stm32F4系列学习笔记1: keil使用

    一 在keil的find功能中有几个find options xff0c 查了一下 xff0c 这几个find options的意思是 1 Match case 区分大小写 2 Regular expression 正则表达式 3 Matc
  • STM32F4系列学习笔记2:IO相关

    一 寄存器说明 xff1a STM32F4 GPIO最多有9组 xff0c 从GPIOA GPIOI xff0c 每组IO有16个Pin xff0c STM32F407有7组 xff0c 所以一共有7 16 61 112个引脚 xff0c