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

  • 前言
  • 一、原理图查看需要控制的IO
  • 二、写代码
    • 1.将点灯的工程拷贝一份
    • 2.配置LED
    • 2.mian文件

前言

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

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

打开MSP432E401Y的原理图,可以看见这里有两个按键和两个LED。那我们就使用D2作为显示的灯,USR_SW1作为控制的按键。
可以知道,他们分别对应的是PN0与PJ0。也就是我们需要的GPION与GPIOJ进行相关配置。话不多说,开始写代码吧!

二、写代码

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

点灯的工程在笔记1有提供百度网盘链接。
我们先在Drive目录下新建四个文件,分别是KEY与LED,我们对于两者的配置都写到此处

打开工程,可以看到以下界面,把新建的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

MSP432E401Y学习笔记2-按键控制_查询相关推荐

  1. verilog学习笔记- 10)按键控制 LED 灯实验

    目录 简介: 实验任务: 硬件设计: 程序设计: 下载验证 : 总结与反思: 简介: 按键开关是一种电子开关,属于电子元器件类.我们的开发板上有两种按键开关:第一种是本实验所使用的轻触式按键开关,使用 ...

  2. 51单片机学习笔记之按键控制一盏小灯

    我们今天学习一下单片机的案件,其实和小灯一样,大家不用紧张,简单的很. 首先我们新建个工程,如果有同学忘记了,可以看我之前的博客.下面是链接. https://blog.csdn.net/qq_408 ...

  3. 嵌入式学习笔记——寄存器实现控制LED小灯

    文章目录 前言 GPIO通用输出模式 初始化LED小灯的GPIO 原理图 初始化代码 初始化的效果 功能函数封装 直接分开宏定义两个 使用条件运算符 封装函数实现简单的功能 KEIL MDK一些技巧 ...

  4. JavaWeb-综合案例(用户信息)-学习笔记06【复杂条件查询功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...

  5. MySQL学习笔记06【多表查询、子查询、多表查询练习】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  6. MySQL学习笔记04【数据库的查询操作、今日内容、表的约束】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  7. C语言学习笔记第五天_项目训练

    C语言学习笔记第五天_项目训练 添加自定义的一个函数库文件 <getch.h> 步骤: 1.在windows中把getch.h放入共享文件夹(文件我放在文末,自取) 2.在Ubuntu终端 ...

  8. JavaWeb黑马旅游网-学习笔记07【旅游线路查询】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  9. 【OpenGL学习笔记⑧】——键盘控制正方体+光源【冯氏光照模型 光照原理 环境光照+漫反射光照+镜面光照】

    ✅ 重点参考了 LearnOpenGL CN 的内容,但大部分知识内容,小编已作改写,以方便读者理解. 文章目录 零. 成果预览图 一. 光照原理与投光物的配置 1.1 光照原理 1.2 投光物 二. ...

最新文章

  1. 从零开始教你训练神经网络(附公式学习资源)
  2. ig服务器维护,IG夺冠遭无视后,LOL官方公开道歉:对不起,都是服务器的问题!...
  3. 填坑-十万个为什么?(24)
  4. 吴恩达《Machine Learning》精炼笔记 9:PCA 及其 Python 实现
  5. 思维导图分析http之http协议版本
  6. Linux安装的分区问题
  7. php员工信息表_一键:快速采集汇总个税专项附加扣除信息
  8. java设置请求头_前端需要知道的 HTTP 安全头配置
  9. Spring实战——FileSystemResource
  10. 不良资产剥离或许将成为历史名词
  11. ubuntu 开机显示recovering journal死机的解决方法
  12. 华为交换机常用查看命令
  13. python爬虫实例手机_10个python爬虫入门实例
  14. Thinking -- CSS从根解决选择前一个兄弟元素
  15. python老师培训课
  16. MOOC中国接受《环球时报》英文版专访:MOOC证书对求职有用吗?
  17. 微信小程序如何实现文本换行
  18. PowerBI - 10.功能丰富的报表展示工具
  19. LabVIEW应用程序在Windows版本之间的字体变化
  20. 浅析RGB 及RGB转换为ARGB

热门文章

  1. 面试了300+QA候选人才总结出这份经验!
  2. 【Unity3D】动态路径特效
  3. 过孔焊盘~尺寸、间隙、通流能力
  4. 请问FXAA、FSAA与MSAA有什么区别?效果和性能上哪个好?
  5. 医院检验信息系统源码 医院检验LIS系统源码 LIS源码
  6. 服务器上运行Selenium
  7. ubuntu注销用户
  8. 冻结窗口怎么冻结两行_冻结还是模糊? 捕捉摄影运动的两种方法
  9. __iLINE__和__FILE__等内置宏的含义
  10. MAC PHP安装swoole扩展