STM32GPIO部分介绍
最近在老师交给了一个项目,需要用到STM32单片机,这里就在学习的过程中所注意到的一些地方或细节部分记录了下来,笔者所使用的是STM32F407ZGT6芯片(探索者)。 查看芯片的数据手册
这个表格对每个I/O口的功能进行了很详细的介绍。每个I/O除了作为I/O使用外,还可以作为其他的复用。已以PE2口为例,“Alternate functions”所展示就是其可以复用的功能。
芯片结构 F3系列和F4系列芯片的芯片结构大体相似,区别在于F4将F3芯片的上下拉结构配置由内部转到了外部。如下图所示。
同时大家注意到在第二张图的右边有一个“TF:5V容忍”,F4芯片I/O口大部分也支持5V容忍,5V容忍就是说STM32的输出电压是3.3V,但是也容忍输出5V。 那么哪些I/O口支持5V容忍了,这个得看最上面的芯片手册,如果芯片后面有一栏写有“TF”标示,即说明支持5V容忍。
GPIO相关配置寄存器 每组GPIO口包含10组寄存器。
一个端口模式寄存器(GPIOx_MODER) 一个端口输出类型寄存器(GPIOx_OTYPER) 一个端口输出速度寄存器(GPIOx_OSPEEDR) 一个端口上拉下拉寄存器(GPIOx_PUPDR) 前4个为32位配置寄存器 一个端口输入数据寄存器(GPIOx_IDR) 一个端口输出数据寄存器(GPIOx_ODR) 中间2个为32位数据寄存器 一个端口置位/复位寄存器(GPIOx_BSRR) 一个端口配置锁存寄存器(GPIOx_LCKR) 两个复位功能寄存器(低位GPIOx_AFRL & GPIOx_AFRH)
如果配置一个IO口需要2个位,那么刚好32位寄存器配置一组IO口16个IO口 如果配置一个IO口只需要1个位,一般高16位保留 BSRR寄存器32位分为低16位BSRRL和高16位BSRRH,BSRRL配置一组IO口的16个IO口的置位状态(1),BSRRH配置复位状态(0)。
端口模式寄存器(GPIOx_MODER)
MODER寄存器没2位控制一个IO,32位就控制16个IO。以GPIOA为例,它就有GPIOA0~15,如果配置为’00’,则为“输入(复位状态)”模式。那么32位刚好可以配置一组IO的16个IO。
端口输出类型寄存器(GPIOx_OTYPER) 但是只有输出模式是不够的,还需要输出类型。
OTYPER寄存器每位控制一个IO,低16位控制一组IO的16个IO,高16位保留没有用。 每个IO只用到一位,可以设置位0或者1。如果设置为0则为“输出推挽”,若要设置为“复用输出推挽”,则将端口模式寄存器设置为“复用功能模式”,再将这里设置为“输出推挽”模式即可。
提示 任何方式操作IO口,都必须先使能相应IO口始终。 ‘RCC_AHB1PeriphColckCmd();’
其它的寄存器设置方法与这两个类似,这里不过多介绍。 以上图片均来自探索者光盘自带的资料。 如果不妥地方,还请各位读者多多指出。需要更详细资料的也可以和笔者联系
相关文章
- JavaFx 创建快捷方式及设置开机启动
- JavaXMail发送邮件功能实现
- Kotlin/Java 读取Jar文件里的指定文件
- 极路由4增强版B70(HC5962)刷机
- 当 xxl-job 遇上 docker → 它晕了,但我不能乱!
- RHCE环境准备 | 介绍
- 登云之路|腾讯大规模云原生技术实践案例图鉴
- 我做了一款vscode主题! Dapanna Theme
- 第一周好文分享(强推这个系列!)
- canvas详细教程! ( 近1万字吐血总结)
- canvas绘制动画原理及案例讲解(绘制小恐龙动画、时钟等)
- 纯Canvas绘制绘制小恐龙向前冲游戏(Vue3版本的升级版)
- 关于css的八个结构伪类选择器 :last-child、:first-of-type、:nth-last-of-type()
- 核酸码系统拆解与设计推演
- 从零开始的内存马分析——如何骑马反杀(二)
- 从零开始的内存马分析——如何骑马反杀(三)
- 神兵利器|网络资产测绘平台聚合工具(AsamF)
- Hadoop3.0-Hdfs | Apache Hadoop介绍
- 记一次对HTB:Timelapse的渗透测试
- Ansible环境部署 | 概述