STM32F103ZET6【HAL函开发】STM32CUBEMX------2.GPIO输入、按键外部中断

2023-10-30

一、硬件介绍

正点原子战舰开发板,主控芯片STM32F103ZET6
两个LED接到PB5 PE5
三个按键PE2 PE3 PE4接GND
一个按键PA0接VCC3.3

在这里插入图片描述
在这里插入图片描述

二、STM32CUBEMX基础配置

2.1 晶振配置

如果你的板子上外部高速晶振8M和外部低速晶振32.768K都有的话,那么就在RCC-HSE/LSE后面选择Cyrystal/Ceramic Resonator
在这里插入图片描述

2.2 下载口配置

程序下载方式建议用SW下载,比较节省IO口,除开VCC和GND,只需要两个线。
分别是PA13-SWDIO和PA14-SWCLK
在这里插入图片描述

2.3 配置时钟

STM32F103时钟最大到72MHZ,可以直接按最大时钟频率配置,注意如果显示红色,说明配置有问题,需要自行调整数值,直到没有红色提示为止
在这里插入图片描述

三、STM32CUBEMX外设配置

3.1 两个LED配置

LED需要将GPIO配置为推挽输出
在这里插入图片描述

3.2 四个按键配置

四个按键都要配置为外部中断模式
其中三个按键KEY0、KEY1、KEY2设置为上拉,一个KEY_UP设置为下拉
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
开启中断使能
在这里插入图片描述

四、生成工程

上面配置以及完成,直接生成代码,然后下载到单片机即可。生成代码方法如下
1.在Project中配置项目名,项目存放位置,开发工具名称等,但要注意项目名和路径不能有中文。
2.在Code Generator中配置代码中的一些规定
3.点击GENERATE CODE生成代码到项目文件夹中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、keil里面的设置

1.点击魔术棒,在Debug里面选择下载线,一般是J-LINK和ST-Link比较多。
2.在Settings-Debug中选择下载模式为SW
3.在Flash-Download中将Reset and Run勾选上,默认是不勾选的,这样可以程序下载进去就开始运行,否则每次都要复位一次程序才运行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、修改代码

为了增加代码的可读性,在main.c增加四个宏定义命令,注意自己增加的代码需要放在BEGINEND之间,可以可以避免重新生成工程被删除掉。
重写中断回调函数

/* USER CODE BEGIN PTD */
/* USER CODE BEGIN PTD */
#define LED0_ON  HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5,GPIO_PIN_RESET)//低电平
#define LED0_OFF HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5,GPIO_PIN_SET)//低电平
#define LED1_ON  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5,GPIO_PIN_RESET)//低电平
#define LED1_OFF HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5,GPIO_PIN_SET)//低电平
/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == GPIO_PIN_0)
    {
        LED0_ON;
				LED1_OFF;
    }	
    if(GPIO_Pin == GPIO_PIN_2)
    {
        LED0_ON;
				LED1_ON;
    }
	if(GPIO_Pin == GPIO_PIN_3)
    {
        LED0_OFF;
				LED1_ON;
    }	
    if(GPIO_Pin == GPIO_PIN_4)
    {
        LED0_OFF;
				LED1_OFF;
    }
}
/* USER CODE END PD */
/* USER CODE END PTD */

七、现象

图1
图2
图3
图4

PS:用switch的方式也可以实现上述效果

中断回调函数改为如下

/* USER CODE BEGIN PD */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    /* 判断哪个引脚触发了中断 */
    switch(GPIO_Pin)
    {
        case GPIO_PIN_0:
			LED0_ON;
			LED1_OFF;
           break;				
        case GPIO_PIN_2:
			LED0_ON;
			LED1_ON;
           break;				
        case GPIO_PIN_3:
			LED0_OFF;
			LED1_ON;
           break;				
        case GPIO_PIN_4:
			LED0_OFF;
			LED1_OFF;
           break;				
    }
}
/* USER CODE END PD */
/* USER CODE END PTD */
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32F103ZET6【HAL函开发】STM32CUBEMX------2.GPIO输入、按键外部中断 的相关文章

随机推荐

  • Docker容器搭建运行GPU深度学习环境

    nvidia smi Wed Nov 24 13 44 18 2021 NVIDIA SMI 495 44 Driver Version 495 44 CUDA Version 11 5 GPU Name Persistence M Bus
  • Oracle中调用dbms_output.put_line()不显示输出结果

    Oracle中调用dbms output put line 不显示输出结果 输入SQL语句 set serveroutput on
  • Thread线程原理使用优劣可否

    thead线程
  • java课设_Java 课设

    展开全部 简单的五子棋程序 新建一个chess类 其中代码如下 package work import java awt Color public class Chess public static final int diamter 30
  • 微信小程序云开发 1 - 数据库

    微信小程序云开发最重要的有两点 1 云数据库 2 云函数 学会这两点基本就能够进行微信小程序的云开发 首先 我们先看微信小程序云数据库的基本操作 1 打开微 信开发者工具 创建一个云开发微信小程序 在创建项目时勾选使用云开发即可 注意 使用
  • 4、VScode、WAMP、Xdebug调试

    1 查看Xdebug的版本 Xdebug是随WAMP一起安装的 版本号可以通过PHP扩展菜单下查看 为3 1 6 2 配置系统环境变量 将PHP的安装目录 添加到系统的环境变量中 配置完成后 通过命令行 输入命令 PHP V 查看是否配置成
  • JavaScript基础

    W3C 结构化语言标准 HTML XHTML XML 表现语言标准 CSS 行为语言标准 ECMAScript JS 有的时候代码没错 就是不显示 原因你得变量 定义在了function 函数的外面 document 向页面输出内容 ale
  • 剑指offer—40.最小的K个数—分析及代码(Java)

    剑指offer 40 最小的K个数 分析及代码 Java 一 题目 二 分析及代码 1 排序 1 思路 2 代码 3 结果 2 Partition 1 思路 2 代码 3 结果 3 堆 1 思路 2 代码 3 结果 三 其他 一 题目 输入
  • vue3中的ref,toRef,toRefs三个是干嘛的,有什么作用呢。

    1 ref的使用 ref 接受一个原始值 返回一个具有响应式的对象 对象有一个value属性 其值就是所传递的原始值 ref是做的一个拷贝关系 修改对象msg的值 不会影响对象obj 视图会发生变化 import ref from vue
  • 蓝桥杯单片机组经验分享之(三)各模块用法(3)继电器、蜂鸣器

    继电器和 有源 蜂鸣器用法类似LED 挂载在锁存器U9上 因为继电器和蜂鸣器需要提供较大的驱动电流 锁存器驱动能力不够 因此锁存器后加入了ULN2003提高带负载能力 驱动电流型设备 连接如下图 继电器 蜂鸣器分别接于QUT5 OUT7 锁
  • wps图表横纵坐标怎么设置_wps怎么切换横纵坐标/excel图表怎么切换横纵坐标

    怎样将excel中图表的横纵坐标互换 数据那边有个切换行列 怎么在excel把横纵坐标互换 你是指用excel制作的图标吗 你把数据先进行转置就好了 EXCEL图表中 如何将横坐标和纵坐标更换一下 右键点选图表数据区域 选择数据 看到切换行
  • 解决电信劫持的快速办法!

    DNS被劫持后的表现 打开一个正常的网站 电脑的右下角回莫名其妙的弹出一些小广告 打开一个下载链接 并不是自己所需要的东西 浏览器输入一个网址后回车网页跳转到其他网址的页面 iis7网站监控 测DNS污染检测 网站打开速度检测 网站是否被黑
  • windows下多个python版本共存

    不想使用virtualenv来管理多个python版本的 可以通过修改python exe的名字 然后加入环境变量 运行时通过名字区分即可 参考链接 https www cnblogs com pxuan p 6408823 html
  • 什么是Spring IOC 容器?

    Spring IOC 负责创建对象 管理对象 通过依赖注入 DI 装配对象 配置对象 并且管理这些对象的整个生命周期
  • 根据权重随机选取指定条数记录的简单算法实现(C#)【含源代码】

    原文地址 http www cnblogs com foolin archive 2012 03 22 2412632 html 一 应用场景 有时我们需要从一些列数据中根据权重随机选取指定条数记录出来 这里需要权重 随机 我们根据权重越大
  • 用ACM LaTeX最新模板(acmart)时遇到的作者单位和地址无法合并的问题

    这个问题只是简单记录一下 目前并没有太好的解决方案 这几天在准备一篇论文的Camera Ready版本 发现这个问题很让人苦恼 以前我们用ACM的LaTeX模板 如果多个作者属于一个单位 可以用 sharedaffiliation这种方式
  • 日常健康管理

    0分贝0dB是人们刚刚能听到的最微弱的声音听觉下限 30dB40dB是较为理想的安静睡眠环境 超过50dB会影响睡眠和休息70dB会干扰谈话 影响工作效率长期生活在90分贝以上的噪声环境 会严重影响听力和引起神经衰弱 头疼 血压升高等疾如果
  • 怎么看空调定时成功_空调定时怎么设置

    空调是我们常用的电器 尤其是在炎热的夏季空调是我们必须使用的家电 夜晚的时候一直开着空调很容易着凉 这个时候我们可以开启空调的定时键 今天想跟大家说一说空调定时怎么设置 希望可以给大家带来帮助 一 空调定时怎么设置 1 首先我们先打开空调
  • CSV文件中的逗号、双引号的转义。读写带特殊字符的csv文件。

    如果字段中有逗号 该字段使用双引号 括起来 如果该字段中有双引号 该双引号前要再加一个双引号 然后把该字段使用双引号括起来 字段处理前 字段处理后 abc d2 abc d2 ab c d2 ab c d2 abc abc 参考文章 htt
  • STM32F103ZET6【HAL函开发】STM32CUBEMX------2.GPIO输入、按键外部中断

    一 硬件介绍 正点原子战舰开发板 主控芯片STM32F103ZET6 两个LED接到PB5 PE5 三个按键PE2 PE3 PE4接GND 一个按键PA0接VCC3 3 二 STM32CUBEMX基础配置 2 1 晶振配置 如果你的板子上外