STM32F4外设驱动系列之GPIO

发布者:Yuexin888最新更新时间:2020-09-03 来源: eefocus关键字:STM32F4  外设驱动  GPIO 手机看文章 扫描二维码
随时随地手机看文章

GPIO常用相关寄存器

MODER:GPIO端口模式控制寄存器(GPIOx_MODER)(x = A..I)

OTYPER:GPIO端口输出类型寄存器(GPIOx_OTYPER)(x = A..I)

OSPEEDR:GPIO端口输出速度寄存器(GPIOx_OSPEEDR)(x = A..I)

PUPDR:GPIO端口上拉/下拉寄存器(GPIOx_PUPDR)(x = A..I)

IDR:GPIO端口输入数据寄存器(GPIOx_IDR)(x = A..I)

ODR:GPIO端口输出数据寄存器(GPIOx_ODR)(x = A..I)

AFRH/AFRL:GPIO复用功能高/低位寄存器(GPIOx_AFRH/GPIOx_AFRL)(x = A..I)


寄存器具体详情可查看STM32F4xx参考手册。


GPIO初始化函数与参数

GPIO初始化函数:HAL_GPIO_Init()

HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)


GPIO初始化参数结构体:GPIO_InitTypeDef

typedef struct

{

  uint32_t Pin;      

  uint32_t Mode;     

  uint32_t Pull;    

  uint32_t Speed;   

  uint32_t Alternate;

}GPIO_InitTypeDef


函数与结构体具体实现可参见HAL库源代码。


GPIO初始化实例

//初始化PA0端口

void GPIO_Init(void)

{

GPIO_InitTypeDef GPIO_Initure; //GPIO初始化结构体

__HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA时钟

GPIO_Initure.Pin = GPIO_PIN_0; //PA0

GPIO_Initure.Mode = GPIO_MODE_INPUT; //输入

GPIO_Initure.Pull = GPIO_PULLDOWN; //下拉

GPIO_Initure.Speed = GPIO_SPEED_HIGH; //高速

HAL_GPIO_Init(GPIOA, &GPIO_Initure);

}


GPIO引脚的参数需根据实际应用情况进行设置。


关键字:STM32F4  外设驱动  GPIO 引用地址:STM32F4外设驱动系列之GPIO

上一篇:嵌入式系统学习——STM32之GPIO
下一篇:STM32F4寄存器编写跑马灯例程

推荐阅读最新更新时间:2024-11-07 18:11

STM32F429I-DISO探索第一篇 --GPIO(2)
上一篇写了GPIO简单的流水灯测试,看着有点单调,习惯了串口调试,板子上没有串口 那就另想办法吧,看着LCD突然有了个想法,为什么不把调试信息输出到LCD上,以前在做2416 WINCE开发的时候就经常这样干非常直观,那说干就干。 STM32F429I-DISO SDK里已经把开发包做好,那就直接拿过来用吧。 #define MESSAGE1 STM32F429I-Discoverry //提示信息 #define MESSAGE1_1 GPIO TEST #define MESSAGE2 LED3 LED4 #define MESSAGE2_1 ^-^ #def
[单片机]
STM32F4 LAN8720以及LWIP的移植调试记录 (3)
LAN8720配置: IP: 192.168.192.30 Gateway: 192.168.192.1 检测到高频率的ARP包 包的内容在询问192.168.192.1的mac地址,并要求应答者发往192.168.192.30。 可以判断为LAN8720可能要夸网段发包,但是找不到网管。 于是把LAN8720的网关改为192.168.192.15, 即PC机的IP。 然后使用wireshark抓包。 能够看到高频的错误包信息。 从抓到的包可以看到,IP地址和端口都不是想要的。 查到在sendto函数的IP地址赋值,原子的例程,赋值方式如下: upcb- remote_ip=*addr;1 而pcb中remote_ip的类
[单片机]
详解STM32F407VE中的串行总线功能
在这一节里我们来一起完成STM32F407VE中的串行总线功能。所谓串行总线就是我们常常说的串口。串口中的信号线(数据线)只有2条,一条线为Tx,另一条为Rx,也就是发送线和接收线。所以称它为串行,就是通过一根信号线的产生一个序列的高低电平来完成数字信号中一个字节的数据。例如:我们知道计算机中都是采用二进制来表示数的,如果我们需要在串行总线上传输一个字节的数据,如0x5A,那么这个字节的二进制为:01011010,所以我们就需要让串行总线产生的高低电平序列为:低、高、低、高、高、低、高、低,每一个高低电平,我们在计算机中称之为Bit(比特): 这样,我们就知道串行总线所产生的高低电平时序了。其实除了正常数据传输所用到的Bit位
[单片机]
详解<font color='red'>STM32F4</font>07VE中的串行总线功能
STM32的GPIO口工作的八种模式
一。输入模式 1. 浮空输入 浮空输入模式下,上拉和下拉两个开关断开,高或低电平通过施密特触发器到达输入数据寄存器,CPU可以通过读取输入数据寄存器从而读取到外部输入的高低电平值。 2. 输入上拉模式 上拉电阻开关连上,上拉电阻的阻值为30k-50k。 3. 输入下拉模式 下拉电阻开关连上。 4. 模拟输入模式 模拟输入方式时外部信号为模拟量,不是高低电平。 注意信号没有经过施密特触发器。 另外上拉下拉都无效。
[单片机]
STM32的<font color='red'>GPIO</font>口工作的八种模式
STM32F4 开发笔记10:USB FS的枚举方法
FS是Full Speed的意思,指全速USB设备,在电路设计时,通过在DP接1.5K上拉电阻到电源的方法告知主机为全速USB设备,但是在具体使用时,还有问题存在,就是当单片机复位后,主机端虽然还能辨认当前USB设备,但是不能够直接使用,其原因在于USB设备重新启动后,需要完成一个枚举过程,以通知主机。 枚举的具体电路如下图所示,其原理很简单,系统上电后将DE引脚拉高,待USB初始化完毕后,将DE引脚拉低即可。 具体的头文件程序代码如下,建立DE引脚类,并在CUSB类中具体声明。 #ifndef USB_H_ #define USB_H_ #ifdef __cplusplus extern C { cla
[单片机]
stm32f4-led
int main(void) { LED_Init(); //初始化LED端口 while(1) { GPIO_bits_OUT(GPIOG,13,3,0x0006); delay_ms(500); GPIO_bits_OUT(GPIOG,13,3,0x0005); delay_ms(500); GPIO_bits_OUT(GPIOG,13,3,0x0003); delay_ms(500); } } void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphC
[单片机]
<font color='red'>stm32f4</font>-led
STM32之HAL库和标准库的GPIO
HAL库 使用CubeMX自动生成需要的代码。 一、初始化GPIO 自动生成的HAL库GPIO初始化代码: void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOF_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO
[单片机]
STM32中GPIO的8种工作模式
最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 对于刚入门的新手,我想这几个概念是必须得搞清楚的,平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种,但一直未曾对这些做过归纳。因此,在这里做一个总
[单片机]
STM32中<font color='red'>GPIO</font>的8种工作模式
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved