MSP432(Keil5)——2.按键及外部中断驱动

发布者:幸福自在最新更新时间:2022-08-04 来源: csdn关键字:MSP432  Keil5  按键 手机看文章 扫描二维码
随时随地手机看文章

在这里插入图片描述

本次按键实验是采用了板载的两个按键分别对应的P1.1与P1.4口,具体迁移到其他IO口的外部中断请移步原理图。


实验现象:按下按键会翻转板载LED灯状态。


key.c

#include "key.h"


void Key_Init(void)

{

/* Configuring P1.1 as an input and enabling interrupts */

/*配置1.1口为上拉输入*/

    MAP_GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN1);

/*清除IO口的中断标志位*/

    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, GPIO_PIN1);

/*使能P1.1的外部中断(这里只是一个引脚)*/

    MAP_GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN1);

/*使能P1端口的中断(这里是一个大端口,包括多个引脚)*/

    MAP_Interrupt_enableInterrupt(INT_PORT1);

/* Configuring P1.4 as an input and enabling interrupts */

    MAP_GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN4);

    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, GPIO_PIN4);

    MAP_GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN4);

    MAP_Interrupt_enableInterrupt(INT_PORT1);

}


/* GPIO ISR */

/*端口1中断处理函数*/

void PORT1_IRQHandler(void)

{

    uint32_t status;


    status = MAP_GPIO_getEnabledInterruptStatus(GPIO_PORT_P1);

    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, status);


    /* Toggling the output on the LED */

    /*检测到P1.1产生外部中断的处理*/

    if(status & GPIO_PIN1)

    {

        MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);

    }

if(status & GPIO_PIN4)

{

MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);

}


}


key.h

#ifndef __KEY_H

#define __KEY_H


/* DriverLib Includes */

#include


void Key_Init(void);


#endif


需要注意的一点是,只有这几个端口能产生外部中断(查阅库函数手册)

在这里插入图片描述

关键字:MSP432  Keil5  按键 引用地址:MSP432(Keil5)——2.按键及外部中断驱动

上一篇:MSP432(Keil5)——3.delay延时驱动
下一篇:MSP432(Keil5)——1.LED驱动

推荐阅读最新更新时间:2024-11-06 13:57

基于keil5新建STM32F10x寄存器版本工程
一、前言 前面文章分享了很多关于STM32F103系列知识点、物联网相关的小项目,工程都采用的是寄存器方式编写;很多小伙伴接触STM32开始都采用库函数编程,不清楚如何使用寄存器方式开发STM32;这篇文章就讲一下如何新建寄存器风格的STM32工程,并介绍需要用到哪些官方系统文件等。 比较具有代表性的几篇物联网教程: 1. 智慧农业项目(基于腾讯物联网服务器) 2. 遥控小车项目 3. 智能门锁项目(基于腾讯物联网服务器) 4. 物联网项目(基于阿里云物联网服务器) 5. 智能家居项目(基于中国移动OneNet物联网服务器) 二、环境介绍 开发环境: keil5.25 编程语言: C语言 操作系
[单片机]
基于<font color='red'>keil5</font>新建STM32F10x寄存器版本工程
S3C2440—12.按键中断
一. 总体 要驱动按键中断控制LED亮灭,程序要进行如下几部分操作: 在start.S中对CPSR寄存器中清除I位,使能IRQ,这是大前提 根据原理图找出按键对应的外部中断,对外部中断对应引脚做相应配置,使能相应的外部中断:EINTMASK 开启中断使能:INTMSK要设置 编写C中断处理函数,通过INTOFFSET、EINTPEND确定哪个中断触发,并做相应处理,还要清除中断标志位 编写start.S中的IRQ异常处理函数 二. CPSR设置 CPSR的IRQ中断使能位不使能,都行不通,我就找bug找了一天。。。 在代码重定位之后就对CPSR的I位清零,并且分配栈指针,如下: mrs r0, cpsr
[单片机]
S3C2440—12.<font color='red'>按键</font>中断
基于中颖8位MCU的触摸按键方案
前言 在需要用户界面的应用方案中,传统的机电开关正在被电容式触摸感应控制所替代。 Sino wealth已经开发了一套触摸感应软件,使得任意一款8位的中颖微控制器都可以作为一个电容式触摸按键控制器使用。通过对由一个电阻和触摸电极电容组成的RC充放电时间的控制,该触摸感应软件可以检测到人手的触摸。由于电极电容的改变,导致的RC充放电时间的改变,能够被检测出来,然后经过滤波等,最终通过专用的I/O端口,或者I2C/SPI接口发送给主机系统。该软件库所需的元器件BOM表,成本低廉,因为每个通道只需要两个电阻就可以实现触摸检测功能。 RC感应原理 RC采样原理就是通过测量触摸电极电容的微小变化,来感知人体对电容式触摸感应
[工业控制]
基于中颖8位MCU的触摸<font color='red'>按键</font>方案
MSP432处理器的命名规则
MSP432处理器系列的命名规则: 主要是两个大的系列, E系列(带以太网模块) 和 P系列(带高精度ADC模块) 还可子这么理解,P系列作为MSP430的升级版本(低功耗 + ARM内核); E系列作为 Tiva系列1294的替换版本。
[单片机]
<font color='red'>MSP432</font>处理器的命名规则
STM32的GPIO 输入—按键检测
硬件设计 按键机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳定接通或一下子断开,使用按键时会产生图1 中的带波纹信号,需要用软件消抖处理滤波,不方便输入检测。本实验板连接的按键带硬件消抖功能,见图2,它利用电容充放电的延时,消除了波纹,从而简化软件的处理,软件只需要直接检测引脚的电平即可。 图1 按键抖动说明图 图2 按键原理图 从按键的原理图可知,这些按键在没有被按下的时候,GPIO引脚的输入状态为低电平(按键所在的电路不通,引脚接地),当按键按下时,GPIO 引脚的输入状态为高电平(按键所在的电路导通,引脚接到电源)。只要我们检测引脚的输入电平,即可判断按键是否被按下。 若您使用的实验板
[单片机]
STM32的GPIO 输入—<font color='red'>按键</font>检测
1.5.6_按键中断程序示例_完善
中对概述和初始化做了初步的介绍,现在来完善整个按键中断程序。 当按键中断发生时,CPU会跳到0x18地址执行,和之前类似,我们通过word让CPU跳到do_irq执行。 这里的lr_irq保存的是下一条指令的地址+4,所以要先减4再存。 通过handle_irq_c这个中断处理函数来处理中断,这里我们使用了一个函数指针数组,将各个中断对应的处理函数使用数组来调用。相应的,也增加了注册函数,在初始化中断时进行注册。 大致处理的流程就是这样。 下面整理一下,首先是设置中断源,然后是初始化相关的中断配置,注册中断处理函数。大致就是这三步。 中断处理完之后,需要清楚中断源和中断标志位,注意从中断源开始从后往前清
[单片机]
1.5.6_<font color='red'>按键</font>中断程序示例_完善
STM32 按键扫描方式 使用ST3.0.0库
用到GPIO的操作模式 ======================================================================================== GPIO置1操作: void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) 例如: GPIO_SetBits(GPIOC, GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5); 这个函数是对一组端口的一些位置1,对PC3 PC4 PC53个引脚一起置1。GPIO_SetBits的作用是对一个端口16个引脚一起赋值。 例如:端口 GPIOC端
[单片机]
stm32按键 长按 短按 函数
在stm32工程中,长按和短按的代码书写, 调用的读取按键状态的底层函数。封装成的按键函数代码。下面是函数的头文件,和.c文件的代码。使用定时器来扫描按键。 #define KEY_ON 1 #define KEY_OFF 0 #define KEY_NULL 0 #define KEY_SHORT 1 #define KEY_LONG 10 #define SHORT_TIME 200 uint8_t Key_state(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin) { static uint8_t key_value = KEY_NULL; static uint16_t longtim
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved