ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

BearPi Std 板从入门到放弃 - 1 引气入体篇(2)

2026/9/7 21:28:50 拓冰建站 浏览量
BearPi Std 板从入门到放弃 - 1 引气入体篇(2)

简介

基于 第一篇文章 的介绍, 我们新增按键的中断控制;
开发板 : Bearpi Std(小熊派标准板)
主芯片: STM32L431RCT6
LED :  PC13 \ 推挽输出即可 \ 高电平点亮 
KEY1 :  PB2 \ 上拉 \ 按下下降沿触发(一次)/上下沿触发(两次,实现按下开、松开关)
KEY2 :  PB3 \ 上拉 \ 按下下降沿触发(一次)/上下沿触发(两次,实现按下开、松开关)

步骤

创建项目

  1. 打开STM32CubeMX创建工程

  2. 配置
    RCC、Clock、USER_LED配置参考1
    KEY1和2配置如下
    PB2 配置成外部中断输入
    修改PB2引脚配置
    下降沿触发方式\上拉模式\标签USER_KEY1
    在这里插入图片描述
    PB3同样方法设置
    在这里插入图片描述
    将PB2/PB3的外部中断启用
    在这里插入图片描述

  3. 生成工程

    1. 项目名称路径
      在这里插入图片描述
    2. 生成Code配置
      只要相关库即可,不需要所有库
      在这里插入图片描述
  4. 加入功能代码
    main 函数while循环增加延时,死循环会导致时间片被暂用导致无法响应中断

	/*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 *//* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_Delay(1000); //}/* USER CODE END 3 */
}

main.c 中加入中断响应回调, 当中断触发时回调此函数, 记住在USER Code BEGIN4的注释BEGIN到END内添加, 这样下次使用STM32CubeMX增加功能时会保留块内代码

/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{if(GPIO_Pin==USER_KEY1_Pin) {HAL_GPIO_TogglePin(USER_LED_GPIO_Port,USER_LED_Pin);}if(GPIO_Pin==USER_KEY2_Pin){HAL_GPIO_TogglePin(USER_LED_GPIO_Port,USER_LED_Pin);}
}
/* USER CODE END 4 */
  1. 编译、烧录、复位、完成

BearPi_LED_KEY_IRQ 完整工程

BearPi Std 板从入门到放弃 - 1 引气入体篇(1)