STM32F1系列HAL库配置GPIO

发布者:创新脑细胞最新更新时间:2022-07-01 来源: csdn关键字:STM32F1系列  HAL库  配置GPIO 手机看文章 扫描二维码
随时随地手机看文章

使用CUBEMX配置GPIO

此文以STM32F10FC8T6为例。


1.选择MCU

2.配置SYS

3.配置RCC,选择外部引脚

4. 配置引脚

注: 

5.GPIO配置 

1、输入模式


2、上下拉输入 


IO上下拉配置


l  No pull-up and no pull-down,浮空输入,配置为不上拉和下拉


l  Pull-up,上拉输入


l  Pull-down,下拉输入


3、端口重命名

1、引脚初始的电平


l  Low:IO初始化默认输出低电平


l  High:IO初始化默认输出高电平


2、输出模式 


l  Output Open Drain,开漏输出,可以输出低电平


l  Output Push Pull,推挽输出,可以输出低电平和高电平 


3、上下拉电阻


4、输出速度 高速/中速/低速


l  Low,GPIO速度为低速,通常为2MHZ


l  Medium,GPIO速度为中速,通常为10MHZ


l  High,GPIO速度为高速,通常为50MHZ


5、端口重命名


6.时钟源设置 

7.管理工程

8.生成工程

GPIO 相 关 的 函 数 和 定 义 分 布 在 HAL 库 文 件 stm32f1xx_hal_gpio.c 和 头 文 件

stm32f1xx_hal_gpio.h 文件中。 


GPIO初始化

void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)

使用此函数对GPIO进行初始化。


宏定义

#define DONG_IN_1_Pin GPIO_PIN_3

#define DONG_IN_1_GPIO_Port GPIOA


初始化的一些常用格式

HAL库GPIO函数

1、功能:读取一个引脚的电平。


void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin,GPIO_PinState PinState)

参数:


GPIOx :其中x可以(A..G取决于所使用的设备)来选择GPIO外设


GPIO_Pin :指定要写入的端口位。此参数可以是GPIO_PIN_x之一,其中x可以是( 0..15 )。


PinState :指定要写入选定位的值。此参数可以是GPIO_PinState枚举值之一:


l  GPIO_PIN_RESET:清除端口Pin,低电平


l  GPIO_PIN_SET:设置端口Pin,高电平


示例:


HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_10,GPIO_PIN_RESET); 


2、功能:写一个引脚的电平,可写高电平,也可以是低电平。


GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

参数:


GPIOx :其中x可以(A..G取决于所使用的设备)来选择GPIO外设


GPIO_Pin :指定要写入的端口位。此参数可以是GPIO_PIN_x之一,其中x可以是(0..15 )


返回:


typedef enum

{

  GPIO_PIN_RESET = 0u,//低电平

  GPIO_PIN_SET//高电平

} GPIO_PinState;

 


示例:HAL_GPIO_ReadPin (GPIOC, GPIO_Pin_5); 


3、功能:翻转一个引脚的电平。


void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

示例:HAL_GPIO_Togglepin(GPIOC, GPIO_Pin_5); 


 4、功能:引脚中断入口函数


void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);

5、功能: 引脚中断回调函数


void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin); 


注:在main.h中会出现如下宏定义

一些函数的封装

注:以下是关于按键扫描、一些有关LED的函数封装。


#include "APP.h"

 /*按键扫描*/

GPIO_PinState key_scan(GPIO_TypeDef *GPIOx,uint16_t GPIO_Pin)

{

if(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin)==RESET)

{

HAL_Delay(20);

if(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin)==RESET)

{

    while(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin)==RESET);

return GPIO_PIN_RESET;

}

else 

return GPIO_PIN_RESET;

}

else 

return GPIO_PIN_RESET;

}

/*LED的亮、灭、翻转*/

void led_on(void)

{

HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);

}

 

void led_off(void)

{

HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);

}

 

void led_toggle(void)

{

HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);

}

#ifndef __LED_H

#define __LED_H

 

#include "main.h"

 

void led_on(void);

void led_off(void);

void led_toggle(void);

void led_bink(int8_t times);

 

 

#endif

 

 其它

按键防抖


l  软件防抖可以检测到电平延时一段时间再确认电平,延时时间一般为10-20ms


l  硬件防抖可以在按键上并联一个电容,一般为0.1uf。

关键字:STM32F1系列  HAL库  配置GPIO 引用地址:STM32F1系列HAL库配置GPIO

上一篇:STM32笔记——外部中断的配置
下一篇:STM32笔记——GPIO

推荐阅读最新更新时间:2024-11-12 10:13

STM32 HAL库DMA串口使用问题集锦
开发小白用stm32开发时遇到的问题记录 1.问题描述:使用HAL_UART_Receive_DMA进行接收时,经常接收不到信息 处理过程: 经查阅资料发现对于DMA串口,每个串口都有其对应的通道,查询后更改串口通道。 由于使用NUCLEO开发板进行调试,调试过程中发现使用的串口未被引到对应的排针上,而是接到板上自带的STLINK的串口上。 串口极其不稳定,有时能收到有时不能收到,但是另外一发送模块确实是发出来了,经打中断发现经常会出现溢出错误,调试了半天都不行,极其苦恼,后灵光一闪,在使用HAL_UART_Receive_DMA函数接收之前利用HAL_UART_Init函数再次对串口进行初始化,之后发现可以接
[单片机]
STM32F1系列——固件库函数使用手册摘要
命名 1.缩写 2.函数命名 固态函数库遵从以下命名规则 PPP表示任一外设缩写,例如:ADC。 更多缩写相关信息参阅章节1.1 缩写系统、源程序文件和头文件命名都以“stm32f10x_”作为开头,例如:stm32f10x_conf.h。 常量仅被应用于一个文件的,定义于该文件中;被应用于多个文件的,在对应头文件中定义。所有常量都由英文字母大写书写。 寄存器作为常量处理。他们的命名都由英文字母大写书写。在大多数情况下,他们采用与缩写规范与本用户手册一致。 外设函数的命名以该外设的缩写加下划线为开头。每个单词的第一个字母都由英文字母大写书写,例如:SPI_SendData。在函数名中,只允许存在一个下划线,用
[单片机]
<font color='red'>STM32F1</font><font color='red'>系列</font>——固件库函数使用手册摘要
stm32的八种GPIO配置模式
1. 模拟输入; 2. 浮空输入; 3. 上拉输入; 4. 下拉输入; 5. 开漏输出; 6. 推挽输出; 7. 复用开漏输出; 8. 复用推挽输出 具体的: 1.模拟输入 从上图我们可以看到,我觉得模拟输入最重要的一点就是,他不经过输入数据寄存器,所以我们无法通过读取输入数据寄存器来获取模拟输入的值,我觉得这一点也是很好理解的,因为输入数据寄存器中存放的不是0就是1,而模拟输入信号不符合这一要求,所以自然不能放进输入数据寄存器。该输入模式,使我们可以获得外部的模拟信号。 2.浮空输入 该输入状态,我的理解是,它的输入完全由外部决定,我觉得在数据通信中应该可以使用该模式。应为在数据通信中,我们直观的理解就是线路两端连接着发送端
[单片机]
stm32的八种<font color='red'>GPIO</font><font color='red'>配置</font>模式
HAL库-STM32F4 外部中断-延时
注:资料来源:野火《零死角玩转STM32-F429》、ST-《STM32F4xx中文参考手册》、ST-《Cortex™-M4内核编程手册》 开始: 1.嵌套向量中断寄存器 (NVIC): 嵌套向量中断控制器 (NVIC) 和处理器内核接口紧密配合,可以实现低延迟的中断处理和晚到中断的高效处理。包括内核异常在内的所有中断均通过 NVIC 进行管理。 在CMSIS\Include\core_cm4.h头文件中,给出了NVIC结构体以及一些基本函数。 详细介绍以及寄存器、基层配置查询参考资料ST-《Cortex™-M4内核编程手册》 2.外部中断/事件控制器 (EXTI): 外部中断/事件控制器包含多达 23 个用于产生事件
[单片机]
使用HAL库对STM32F030系列芯片做RTC低功耗唤醒
该例程采用STM32F030C8T6的开发板,例程中5s低功耗和5s单片机正常交替工作。首先在CumeMX软件界面中配置RTC、中断、时钟等(具体请参考例程)。在调试过程中我也是参考了该大神的例程,大家也可以参考一下,https://blog.csdn.net/xiaoeleis/article/details/72529090。最重要的一点要提醒一下初始化过程中MX_GPIO_Init函数中要将所有端口都初始化,功耗还是很大在几个mA附近,没办法达到uA级别(如下图编写)。三种低功耗模式都可以,正常情况下建议使用stop模式,如果 三种模式不清楚,可以百度自行搜索一下,纸上得来终觉浅,绝知此事要躬行!!!
[单片机]
使用<font color='red'>HAL库</font>对STM32F030<font color='red'>系列</font>芯片做RTC低功耗唤醒
按键操作(CubeMX加HAL库学STM32系列)
这一篇是补充第一篇的按键操作, 因为第一篇很多地方很详细了, 写了很大的篇幅, 所以单独写一篇用CubeMX配置STM32使用自带按键的操作 提示 : 仍然按照先Cube配置再IAR或者Keil编程, CubeMX里面关于时钟的配置跟我上一篇写的一样, RCC和SYS设置以及时钟树(Clock Configuration)都按照第一篇配置即可, 没有什么特别的需求, 是从始至终不需改变这个地方的配置的。 1-2. 使用核心板自带按键 操作简介 :    通过板子上的两个按钮控制LED灯的亮灭 WK_UP按键按下则LED0闪烁, 松开停止闪烁并熄灭, 即WK_UP按键长按LED0才会持续闪烁    KEY0按下再松手, LE
[单片机]
按键操作(CubeMX加<font color='red'>HAL库</font>学STM32<font color='red'>系列</font>)
关于STM32的GPIO模式配置
在STM32里,对于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>模式<font color='red'>配置</font>
stm32CubeMX HAL库中延时的几种方式解析
HAL_Dalay()是毫秒级延时,为了使用微秒级延时最近学习了一下,总结如下,推荐使用最后一种方式。 /* * 本文件包括四种延时方式: * 1. 原来的HAL库函数HAL_Delay() 2. 采用定时器2设置延时函数 3. 采用系统滴答中断方式的ms和us级延时 * 4. 采用系统滴答非中断方式的ms和us级延时(在一次计数值范围内的延时) */ /* Includes ------------------------------------------------------------------*/ #include stm32l1xx_hal.h #include tim.h #inclu
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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