首页 > 其他分享 >STM32 HAL库学习 (3) 中断!

STM32 HAL库学习 (3) 中断!

时间:2023-03-18 22:36:20浏览次数:32  
标签:HAL 函数 中断 STM32 Init GPIO EXTI

一、EXTI 的 HAL 库驱动


前面讲解 HAL_GPIO_Init 函数的时候有提到过:HAL 库的 EXTI 外部中断的设置功能整合到 HAL_GPIO_Init 函数里面,而不是单独独立一个文件。所以我们的外部中断的初始化函数也是用 HAL_GPIO_Init 函数。
既然是要用到外部中断,所以我们的 GPIO 的模式要从下面的三个模式中选中一个:
image


EXTI 外部中断配置步骤


1) 使能 IO 口时钟。
    本实验用到的 GPIO 和按键输入实验是一样的,因此 GPIO 时钟使能也是一样的,请参考
上一章代码。
2) 设置 IO 口模式,触发条件,开启 SYSCFG 时钟,设置 IO 口与中断线的映射关系。
    这些步骤 HAL 库全部封装在 HAL_GPIO_Init 函数里面,我们只需要设置好对应的参数,
再调用 HAL_GPIO_Init 函数即可完成配置。
3)配置中断优先级(NVIC),并使能中断。
    配置好 GPIO 模式以后,我们需要设置中断优先级和使能中断,中断优先级我们使用HAL_NVIC_SetPriority 函数设置,中断使能我们使用 HAL_NVIC_EnableIRQ 函数设置。
4) 编写中断服务函数。
    每开启一个中断,就必须编写其对应的中断服务函数,否则将导致死机(CPU 将找不到中断服务函数)。中断服务函数接口厂家已经在 startup_stm32f407xx.s 中写好了。
5)编写中断处理回调函数 HAL_GPIO_EXTI_Callback
    HAL 库为了用户使用方便,提供了一个中断通用入口函数HAL_GPIO_EXTI_IRQHandler,在该函数内部直接调用回调函数 HAL_GPIO_EXTI_Callback。
    我们先来看一下 HAL_GPIO_EXTI_IRQHandler 函数定义:

标签:HAL,函数,中断,STM32,Init,GPIO,EXTI
From: https://www.cnblogs.com/sathiala/p/17232010.html

相关文章

  • STM32 HAL库学习 (2) USART实验
    使用STM32F407串口:PA9、PA10(利用CH340G驱动)1.stm32f4xx_hal_uart.c函数说明HAL_UART_Init函数要使用一个外设首先要对它进行初始化,所以先看串口的初始化函数,其声明......
  • STM32 HAL库学习(F407ZGT6) (1)-晶振/时钟树
    对于STM32F4系列的芯片,正常工作的主频可以达到168Mhz,但并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十Khz的时钟即可。同一个电路,时钟越快......
  • Halcon 22.11版本激活试用方法
    参考地址:https://github.com/lovelyyoshino/Halcon_licenses亲测有效在页面当月文件夹下载(或复制license内容后新建license.dat文件)将对应Halcon版本当月的dat文件放到H......
  • stm32F0中断系列详解
    1、中断的概念 概念:程序执行过程中CPU会遇到一些特殊情况,是正在执行的程序被“中断”,cpu中止原来正在执行的程序,转到处理异常情况或特殊事件的程序去执行,结束后再返......
  • gicv3 arm64 中断亲核 affinity
    https://blog.csdn.net/wenfei11471/article/details/80303750?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-803037......
  • Datawhale跟李沐大神合作举办 (动手学深度学习) !
    三月的组队学习跟李沐大神合作举办(动手学深度学习),欢迎感兴趣的小伙伴报名学习,另外,欢迎志同道合的小伙伴了解、加入Datawhale!跟李沐导师:动手学深度学习!动手学深度学习......
  • keil在线调试STM32,点三次运行才能跑到main的问题
    遇到的问题是,在include了,并调用对象的pushback()函数,就会出现需要点击3次才能全速运行。目前解决的办法是勾选microlib选项,但会出现警告说microlib不支持C++暂不清楚这......
  • ES6-ES11 ES11String.prototype.matchAll
    原视频<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title......
  • stm32报错
    1、 declarationmaynotappearafterexecutablestatementinblock关于编译错误的小伙伴:error:#268:declarationmaynotappearafterexecutablestatementinb......
  • 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 02.AI自定义任务和观察器中断
    斯坦福课程UE4C++ActionRoguelike游戏实例教程0.绪论概述本文章对应课程第十一章42节。这篇文章会进一步地为AI添加新功能,创建自定义任务,允许AI发射子弹,并且讲解观......