小松的STM32教程(3)—— 外部中断和按键输入

这篇博客介绍了STM32的外部中断概念,强调其在嵌入式系统中的重要性,以及如何通过按键实现中断输入。内容涵盖中断的类型、电平触发和沿触发等基础知识,并提供了简化后的key.c和exit.c代码示例。博主建议使用外部中断代替软件轮询以节省资源,并给出了使用外部中断的主函数示例。作业部分要求读者实践扩展中断应用,理解中断初始化配置和中断优先级分组。
摘要由CSDN通过智能技术生成

预备

概述

中断是嵌入式中断的灵魂,使用中断可以避免不必要的软件等待,以及实现多任务的同步执行,中断分为看门口,定时器中断,串口中断,外部中断等,今天我们会说最简单的外部中断,同时也会提到电平触发,沿触发,中断分组等基本概念。触发外部中断最简单的方式就是使用按键,所以我们还会讲到如何进行最基本的输入。 我对同学们的要求依然是会使用,会改代码即可。

按键输入

本来准备说一下矩阵按键的输入,但是在如今,大家都会发现有一个趋势,那就是触摸屏输入取代了传统的多按键输入,所以在此我不准备说矩阵按键的操作,有兴趣的同学们可以自行查询资料,之后遇到类似的应用场景我们将使用触摸屏取而代之。

key.c

正点原子的按键代码包括了支持连按不支持连按两种模式,但是我个人觉得没有什么必要,此外我们仅仅使用一个按键,更多按键同学们照葫芦画瓢就可以。修改后的代码如下。

#include "key.h"
#include "delay.h"

//PC5 设置成输入
void KEY_Init(void)
{
   
	GPIO_InitTypeDef GPIO_InitStructure;

 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//PORTC时钟

	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag,使能SWD,可以用SWD模式调试,有可能是因为引脚被占用
	
	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_5;//PC5
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入,输入都默认设置为上拉
 	GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIOC5

} 


u8 KEY_Scan(u8 mode)
{
   	 
	if(KEY0==0)
	{
   
		delay_ms(10);//去抖动
		if(KEY0==0)return 1;
	
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值