使用工具:keil5.38a,stm32cubemx 6.11.0版本 type-c一根 1:中断知识的介绍: STM32的每个IO都可以作为外部中断输入。STM32的中断控制器支持19个外部中断/事件请求: 线0~15:对应外部IO口的输入中断。 线16:连接到PVD输出。 线17:连接到RTC闹钟事件。 线18:连接到USB唤醒事件。 Stm 32的中断配置方式:每个外部中断线可以独立的配置触发方式(上升沿,下降沿或者双边沿触发),触发/屏蔽,专用的状态位。 二:一般软件配置中断初始化步骤: 1: 初始化IO口为输入。 2: 开启IO口复用时钟。 3: 设置IO口与中断线的映射关系。 4: 初始化线上中断,设置触发条件等。 5:配置中断分组(NVIC),并使能中断。 6:编写中断服务函数。 7: 清除中断标志位 3:cube软件配置图如下: 具体的STM32 cubxMx 使用可以参考第一篇的步骤,这里不再重复介绍。。 4:编写中断服务函数: 在MX_GPIO_Init()中需要确定一下,是否开始了中断使能 / EXTI interrupt init/ HAL_NVIC_SetPriority(EXTI13_IRQn, 0, 0); HAL_NVIC_EnableIRQ(EXTI13_IRQn); 由于是使用官方的工具生成的底层驱动函数,所以我们不用再去使能PC口的时钟,如果我们自己配置的,需要注意下。 void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == GPIO_PIN_13) {
} } 在GPIO口初始化中,修改 IO口的模式可以配置成上升沿触发或者下降沿触发的工作模式。 下降沿沿触发配置如下: /Configure GPIO pin : PC13 / GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); 上升沿触发配置如下: /Configure GPIO pin : PC13 / GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); 中断的应用场景: 按钮/开关控制:当用户按下按钮或切换开关时,可以触发外部中断来响应用户的操作,例如控制LED的亮灭或执行特定功能。这种中断类型用于按键控制设备启动、停止或切换模式。 传感器触发:当传感器检测到特定事件或条件发生时(霍尔传感器、接近开关等等),可以触发外部中断来及时处理传感器数据。这种中断类型在工业控制中经常用到。 编码器计数:可以将中断口检测编码器计数功能,3600rpm测试时候,极少情况下才会出现丢数的情况,可以做到精准的电机控速。 |
实战经验 | STM32H5 USBD Classic驱动 CDC移植
【STM32H7S78-DK评测】-5 LVGL&DMA2D DEMO测试
【STM32H7S78-DK评测】步进电机控制介绍一与tensorflow安装与测试
NUCLEO-H563ZI刷入Micropython固件并点亮LED灯
基于STM32H5的DA之初体验经验分享(带 Trust Zone)
【STM32H7S78-DK评测】XIP模板问题处理与电机控制
【免费申请】高性能和低成本双Buff加持的NUCLEO H533RE,等你来!
【STM32H7S78-DK评测】开发板初识与工程模板创建
【NUCLEO-H533RE评测】使用双存储区Flash 在不关闭系统的状态下,实现OTA
【NUCLEO-H533RE评测】高性能-全频,硬件加速在电机控制相关应用的速度对比。