聪聪哥哥
NUCLEO-U083RC学习历程6-exit中断学习
一:STM32 中断知识的基本介绍介绍:
STM32的每个IO都可以作为外部中断输入。STM32的中断控制器支持19个外部中断/事件请求:
线0~15:对应外部IO口的输入中断。
线16:连接到PVD输出。
线17:连接到RTC闹钟事件。
线18:连接到USB唤醒事件。
Stm32的中断配置方式:每个外部中断线可以独立的配置触发方式(上升沿,下降沿或者双边沿触发),触发/屏蔽,专用的状态位,该项设置可以在STM32cube中进行配置,。
二:STM32 中断软件配置步骤:
2.1初始化IO口为输入。
2.2开启IO口复用时钟。
2.3设置IO口与中断线的映射关系。
2.4初始化线上中断,设置触发条件等。
2.5配置中断分组(NVIC),并使能中断。
2.6编写中断服务函数。 清除中断标志位
三:原理图查看板载的按键引脚,如下:

四:STM32cube软件配置引脚功能如下所示:

初始化配置用户按键 PC13引脚配置信息

需要格外注意,需要开启按键中断函数:

五:工程代码编程步骤如下,直接在STM32CUBE生成底层代码中进行编写。
/**
* @brief GPIO Initialization Function
* @param None
* @retval None
*/
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* USER CODE BEGIN MX_GPIO_Init_1 */
/* USER CODE END MX_GPIO_Init_1 */
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/*Condiv GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
/*Condiv GPIO pin : PC13 */
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/*Condiv GPIO pin : PA5 */
GPIO_InitStruct.Pin = GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI4_15_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);
/* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */
}
由于是使用官方的工具生成的底层驱动函数,所以我们不用再去使能PC口的时钟,如果我们自己配置的,需要格外注意下。
添加中断处理函数,实现的效果如下,每次按下按键时,完成LED灯 IO口的电平翻转。
/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{
if (GPIO_Pin == GPIO_PIN_13)
{
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
}
}
/* USER CODE END 4 */
按钮/开关控制:当用户按下按钮或切换开关时,可以触发外部中断来响应用户的操作,例如控制LED的亮灭或执行特定功能。这种中断类型常用于用户界面交互,如按键控制设备启动、停止或切换模式。
传感器触发:当传感器检测到特定事件或条件发生时(如温度达到阈值、光线强度变化等),可以触发外部中断来及时处理传感器数据。这种中断类型在环境监测、工业自动化等领域有广泛应用。
工程附件
TEST06_exit.zip
版块:
开发板测评
2024/12/19 09:46
全部评论