已经实现GPIO口输出高低电平控制LED,这里实现按键触发中断来改变LED闪亮的频率,因为PB3连着LED,所以PB3的输出模式没有改变,随意选一个GPIO口PA7接按键产生中断。因为nucleo开发板是裸板,所以按键、上拉电阻是另找在面包上连接起来再连到开发板上,连接方法在下图表明。

GPIO设置

在 stm32f0xx_it.c添加如下代码

/* USER CODE BEGIN 0 */
uint16_t KEY_DOWN = 0;
uint16_t ms_Delay = 300;
/* USER CODE END 0 */

void EXTI4_15_IRQHandler(void)
{
/* USER CODE BEGIN EXTI4_15_IRQn 0 */

if(ms_Delay == 300)
ms_Delay = 1000;
else
ms_Delay = 300;

/* USER CODE END EXTI4_15_IRQn 0 */

在main.c里添加如下代码

/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
extern uint16_t KEY_DOWN ;
//uint16_t KEY_UP = 1;
extern uint16_t ms_Delay ;
/* USER CODE END PV */

稍微改动一下while(1)中代码:

while (1)
{
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_SET);
HAL_Delay(ms_Delay);
HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_RESET);
HAL_Delay(ms_Delay);
}
/* USER CODE END 3 */

}

另一种方案是直接改动main.c的代码,无需改动其他代码

/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
uint16_t KEY_DOWN = 0;
//uint16_t KEY_UP = 1;
uint16_t ms_Delay = 300;
/* USER CODE END PV */

/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_SET);
HAL_Delay(ms_Delay);
HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_RESET);
HAL_Delay(ms_Delay);
}
/* USER CODE END 3 */

添加以下函数

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{

// if(HAL_GPIO_ReadPin(PA7_GPIO_Port,PA7_Pin)==KEY_DOWN)
// {
// HAL_Delay(20);/* 延时一小段时间,消除抖动 */
// if(HAL_GPIO_ReadPin(PA7_GPIO_Port,PA7_Pin)==KEY_DOWN)
// {
if(ms_Delay == 300)
ms_Delay = 1000;
else
ms_Delay = 300;
// }
// __HAL_GPIO_EXTI_CLEAR_IT(PA7_Pin);
// }
}

以上能够实现改动LED闪动频率,其实更完美的方案对按键进行消抖,但在这里的中断消抖不成功,还待后续学习调试

转载于:https://www.cnblogs.com/fengconglin/p/5800919.html

stm32F042 (二) 按键触发中断相关推荐

  1. (五)DSP28335基础教程——外部中断控制(按键触发)

    0 前言 本期实验目标:采用外部中断方式响应按键触发,实现LED电平反转. 外部中断是DSP十分常用的功能,通常用来响应一些控制操作,比如判断按键是否按下,传感器是否接收到信号等等.那么通过该例程,大 ...

  2. ARM之S5pv210的按键和中断部分

    一.按键和中断分析 要使用中断,首先要做好两个部分的工作:CPU中断的初始化和相应器件的中断的初始化. CPU中断初始化:就是要设置号CPU有关中断的东西. 相关器件的中断初始化:例如按键,就要设置好 ...

  3. 嵌入式-ARM-学习总结(7):按键与中断

    嵌入式-ARM-学习总结(7):按键与中断 一.按键 1.S5PV210的按键 2.按键的2中相应方法:轮询方式和中断方式 3.按键对应的GPIO模式设置 4.轮询方式处理按键的程序流程 5.代码编写 ...

  4. Esp8266进阶之路17 esp8266自研的快速上电开关五次 (开-关为一次) ,无需按键触发则8266进去一键配网模式。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  5. CC2530学习(二)外部中断

    文章目录 一.硬件连接 二.寄存器描述 (一).引脚中断使能 (二).中断触发方式配置 (三).端口中断使能 (四).初始化中断标志位 (五).开启总中断 (六).中断服务函数 三.示例代码 四.实验 ...

  6. 单片机学习笔记————51单片机实现矩阵键盘的组合按键触发

    一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...

  7. 跟着吴坚鸿学单片机——第16天:矩阵键盘的组合按键触发

    原文链接:第十六节:矩阵键盘的组合按键触发. 文章目录 原文 读后感 自我练习 原文 第十六节:矩阵键盘的组合按键触发. 开场白: 上一节讲了矩阵键盘单个触发的压缩代码编程.这节讲矩阵键盘的组合按键触 ...

  8. 龙芯1B:按键外部中断例程

    目录 前言 一.什么是外部中断? 1.外部中断:单片机实时地处理外部事件的一种内部机制. 二.外部中断程序开发步骤 1.步骤 2.函数介绍 GPIO中断API函数介绍: ​编辑 3.外部中断代码 总结 ...

  9. TQ210——按键(中断查询法)

    TQ210--按键 底板上有8个独立按键,可分别使用查询法和中断法控制按键.通过原理图可知:按键按下,GPIO检测到低电平,松开时高电平. 直接查询法程序的实现简单,但是效率很低,CPU一直在查询,啥 ...

最新文章

  1. SpringMVC权限管理
  2. 12.前K个高频元素---使用优先队列和哈希表解决
  3. Unix信号处理一些笔记
  4. sql 2005判断某个表或某个表中的列是否存在
  5. [蓝桥杯][算法提高VIP]分分钟的碎碎念-dfs
  6. CRM、用户管理权限
  7. 8635 气球(组合数)
  8. ubuntu 网络配置
  9. 帆软高级函数应用之文本函数
  10. 微信+html5+播放音频+自动播放,html5音频实现微信语音播放效果
  11. 『原创』老范的来电防火墙v1.0发布了(图文)
  12. arduino的L298N电机驱动模块如何和直流电机接线
  13. 北京冬奥会使用的集装箱最后如何处理
  14. 使用 DBCA 命令 删除 Oracle 数据库
  15. 广西现代职业技术学院的计算机怎么样,广西现代职业技术学院宿舍条件
  16. SQL Server 代理 显示异常,未开启
  17. 解铃还须系铃人—大数据时代的安全交给大数据
  18. 妈蛋,这玩意还真不得不会!
  19. CSS3新增的选择器有哪些?
  20. 免费网络电话App 席卷移动互联网市场

热门文章

  1. 打开云服务器连不上网,云服务器怎么连接网络连接不上
  2. c++每调用一次函数+1_每个开发人员都应该知道的一些很棒的现代C ++功能
  3. 测试nginx网站代码_在40行以下代码中使用NGINX进行A / B测试
  4. (C++) CSP 201803-1 跳一跳
  5. Python 解决一行代码分成多行及多行代码放在一行
  6. 西部数码买哪处线路的云服务器,云服务器买哪个区合适
  7. 【教你赚钱】独立开发者荒野求生之道
  8. 转载:什么才是程序员的核心竞争力
  9. JavaScript-数据引用类型对象
  10. Sqli-labs less 9