STM32CubeMX学习三 之外部中断

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


前言

记录一下STM32CubeMX的学习笔记,同时分享给初学的小白,希望一起进步。
如何使用STM32CubeMX以及工程创建在之前的博客有提到,这里就直接从外部中断讲起。


一、本地环境

编译环境:KEIL
代码生成:STM32CubeMX
库:HAL
MCU:STM32F072

二、开始

1.外部中断配置

假设你的cubeMX工程已经建好,这里我们配置KEY1、KEY2、KEY3三个按键输入引脚为EXIT(外部中断)功能。

选中“Pinout&Configuration”选项,点击左边的System Core选项,选中GPIO。
STM32CubeMX学习三 之外部中断
在 Pinout 界面配置 GPIO,这里我们设置PA0 、 PA1 、PA2为外部功能。
STM32CubeMX学习三 之外部中断
设置完成后可以看到引脚变绿了,切右键点击可以设置引脚的label名称,生成工程的时候该引脚就会命名为你设置的label名。
STM32CubeMX学习三 之外部中断

设置好过后我们会在中间看到gpio的初始配置,点击引脚,接下来我们根据自己的需求给GPIO配置成我们想要的模式。
STM32CubeMX学习三 之外部中断

1、配置gpio的上拉电阻
2、配置gpio的中断触发沿
2、配置gpio的中断触发模式

配置后如图:
STM32CubeMX学习三 之外部中断
选择对应的GPIO来进行配置,我这里是吧三个按键IO设置成了中断触发和上拉的模式。
这里还要讲一下,外部中断触发模式还有很多种:
1、上升沿中断触发
2、下降沿中断触发
3、上升/下降沿中断触发
4、外部事件上升沿触发
5、外部事件下降沿触发
6、外部事件上升/下降沿触发

以上六种中断触发模式都是我们可以设置的,大概意思就是这个GPIO在变高电平或者低电平的时候会触发中断,然后完成中断回调里面的功能函数。
STM32CubeMX学习三 之外部中断

NVIC中断使能配置:
STM32CubeMX学习三 之外部中断

2.时钟配置

配置完GPIO后开始配置时钟,这里讲的是没有外部时钟,用的是内部时钟,默认14Mhz的内部时钟。
STM32CubeMX学习三 之外部中断

3.代码生成

时钟配置完毕后,选择“Project Manager”到工程配置界面。
1、配置工程的名称
2、工程存储路径
3、IDE选择(如果是keil工具,选择MDK-ARM)
4、mcu依赖的cube包在哪个目录
STM32CubeMX学习三 之外部中断

接着到“Code Generator”下选择这几个选项来生成工程:

STM32CubeMX学习三 之外部中断

选择好过后我们就可以点击右上角的"GENERATE CODE"按键来生成代码了。
如果提示你的firmware package 缺少直接更新下载即可,如果没网状态,就需要去官网下载依赖包放在之前提到的目录下即可。

我是用一下依赖包生成得工程代码。
STM32CubeMX学习三 之外部中断

3.编译工程

点击编译按钮对工程进行编译。
STM32CubeMX学习三 之外部中断
在 CubeMX 生成的文件中添加用户代码的时候,必须是写在/* USER CODE BEGIN n*/和/* USER CODE
END n*/之间。这样如果需要改变 Cube 工程的配置,在重新生成代码时,在这两句注释之间的语 句不会被覆盖。而用户新建或添加的文件不会受到影响。

4.添加功能代码

我们这里工程就基本建好了,现在来实现功能代码部分。
我这里是通过发送串口消息来验证按键中断是否触发。要注意的是,我们按下一次按键,可能会发送多条信息,原因是按键存在抖动,我们还需要进行按键消抖。

我们要添加函数功能到回调函数内,那么怎么去找这个回调函数了?
1、我们可以打开对应的头文件,这里是stm32f0xx_hal_gpio.h,找到以callback结尾的函数(HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);)
STM32CubeMX学习三 之外部中断

通过点击右键,然后点击“go to Definition…”就可以定位到函数实现的地方:
STM32CubeMX学习三 之外部中断
这里我们看到这个函数是被 __weak修饰的函数,所以这个函数如果我们要使用的话直接把函数复制出来在用户端直接重写就行了。
在CubeMX生成的程序框架中,GPIO外部中断共用一个回调函数接口。要想知道是哪个中断源,就判断其输入参数GPIO_Pin。

在gpio.c中添加以下代码就可以识别对应的GPIO中断了。文章来源地址https://www.toymoban.com/news/detail-404340.html

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin & GPIO_PIN_0)
	{
		//功能实现
	}
	if(GPIO_Pin & GPIO_PIN_1)
	{
		//功能实现
	}
	if(GPIO_Pin & GPIO_PIN_2)
	{
		//功能实现
	}
}

STM32CubeMX学习三 之外部中断

创作不易,请大佬们点个赞!
有问题请留言讨论!

到了这里,关于STM32CubeMX学习三 之外部中断的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • STM32F429IGT6使用CubeMX配置外部中断按键

    STM32F429IGT6使用CubeMX配置外部中断按键

    1、硬件电路 2、设置RCC,选择高速外部时钟HSE,时钟设置为180MHz 3、配置GPIO引脚  4、NVIC配置  PC13相同   5、生成工程配置   6、部分代码 中断回调函数 7、实验现象

    2024年02月13日
    浏览(13)
  • HAL库(STM32CubeMX)之外部中断(STM32F103C8T6)

    HAL库(STM32CubeMX)之外部中断(STM32F103C8T6)

    HAL库(STM32CubeMX)——ADC学习总结(包含单次/连续模式下的轮询/中断/DMA)(蓝桥杯STM32G431RBT6) HAL库(STM32CubeMX)——DAC学习(STM32G431RBT6) HAL库(STM32CubeMX)——USART配置(中断接收/STM32G431RBT6) HAL库(STM32CubeMX)——基本定时器、PWM、输入捕获、输出比较、互补式PWM等综合学习(STM32

    2024年02月06日
    浏览(12)
  • 基于STM32CubeMX与keil采用按键外部中断方式控制LED与蜂鸣器

    基于STM32CubeMX与keil采用按键外部中断方式控制LED与蜂鸣器

    这篇文章详细记录外部中断方式控制LED的亮灭以及蜂鸣器的开关;本文从原理图开始到最后实现功能,内容详细。 本栏目的所有都是基于STM32F407ZET6芯片,博主采用的是普中的天马F407开发板。 实现功能:LED0与LED1默认熄灭,蜂鸣器默认关闭。按下按键KEY0,控LED0亮灭;按下按

    2024年02月16日
    浏览(10)
  • 【STM32】STM32学习笔记-EXTI外部中断(11)

    【STM32】STM32学习笔记-EXTI外部中断(11)

    中断 :在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行 中断优先级 :当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加

    2024年02月04日
    浏览(10)
  • 【STM32学习笔记】(13)——外部中断详解

    【STM32学习笔记】(13)——外部中断详解

            EXTI(External interrupt/event controller)—外部中断/事件控制器 ,管理了控制器的 20 个中断/事件线。每个输入线可以独立地配置输入类型(脉冲 或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置

    2024年02月05日
    浏览(7)
  • stm32学习笔记-5EXIT外部中断

    stm32学习笔记-5EXIT外部中断

    注:笔记主要参考B站 江科大自化协 教学视频“STM32入门教程-2023持续更新中”。 注:工程及代码文件放在了本人的Github仓库。 图5-1 中断及中断嵌套示意图 中断 是指在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理

    2024年02月09日
    浏览(7)
  • stm32——hal库学习笔记(外部中断)

    stm32——hal库学习笔记(外部中断)

    一、什么是中断?(了解) 打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行,就叫中断 中断的作用和意义 中断的意义:高效处理紧急程序,不会一直占用CPU资源 STM32 GPIO外部中断简图 二、NVIC(熟悉) 2.1,NVIC基本概念 2.2,NVIC相关寄存器介绍

    2024年02月22日
    浏览(9)
  • 【STM32F407学习笔记】中断优先级管理与外部中断

    【STM32F407学习笔记】中断优先级管理与外部中断

    计算机系统中中断占有极其重要的地位,在嵌入式系统中更是如此。中断机制能让计算机有效合理的发挥效能和提高效率。 涉及外设 :EXIT外部中断,NVIC内嵌向量中断控制器。 计算机在执行程序的过程中,当出现异常情况或特殊情况时,计算机停止现在程序的运行,转向对

    2024年02月02日
    浏览(9)
  • 【STM32】STM32学习笔记-定时器定时中断 定时器外部时钟(14)

    【STM32】STM32学习笔记-定时器定时中断 定时器外部时钟(14)

    1.1 TIM_InternalClockConfig 1.2 TIM_TimeBaseInit 1.3 TIM_TimeBaseInitTypeDef 1.4 TIM_ClearFlag 1.5 TIM_ITConfig 1.6 TIM_Cmd 1.7 中断服务函数 参考程序 1.8 TIM_ETRClockMode2Config timer.h timer.c main.c timer.h timer.c main.c 09-定时器定时中断.rar 10-定时器外部时钟.rar 参考: 【STM32】江科大STM32学习笔记汇总

    2024年02月03日
    浏览(45)
  • STM32 学习笔记(六)定时器中断:内部时钟模式,外部时钟模式

    STM32 学习笔记(六)定时器中断:内部时钟模式,外部时钟模式

    定时器是功能最强大,内容最复杂的32结构。 之前51用过的功能,定时产生中断。 输出比较,常用于产生 PWM 波形,驱动电机等。 输入捕获,测量方波频率。 编码器,读取正交编码器的波形。 最大定时时间:72M/65536/65536=中断频率,中断频率取倒数是最大定时时间。 定时器可

    2024年02月08日
    浏览(15)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包