嵌入式学习笔记 | 您所在的位置:网站首页 › lockdown是什么 › 嵌入式学习笔记 |
使用寄存器编程操作GPIO
前言GPIO相关的寄存器GPIO 端口模式寄存器 (GPIOx_MODER) (x = A..I)位操作
GPIO 端口输出类型寄存器 (GPIOx_OTYPER) (x = A..I)GPIO 端口输出速度寄存器 (GPIOx_OSPEEDR) (x = A..I/)GPIO 端口上拉/下拉寄存器 (GPIOx_PUPDR) (x = A..I/)GPIO 端口输入数据寄存器 (GPIOx_IDR) (x = A..I)GPIO 端口输出数据寄存器 (GPIOx_ODR) (x = A..I)GPIO 端口置位/复位寄存器 (GPIOx_BSRR) (x = A..I)GPIO 端口配置锁定寄存器 (GPIOx_LCKR) (x = A..I)GPIO 复用功能低位寄存器 (GPIOx_AFRL) (x = A..I)GPIO 复用功能高位寄存器 (GPIOx_AFRH) (x = A..I)小结
使用寄存器编程控制LED灯的亮灭原理图分析MDK代码编程
总结
前言
上一篇重点介绍了STM32 GPIO的输入输出模式,在整个框图中我们发现需要我们使用代码来控制GPIO的模式,本文的重点就是使用寄存器的编程方式,实现对于GPIO口的操作。 在这里首先需要做一个区分,我们常见的STM32的开发方式有两种,也就是寄存器开发与库函数开发。寄存器开发就是直接操作底层的寄存器来实现功能,而库函数,则是使用ST的官方库函数来实现功能,目前常用的库有基础库、HAL库、LL库。此系列都会采用直接操作寄存器的方式来实现功能。 GPIO相关的寄存器既然是操作寄存器实现功能,就要知道与GPIO相关的寄存器有哪些,根据昨天的GPIO口模式以及框图我们可以大致猜出几个寄存器。 1.输入输出模式选择的寄存器;用来确定GPIO是输入模式还是输出模式; 2.输出类型选择的寄存器;用来选择是推挽还是开漏; 3.输出数据寄存器,暂存MCU输出的数字量; 4.输入数据寄存器,暂存外设输入的数字量; 5.上拉下拉寄存器,设置GPIO的上下拉模式; 没看手册之前,我们根据GPIO的功能以及结构猜测的有上面这五个寄存器,下面我们来看看编程手册关于GPIO的寄存器到底有哪些,又该怎么使用。 官方编程手册关于GPIO的寄存器介绍如下: 端口模式寄存器,就是控制整个端口的模式,通过写入不同的高低电平来区分对应管脚是输入还是输出,(GPIOx_MODER) 这个中间的x就代表从A—I的端口号(x = A…I),也就是说一块STM32最多只有9个端口模式寄存器。 它是一个32位的寄存器,前面我们提当过,STM32的一个端口有0-15共16个管脚,而这个端口模式寄存器又是32位的,这就说明每个管脚的模式控制有 32/16=2位二进制数来实现。如下图所示就是端口模式的寄存器(中文编程手册第七章7.4 节 GPIO 寄存器): 首先这个寄存器的命名ST公司已经给我们做好了,就在我们之前搭建工程时使用的使用的stm32f4xx.h中,这里给大家截图在下面: 7.点击1全编译,如果出现2所示的0errors0warings,表示代码没问题了, 8.选择下载器:笔者使用的是ST-LINK,操作如下:选择3所示的魔法棒,选择4Debug,选择ST-LINK,然后点击确定。 至此,关于GPIO的寄存器配置以及一个简单的代码编程已经完成了,后面一篇我们再来尝试配置输入模式的编程过程,本文篇幅也很长,如有不足,希望大家指出,寄存器的详细介绍,大家可以去编程手册查看。 |
CopyRight 2018-2019 实验室设备网 版权所有 |