stm32——hal库学习笔记(GPIO)

这篇具有很好参考价值的文章主要介绍了stm32——hal库学习笔记(GPIO)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、GPIO的八种模式分析(熟悉)
stm32——hal库学习笔记(GPIO),stm32,学习,笔记
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPU 上拉输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_AIN 模拟输入
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出

应用总结
1、上拉输入、下拉输入可以用来检测外部信号;例如,按键等;
2、浮空输入模式,由于输入阻抗较大,一般把这种模式用于标准通信协议的 I2C、
USART 的接收端;
3、普通推挽输出模式一般应用在输出电平为 0 和 3.3V 的场合。而普通开漏输出模
式一般应用在电平不匹配的场合,如需要输出 5V 的高电平,就需要在外部一个上拉电
阻,电源为 5V,把 GPIO 设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输
出 5V 电平。
4、对于相应的复用模式(复用输出来源片上外设),则是根据 GPIO 的复用功能来
选择,如 GPIO 的引脚用作串口的输出(USART/SPI/CAN),则使用复用推挽输出模式。
如果用在 I2C、SMBUS 这些需要线与功能的复用场合,就使用复用开漏模式。
5、在使用任何一种开漏模式时,都需要接上拉电阻。

二、通用外设驱动模型(四步法)(掌握)
stm32——hal库学习笔记(GPIO),stm32,学习,笔记
三、GPIO配置步骤(掌握)
stm32——hal库学习笔记(GPIO),stm32,学习,笔记

__HAL_RCC_GPIOx_CLK_ENABLE()   \\开启GPIO时钟

stm32——hal库学习笔记(GPIO),stm32,学习,笔记

HAL_GPIO_Init()      \\初始化GPIO

stm32——hal库学习笔记(GPIO),stm32,学习,笔记

HAL_GPIO_WritePin()    \\控制IO输出高/低电平
HAL_GPIO_TogglePin()   \\每次调用IO输出电平翻转一次

stm32——hal库学习笔记(GPIO),stm32,学习,笔记

HAL_GPIO_ReadPin()     \\读取IO电平

四、demo程序——点亮一颗LED灯

led.c

#include "./BSP/LED/led.h"


/**
 * @brief       初始化LED相关IO口, 并使能时钟
 * @param       无
 * @retval      无
 */
void led_init(void)
{
    GPIO_InitTypeDef gpio_init_struct;
    LED0_GPIO_CLK_ENABLE();                                 /* LED0时钟使能 */
   

    gpio_init_struct.Pin = LED0_GPIO_PIN;                   /* LED0引脚 */
    gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP;            /* 推挽输出 */
    gpio_init_struct.Pull = GPIO_PULLUP;                    /* 上拉 */
    gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;          /* 高速 */
    HAL_GPIO_Init(LED0_GPIO_PORT, &gpio_init_struct);       /* 初始化LED0引脚 */

  
    

    LED0(1);                                                /* 关闭 LED0 */
  
}

led.h

#ifndef _LED_H
#define _LED_H
#include "./SYSTEM/sys/sys.h"


/******************************************************************************************/
/* 引脚 定义 */

#define LED0_GPIO_PORT                  GPIOB
#define LED0_GPIO_PIN                   GPIO_PIN_5
#define LED0_GPIO_CLK_ENABLE()          do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0)             /* PB口时钟使能 */


/******************************************************************************************/
/* LED端口定义 */
#define LED0(x)   do{ x ? \
                      HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0_GPIO_PIN, GPIO_PIN_SET) : \
                      HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0_GPIO_PIN, GPIO_PIN_RESET); \
                  }while(0)      /* LED0翻转 */



/* LED取反定义 */
#define LED0_TOGGLE()   do{ HAL_GPIO_TogglePin(LED0_GPIO_PORT, LED0_GPIO_PIN); }while(0)        /* 翻转LED0 */


/******************************************************************************************/
/* 外部接口函数*/
void led_init(void);                                                                            /* 初始化 */

#endif

main.c

#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/delay/delay.h"
#include "./BSP/LED/led.h"

int main(void)
{
    
    HAL_Init();                         /* 初始化HAL库 */
    sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟,72M */
    delay_init(72);                     /* 初始化延时函数 */
    led_init();                         /* 初始化LED */
  

    while (1)
    {
        LED0(1);   
    }
}

实验现象
stm32——hal库学习笔记(GPIO),stm32,学习,笔记文章来源地址https://www.toymoban.com/news/detail-832914.html

到了这里,关于stm32——hal库学习笔记(GPIO)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32 学习笔记:GPIO输出

           引脚电平 0-3.3V,部分可容忍5V,对输出而言最大只能输出3.3V,        只要可以用高低电平来控制的地方,都可以用GPIO来完成,如果控制的功率比较大的设备,只需加入驱动电路即可         GPIO 通用输入输出口,可配置为 8种 输入输出模式。 输出模式下可控制端口

    2024年02月09日
    浏览(41)
  • STM32外设GPIO(学习笔记)

    在编写stm32程序时,对寄存器进行操着需要知道每个外设的基地址,标准库的stm32f10x.h文件里也有各种外设的基地址。 比如GPIO:在定义输出数据寄存器地址GPIOA_ODR_Addr时,在GPIOA_BASE(GPIO端口A的基址地址)地址基础上偏移 在stm32f10x.h文件里面有定义GPIOA_BASE,是APB2PERIPH_BASE(

    2024年04月12日
    浏览(36)
  • STM32 GPIO设置(GPIO初始化)学习笔记

    GPIO 都知道是 通用输入输出接口 的意思就不详细解释 那么我们就直接进入怎么设置GPIO接口: 这里我的编译软件是keil5,相信大家都应该知道stm32有各种的工作模式上拉、下拉、推挽、开漏等等。如果想要了解具体的工作模式原理这里我推荐大家看:推挽 开漏 高阻 这都是谁

    2024年03月28日
    浏览(51)
  • STM32学习笔记(二)——STM32的GPIO和AFIO

    1.1 特殊功能引脚和普通功能引脚 STM32F103C8T6共有48个引脚 特殊功能引脚(11个) Vdd+Vss给芯片供电引脚 共三队, 六个 VDDA+VSSA模拟电压 两个 (A~Analog模拟的) BOOT0启动方式选择引脚 一个 VBAT备用电池引脚(Battery) 一个 NRST复位引脚 一个 普通IO口引脚(37个) 其中特殊功能引脚

    2024年01月21日
    浏览(35)
  • 【STM32】STM32学习笔记-GPIO相关API概述(06-1)

    文件: stm32f10x_gpio.h和stm32f10x_gpio.c 参考实现 参考: 【STM32】江科大STM32学习笔记汇总

    2024年04月29日
    浏览(32)
  • stm32学习笔记-3GPIO通用输入输出口

    注:笔记主要参考B站 江科大自化协 教学视频“STM32入门教程-2023持续更新中”。 注:工程及代码文件放在了本人的Github仓库。 GPIO (General Purpose Input Output) 通用输入输出口 可配置为8种输入输出模式。 引脚电平范围为0V~3.3V ,部分引脚可容忍5V(图1-6中IO口电平为FT标识的)

    2024年02月15日
    浏览(46)
  • STM32的GPIO初始化配置-学习笔记

            由于刚开始没有学懂GPIO的配置原理,导致后面学习其它外设的时候总是产生阻碍,因为其它外设要使用前,大部分都要配置GPIO的初始化,因此这几天重新学习了一遍GPIO的配置,记录如下。         首先我们要知道芯片上的引脚,并不是只有GPIO的功能,还能复用成

    2024年04月17日
    浏览(46)
  • STM32的GPIO操作(寄存器&HAL)

    (注:此为乐某学习记录,若有出错的地方欢迎各位指出!) 本人使用的开发板的芯片是STM32H743XIH6,所以外设也是根据此芯片来介绍。 在使用HAL库配置的时候,需要安装STM32CubeMX。此软件可在ST官网下载,剩下的安装步骤比较简单,不会单独出篇进行讲解。 STM32CubeMX下载网址

    2024年02月04日
    浏览(45)
  • stm32——hal库学习笔记(DAC)

    相关HAL库函数介绍 关键结构体介绍(F1为例) adc3.c adc3.h dac.c dac.h main.c dac.c dac.h main.c dac3.c dac3.h dac.c dac.h main.c 6.2.1,什么是PWM DAC技术? 6.2.2,用分段函数表示PWM波 6.2.3,将PWM波分段函数进行傅里叶级数展开 6.2.4,PWM DAC的分辨率 6.2.5,8位分辨率下对RC滤波器的设计要求 6.2.6,

    2024年02月22日
    浏览(40)
  • stm32——hal库学习笔记(WWDG)

    WWDG有什么作用? 控制寄存器 (WWDG_CR) 配置寄存器 (WWDG_CFR) 状态寄存器 (WWDG_SR) WWDG最短最长超时时间(F1为例) 相关HAL库函数介绍 wdg.c wdg.h main.c

    2024年02月22日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包