BearPi Std 板从入门到放弃 - 引气入体篇(2)(按键触发外部中断控制LED亮灭)

简介

基于 第一篇文章 的介绍, 我们新增按键的中断控制;
开发板 : 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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/215241.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

git常用命令小记

(文章正在持续更新中) git init - 在当前目录下初始化一个新的 Git 仓库。 git clone [url] - 克隆远程仓库到本地。 git add [file] - 将文件添加到暂存区。 git commit -m "commit message" - 将添加到暂存区的文件提交到本地仓库。 git pus…

python毕业设计论文选题管理系统b615y

毕业论文管理方式效率低下,为了提高效率,特开发了本毕业论文管理系统。本毕业论文管理系统主要实现的功能模块包括学生模块、导师模块和管理员模块三大部分,具体功能分析如下: (1)导师功能模块:…

Rust UI开发(五):iced中如何进行页面布局(pick_list的使用)?(串口调试助手)

注:此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。 这是一个系列博文,本文是第五篇,前四篇链接: 1、Rust UI开发(一):使用iced构建UI时…

小红书营销4步骤,品牌需要经历哪些流程?

小红书平台是很多品牌首选的营销“主战场”。想要充分利用平台的优势,做好小红书营销,提升品牌市场认知度,打开产品销路,今天我们为大家分享下小红书营销4步骤,品牌需要经历哪些流程? 一、小红书营销四步法…

uniapp微信小程序解决绘制polygon结束时的问题

目录 一、前言 二、实现思路 三、结束标绘具体代码 1、在地图展示工具栏处判断工具按钮是否展示v-if"item.isshow" 2、data声明的工具按钮中新增结束标绘按钮 3、在按钮的点击事件中新增结束标绘的判断 4、判断绘制的线段个数是否大于等于三条,当满…

qiankun: 关于ElementUI字体图标加载不出来的问题

问题描述: 子应用使用的是vueelementUI,在项目main.js中需要引入elementUI的样式文件。elementUI的样式文件中有字体文件的引用,是以相对路径的形式写在css文件中的, 本来独立部署项目访问是没问题的,问题出现在以qi…

(03)vite 处理 css

文章目录 系列全集vite 处理css流程vite如何解决协同开发,样式重复覆盖的问题?使用less通过配置,更改vite的css默认行为 系列全集 (01)vite 从启动服务器开始 (02)vite环境变量配置 &#xff…

DevEco Studio设置背景图片

我们打开编辑器 左上角菜单 选择 File 下的 Settings 我们选择首选项 Appearance 8 Behavior 下的 Appearance 右侧界面 点击下面的 Background lmage… 新弹出的这个窗口 我们可以鼠标 拖拽它的边 把他拉大一点 当前 我们代码中是没有背景图片的 我们点击入下图指向的三个…

凌恩生物福利第二弹:转发送书!全方位多组学研究解决方案!

研究微生物的组学有很多种,都能在研究中提供研究所需的信息,然而随着科学研究的发展过程,单一的微生物组学研究已很难系统地阐释其生物过程的发生机制与发展变化,微生物与宿主,环境之间的整体性和复杂性,需…

centos安装Python3之后yum不能使用异常

场景: 需要在centos上安装Python3,但是安装Python3之后出现yum不能使用的问题。 问题描述 在centos上安装python3之后出现yum使用不了问题,使用yum会报如下信息: [roothadoop101~]# yum install wgetFile "/usr/bin/yum&q…

Python Rich模块:打造绚丽多彩的命令行界面

概要 在Python编程领域,命令行界面是开发者经常接触的环境之一。然而,传统的命令行界面通常只能呈现简单的文本信息,难以展现丰富的数据和交互效果。幸运的是,有一款名为Rich的Python模块,它能够让我们在命令行界面中创…

深度学习算法:探索人工智能的前沿

目录 引言 第一部分:深度学习的基础 1.1 什么是深度学习? 1.2 神经网络的演化 第二部分:深度学习的关键技术 2.1 卷积神经网络(CNN) 2.2 循环神经网络(RNN) 2.3 长短时记忆网络&#xf…

陶博士月线反转6.4 python 化代码

陶博士月线反转6.4 python 化代码 量化系统有好几个月没有进度了,之前一直纠结策略问题,无从下手。最近和量化的同学聊了下,还得先把自动交易流程先跑起来后面再慢慢优化策略。 所以先拿陶博士的月线反转6.4 python 化,作为试水的…

LVS-DR+Keepalived+动静分离实验

架构图 解释一下架构,大概就是用Keepalived实现两台DR服务器的LVS负载均衡,然后后端服务器是两台Nginx服务器两台Tomcat服务器并且实现动静分离这个实验其实就是把 LVS-DRKeepalived 和 动静分离 给拼起来,真的是拼起来,两个部分…

【工具使用-Audition】如何使用Audition查看频率

一,简介 在工作过程中要对处理后的音频进行频率分析,本文以Audition 2020为例进行说明,供参考。 二,操作步骤 2.1 生成测试音源 使用Audition生成左通道为1KHz,右通道为10KHz的音源信号 如图所示: 2.…

UE学习C++(1)创建actor

创建新C类 在 虚幻编辑器 中,点击 文件(File) 下拉菜单,然后选择 新建C类...(New C Class...) 命令: 此时将显示 选择父类(Choose Parent Class) 菜单。可以选择要扩展的…

学习-java多线程面试题

为什么不建议用Executors启动线程池 *队列LinkedBlockingQueue是没有边界的队列,请求多会造成OOM *建议使用ThreadPoolExecutors 线程池中提交一个任务的流程? 1先判断线程池是否有线程,如果与就直接执行,没有就放队列 2如果队列满了&#…

kubeadm 安装k8s1.28.x 底层走containerd 容器

1. k8s1.28.x 的概述 1.1 k8s 1.28.x 更新 Kubernetes v1.28 是 2023 年的第二个大版本更新,包含了 46 项主要的更新。 而今年发布的第一个版本 v1.27 有近 60 项,所以可以看出来,在发布节奏调整后, 每个 Kubernetes 版本中都会包…

使用 .NET Upgrade Assistant(升级助手)升级 .NET 老旧版本项目

使用 .NET Upgrade Assistant 升级 .NET 老旧版本项目 .NET Upgrade Assistant 概述.NET Upgrade Assistant 功能1、支持以下代码语言:2、支持的 .NET 升级路径:3、支持的项目类型: .NET Upgrade Assistant 安装1、使用 Visual Studio 扩展安…

ASP.NET+ACCES视频点播系统设计

设计思想 设计方法采用模块划分、面向对象的设计思想,主要划分为以下几个模块:视频窗口模块、界面设计模块、实现搜索/点击排行等功能模块、数据库模块、后台管理模块,本人主要完成前三个模块的设计。 开发步骤:①首先进行需求分…