stm32F042 (二) 按键触发中断
已经实现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 (二) 按键触发中断相关推荐
- (五)DSP28335基础教程——外部中断控制(按键触发)
0 前言 本期实验目标:采用外部中断方式响应按键触发,实现LED电平反转. 外部中断是DSP十分常用的功能,通常用来响应一些控制操作,比如判断按键是否按下,传感器是否接收到信号等等.那么通过该例程,大 ...
- ARM之S5pv210的按键和中断部分
一.按键和中断分析 要使用中断,首先要做好两个部分的工作:CPU中断的初始化和相应器件的中断的初始化. CPU中断初始化:就是要设置号CPU有关中断的东西. 相关器件的中断初始化:例如按键,就要设置好 ...
- 嵌入式-ARM-学习总结(7):按键与中断
嵌入式-ARM-学习总结(7):按键与中断 一.按键 1.S5PV210的按键 2.按键的2中相应方法:轮询方式和中断方式 3.按键对应的GPIO模式设置 4.轮询方式处理按键的程序流程 5.代码编写 ...
- Esp8266进阶之路17 esp8266自研的快速上电开关五次 (开-关为一次) ,无需按键触发则8266进去一键配网模式。(附带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...
- CC2530学习(二)外部中断
文章目录 一.硬件连接 二.寄存器描述 (一).引脚中断使能 (二).中断触发方式配置 (三).端口中断使能 (四).初始化中断标志位 (五).开启总中断 (六).中断服务函数 三.示例代码 四.实验 ...
- 单片机学习笔记————51单片机实现矩阵键盘的组合按键触发
一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...
- 跟着吴坚鸿学单片机——第16天:矩阵键盘的组合按键触发
原文链接:第十六节:矩阵键盘的组合按键触发. 文章目录 原文 读后感 自我练习 原文 第十六节:矩阵键盘的组合按键触发. 开场白: 上一节讲了矩阵键盘单个触发的压缩代码编程.这节讲矩阵键盘的组合按键触 ...
- 龙芯1B:按键外部中断例程
目录 前言 一.什么是外部中断? 1.外部中断:单片机实时地处理外部事件的一种内部机制. 二.外部中断程序开发步骤 1.步骤 2.函数介绍 GPIO中断API函数介绍: 编辑 3.外部中断代码 总结 ...
- TQ210——按键(中断查询法)
TQ210--按键 底板上有8个独立按键,可分别使用查询法和中断法控制按键.通过原理图可知:按键按下,GPIO检测到低电平,松开时高电平. 直接查询法程序的实现简单,但是效率很低,CPU一直在查询,啥 ...
最新文章
- SpringMVC权限管理
- 12.前K个高频元素---使用优先队列和哈希表解决
- Unix信号处理一些笔记
- sql 2005判断某个表或某个表中的列是否存在
- [蓝桥杯][算法提高VIP]分分钟的碎碎念-dfs
- CRM、用户管理权限
- 8635 气球(组合数)
- ubuntu 网络配置
- 帆软高级函数应用之文本函数
- 微信+html5+播放音频+自动播放,html5音频实现微信语音播放效果
- 『原创』老范的来电防火墙v1.0发布了(图文)
- arduino的L298N电机驱动模块如何和直流电机接线
- 北京冬奥会使用的集装箱最后如何处理
- 使用 DBCA 命令 删除 Oracle 数据库
- 广西现代职业技术学院的计算机怎么样,广西现代职业技术学院宿舍条件
- SQL Server 代理 显示异常,未开启
- 解铃还须系铃人—大数据时代的安全交给大数据
- 妈蛋,这玩意还真不得不会!
- CSS3新增的选择器有哪些?
- 免费网络电话App 席卷移动互联网市场
热门文章
- 打开云服务器连不上网,云服务器怎么连接网络连接不上
- c++每调用一次函数+1_每个开发人员都应该知道的一些很棒的现代C ++功能
- 测试nginx网站代码_在40行以下代码中使用NGINX进行A / B测试
- (C++) CSP 201803-1 跳一跳
- Python 解决一行代码分成多行及多行代码放在一行
- 西部数码买哪处线路的云服务器,云服务器买哪个区合适
- 【教你赚钱】独立开发者荒野求生之道
- 转载:什么才是程序员的核心竞争力
- JavaScript-数据引用类型对象
- Sqli-labs less 9