MSP432E401Y学习笔记2-按键控制_查询

前言

今天通过按键控制LED灯的亮灭,按键控制通常有两种方式,今天我们使用查询的方式,按键USR_SW1每按下一次,LED闪烁一下。
其实按键与LED本质上都是一回事,都是考察我们对GPIO的配置理解。

一、原理图查看需要控制的IO

打开MSP432E401Y的原理图,可以看见这里有两个按键和两个LED。那我们就使用D2作为显示的灯,USR_SW1作为控制的按键。
可以知道,他们分别对应的是PN0与PJ0。也就是我们需要的GPION与GPIOJ进行相关配置。话不多说,开始写代码吧!
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、写代码

1.将点灯的工程拷贝一份

点灯的工程在笔记1有提供百度网盘链接。
我们先在Drive目录下新建四个文件,分别是KEY与LED,我们对于两者的配置都写到此处
![在这里插入图片描述](https://img-blog.csdnimg.cn/2a08667902524fbc91f4b6805e2ae51c.png

打开工程,可以看到以下界面,把新建的LED.c、KEY.c加入Drive目录
在这里插入图片描述

2.配置LED

在这里插入图片描述

void led_init(void)
{
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION);
    GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, GPIO_PIN_0);
	
}

LED的初始化和之前点灯里是一样的,只是现在我们写的规范些。
两个函数,一个是开启对应GPIO的的时钟
另一个是设置对应管脚为输出方向

## 3.配置KEY

在这里插入图片描述

void key_init(void)
{
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ);
	GPIOPinTypeGPIOInput(GPIO_PORTJ_BASE,GPIO_PIN_0);
	GPIOPadConfigSet(GPIO_PORTJ_BASE, GPIO_PIN_0,
                 GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);

}

首先看按键的初始化配置,很明显可以看出第一个函数还是打开对应的时钟
第二个函数字面也能看出,设置为输入方向
第三个重点讲讲,他就涉及到了一些更细致的配置了
我们按F12跳转到这个函数的定义,可以看到如下的说明文档`

//! Sets the pad configuration for the specified pin(s).
//!
//! \param ui32Port is the base address of the GPIO port.
//! \param ui8Pins is the bit-packed representation of the pin(s).
//! \param ui32Strength specifies the output drive strength.
//! \param ui32PinType specifies the pin type.

//! 设置指定引脚的焊盘配置。
//!
//! \param ui32Port是GPIO端口的基址。
//! \param ui8Pins是管脚的位压缩表示形式。
//! \param ui32Strength指定输出驱动强度。
//! \参数ui32PinType指定引脚类型。
//!

因为由原理图知道按键按下对应的是低电平,所以我们在配置按键IO的时候应该设置为上拉模式。上拉模式简单理解就是,保持端口电平为高电平,这样一旦检测到端口为低电平时,那必然是按键按下了。

uint8_t keyscan(void)
{
	return GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_0);
}

再看按键扫描函数,因为只需要检测一个按键状态,所以只需要要读取这个按键的端口值并返回即可。0代表按键按下,1代表按键未被按下。

2.mian文件

#include <stdint.h>
#include <stdbool.h>
#include "ti/devices/msp432e4/driverlib/driverlib.h"
#include "LED.h"
#include "KEY.h"

void delay()
{
	int i=0xffffff;
	while(i--);

}
int main(void)
{
	MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN |
								SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480),120000000);
	key_init();
	led_init();
    while(1)
    {
       if(!keyscan())
	   {
			GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0,GPIO_PIN_0);
			delay();
		    GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0,0);
	   }

    }
}

这里相信大家都很好理解了,就是写了个简单的延时函数,初始化了对应的led、key。唯一值得一提的就是配置系统时钟这个函数
MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN |
SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480),120000000);
这句话的意思就是配置系统时钟为120M

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: MSP432E401Y是一款高性能的低功耗微控制器,适用于各种嵌入式应用。学习MSP432E401Y可以使我们了解到如何开发和设计各种应用程序。 首先,我们可以学习MSP432E401Y的架构和硬件功能。该微控制器具有强大的处理能力和多种接口,包括串口、SPI、I2C和GPIO,可以与其他外部设备进行通信。此外,它还具有LCD控制器和触摸屏接口,方便我们与用户界面进行交互。 其次,我们可以学习如何使用MSP432E401Y进行编程。它支持多种编程语言,如C和汇编语言,并提供了丰富的软件开发工具和库,如代码编辑器、编译器和调试器。通过学习如何编写代码并调试程序,我们可以实现各种功能,如控制外部设备、处理数据和实现算法。 另外,学习MSP432E401Y还可以了解到如何进行电源管理和低功耗设计。它具有多种节能模式,可以根据应用需求进行灵活配置,从而延长电池寿命和降低功耗。此外,它还支持外部功耗管理接口,可以与其他电源管理器件进行通信,实现更高效的功耗管理。 最后,通过学习MSP432E401Y的应用案例和开发方案,我们可以掌握如何将它应用于实际项目中。无论是物联网、智能家居还是工业自动化,MSP432E401Y都可以为我们提供强大且可靠的解决方案。 总之,学习MSP432E401Y可以让我们掌握嵌入式系统设计和开发领域的知识和技能,为我们未来的职业发展和创新提供了基础。 ### 回答2: MSP432E401Y是一款现代微控制器,由德州仪器(Texas Instruments)公司设计和生产。它基于Cortex-M4内核,并具备低功耗特性。那么,如何进行MSP432E401Y学习呢? 首先,要深入了解MSP432E401Y的硬件特性和技术规格。可以查阅官方文档和技术手册,并关注官方社区和论坛,以便获取更多有关该微控制器的信息。 其次,熟悉MSP432E401Y的软件开发环境。Texas Instruments提供了MSP432软件开发工具包(SDK)和集成开发环境(IDE)。学习使用这些工具,编写、调试和测试MSP432E401Y的应用程序。可以通过阅读相关文档和教程,动手实践来提高自己的技能。 与此同时,可以尝试各种不同的实际应用场景。可以选择一些简单的项目,并逐步增加复杂度。通过实践深入了解如何使用MSP432E401Y来解决不同类型的问题。 此外,参与社区和论坛活动也是学习MSP432E401Y的好方式。与其他开发者分享经验和知识,提出问题并讨论解决方案。 最后,不断学习并保持热情。MSP432E401Y是一款功能强大且灵活的微控制器,但要掌握它需要持续的学习和实践。通过不断挑战自己,研究新的应用和技术,可以不断提升自己的技能水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值