STM32基于HAL库的开发与应用(2)GPIO口控制

这篇具有很好参考价值的文章主要介绍了STM32基于HAL库的开发与应用(2)GPIO口控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、GPIO口是在单片机开发应用中使用最频繁的一个控制。GPIO口可作为输出高低电平也可以作为输入检测输入电平的高低。

(1)通常GPIO口输出控制LED灯、有源蜂鸣器等一些只需要高低电平就可以触发的模块。

(2)通常GPIO口作为输入,用来检测输入电平的高低状态,常用于一些模块在触发时候会输出高低电平时GPIO口输入用来检测(例如:按键开关),也可以用于一些简单通讯,例如在与OpenMv摄像头相连接,当OpenMv摄像头识别到东西设置某个引脚输出高电平,STM32接收到高电平就做出反应。

二、GPIO口在STM32CubeMx中的配置

(1)RCC、SYS、时钟树等基础配置见本系列(1)文章。(4条消息) STM32基于HAL库的开发与应用(1)STM32CubeMx基本配置_老何希望不掉头发的博客-CSDN博客

(2)鼠标左键点击需要设置GPIO口的引脚会出现对应选项,选择input(输入)、output(输出)、EXIT(中断)等不同选项来配置引脚功能。

引脚上拉下拉情况,看对应开发板的原理图,一般是设置开发板自带的LED灯和按键开关时候才需要设置上拉或下拉。当原理图中显示一边接地话就需要上拉,反之接VCC就要下拉。

STM32基于HAL库的开发与应用(2)GPIO口控制

 (3)设置好了GPIO口功能后,可以在CubeMx左边选项栏打开GPIO选项,可以显示配置的每个引脚名字以及其功能,点击某个引脚,可以设置其初始状态、上拉下拉状态、引脚重命名等。

STM32基于HAL库的开发与应用(2)GPIO口控制

 完成以上步骤后配置就完成了接下来就是Keil编程。

三、打开Keil文件,打开main.c。

        在编写Keil文件时,类似C语言编程,首先是预编译(例:#include“stdio.h”)我们编写程序都是在int main(viod)中,其中while(1)内是死循环,常用来编写系统功能,保证系统能够一直运行。在while(1)外面通常编写一些初始化、使能函数。(例:打开中断函数等)。

注意:编写代码一定要在USER CODE BEGIN 到UESR CODE END之间,否则在修改CubeMx配置之后代码会被清除

这边例程就是GPIO口开关控制LED灯亮灭

 while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

		if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_9)==1)//对引脚pb9进行读取高低电平
		{
			HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);//RESET重置的意思
		}
		else if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_9)==0)
		{
			HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);//SET设置的意思
		}
  }
  /* USER CODE END 3 */

四、最后点击编译并烧写。

五、STM32基于HAL库的GPIO控制函数总结

(1)HAL_GPIO_DeInit

功能:这个函数的主要功能是将我们在引脚初始化之后的引脚恢复成默认的状态,即各个寄存器复位时的值。

例:HAL_GPIO_DeInit(GPIOx,GPIO_PIN_X);

(2)HAL_GPIO_EXTI_Callback

功能:这个函数是中断回调函数,可以理解为中断函数具体要响应的动作。

例:HAL_GPIO_EXTI_Callback(GPIO_PIN_X);

(3)HAL_GPIO_EXTI_IRQHandler

功能:这个函数是外部中断服务函数,用来响应外部中断的触发。

例:HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_PIN_X);

(4)HAL_GPIO_Init

功能:这个函数主要用来初始化我们需要用到的引脚的工作模式,包括具体引脚的工作速度、是否复用模式、上下拉等等参数。

例:GPIO_InitTypeDef GPIO_Init_Structure;

GPIO_Init_Structure. Pin = GPIO_PIN_10 | GPIO_PIN_11; //选择对PB10和PB11进行设置

GPIO_Init_Structure. Mode = GPIO_MODE_OUTPUT_OD; //设置输出为上拉模式(PP改为OD为开漏)

GPIO_Init_Structure. Speed = GPIO_SPEED_FREQ_HIGH; //速度设置为高速100M

HAL_GPIO_Init(GPIOB,&GPIO_Init_Structure);

(5)HAL_GPIO_LockPin

功能:使用此函数后,当此引脚电平保持为当前状态,并无法更改。

例:HAL_GPIO_LockPin(GPIOX,GPIO_PIN_X);

(6)HAL_GPIO_ReadPin

功能:检测这个引脚当前状态值,函数返回值为0或1。

例:HAL_GPIO_ReadPin(GPIOX,GPIO_PIN_X);

(7)HAL_GPIO_TogglePin

功能:这个函数用来翻转某个引脚的电平状态。

例:HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_10);

(8)HAL_GPIO_WritePin

功能:这个函数从字面意思来看就是给某个引脚写0或1,但是不要理解成,写1就是使能之类的意思,有些寄存器写1是擦除的意思。

例:

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_SET) //高电平      

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_RESET)//低电平文章来源地址https://www.toymoban.com/news/detail-500828.html

到了这里,关于STM32基于HAL库的开发与应用(2)GPIO口控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【STM32】基于HAL库的中断详细学习

    1.中断概述 1.1中断相关概念 1.2 STM32中断系统 2 .HAL库的中断处理 2.1 HAL 库的中断封装 2.2 外部中断处理流程 3.外部中断的HAL库定义 3.1. 外部中断的数据类型 3.2. 外部中断的接口函数 在计算机系统中,处理器常常需要与外部设备进行数据传输。常见的数据传输方式有以下四种:

    2024年02月02日
    浏览(81)
  • STM32机器人控制开发教程No.4 使用串口通信控制电机(基于HAL库)

    在机器人控制中,单片机(Arduino/STM32)与上位机(Raspberry Pi/NVIDIA Jetson nano)之间的通信经常采用串口通信的方式,那应该如何使用STM32的串口通信以及根据自己定义的协议来完成数据的接收与发送呢?在本篇文章中将给你演示如何通过自定协议来完成对电机的控制以及获取编码

    2023年04月25日
    浏览(58)
  • 基于stm32+HAL库的ADC电压采集实验

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 只会用if的大神提醒您,敌军还有30秒到达战场,碾碎他们!白银局不要怕! 软件:keil5、stm32cubemx、串口调试助手 硬件:stm32f103系列的开发板、杜邦线*1、串口工具 仅此而已!!!正好6神 1、打开cube

    2023年04月15日
    浏览(44)
  • STM32基于hal库的智能小车—红外寻迹

    材料: (1)stm32f407zgt6最小系统开发板 (2)l298n电机驱动模块1个 (3)四个电机 (4)循迹红外模块3个 一、组装 (1)L298N电机驱动模块与stm32开发板接线如下图: 说明:PWM接线把跳线帽扒开接外面引脚 CH1接ENA,CH2接ENB。 (2)寻迹红外接线: 二、主要程序 1、STM32CUBEMX配置如下:

    2024年02月01日
    浏览(48)
  • STM32的HAL库开发系列 - GPIO中断/外部中断EXTI

    STM32的HAL库开发系列 - GPIO中断/外部中断EXTI 中断它可以在GPIO口的电平发生变化时产生中断,从而使得STM32微控制器能够及时响应外部设备的变化。 STM32的GPIO中断/外部中断EXTI可以配置为上升沿中断、下降沿中断和双边沿中断三种类型,分别在GPIO口电平从低电平变为高电平、从

    2024年02月12日
    浏览(42)
  • 嵌入式-Stm32-江科大基于标准库的GPIO通用输入输出口

    (推荐先看文章:《 嵌入式-32单片机-GPIO推挽输出和开漏输出》) 下文图都是从参考手册借阅:STM32F10xxx(中文),大概页数是110/775左右 GPIO (General Purpose Input Output)通用输入输出口 可配置为8种输入输出模式 引脚电平:0V~3.3V,部分引脚可容忍5V(有FT标识) 输出模式 下可控

    2024年01月17日
    浏览(63)
  • 嵌入式-Stm32-江科大基于标准库的GPIO的八种模式

    (推荐先看文章:《 嵌入式-32单片机-GPIO推挽输出和开漏输出》) 下文图都是从参考手册借阅:STM32F10xxx(中文),大概页数是110/775左右 GPIO (General Purpose Input Output)通用输入输出口 可配置为8种输入输出模式 引脚电平:0V~3.3V,部分引脚可容忍5V(有FT标识) 输出模式 下可控

    2024年01月20日
    浏览(52)
  • STM32:基于HAL 库的外部中断按键以及消抖

    第一次写博客,有错误与问题欢迎指正。 这部分直接上代码,假设PB5为输入端且上拉,PB11为输出。 在CubeMx中配置完引脚(下降沿触发)并在NVIC中开启外部中断后,我们注意到,上一个程序有5个要素(我写了注释的5个): 中断回调函数HAL_GPIO_EXTI_Callback是一个虚函数,我们

    2024年04月10日
    浏览(50)
  • STM32基于HAL库的串口接受中断和空闲中断

    在通信方面。UART由于全双工通信,可以同时接受数据和发送数据而被广泛使用。 而接受数据则又有很多种方法 比如: 1根据结束符判断,数据是字符串形式,所以一般串口接受的接受符就是 \\\"rn\\\"  换成16进制ascil码显示就是 0X0D   0X0A (对应rn)  2定时器中断,设计\\\"喂狗信号量

    2023年04月08日
    浏览(49)
  • 嵌入式-Stm32-江科大基于标准库的GPIO4个小实验

    核心:本文共4个小实验: 第一个:LED灯闪烁 第二个:LED流水灯 第三个:按键控制LED 第四个:光敏传感器控制蜂鸣器 1.1 LED、蜂鸣器、面包板 LED:发光二极管,正向通电点亮,反向通电不亮。 有源蜂鸣器(本实验):内部自带振荡源,将正负极接上直流电压即可持续发声,频

    2024年01月21日
    浏览(64)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包