[MSP-EXP432P401R] 基于MSP432P401RLaunchPad的基本按键操作之独立按键

  [复制链接]

1

主题

6

帖子

435

积分

二氧化硅

Rank: 2

积分
435
查看: 3691回复: 4 发表于 2021-4-10 18:32:18   只看该作者
基于MSP432P401RLaunchPad的基本按键操作之独立按键


第1题:基本的按键操作(如独立按键/4x4矩阵按键等),能完成基本的按键操作。
1.完整硬件的照片
2.引脚连接图等电路图
3.工程源代码(建议直接上传整个工程)
4.如果键盘使用了驱动芯片,则要上传驱动芯片的手册等资料

**********************************************************************************************************
本文按照题目要求的顺序进行帖子的编写。
1.因为是使用了MSP432P401RLaunchPad板子,板子自身就带有对应的按键以及LED输出,所以我就把对应的硬件照片、原理图进行上传讲解。
硬件照片如图1.黄色画线的位置为板子自带的S1按键,蓝色画线位置为板子自带的LED(红色)。
N99AG52~7$`PT4RDH][C_$L.png 图1


(5K@AZ%AZOZL1G$NGW5PWG3.png 图2

2.如图2所示,我们可以看出来,P1.1_BUTTON1是单片机P1.1管脚的网络标签,它的另一端与S1(无锁常开开关——开关分常开、常闭、无锁、自锁共4种类型)相连,S1的另一端则和GND相连接,也就是这需要单片机配置低电平触发。这里的P1.4_BUTTON1是单片机P1.4管脚的网络标签,也是个按键开关。本程序只用到了S1按键,未用到S2按键。 网上51单片机的学习中,经常用培训视频把按键扫描写在主程序里,占用了运行时间,很低效,所以我这边采取把按键写在外部中断中,当遇到外部中断才进行按键所代表的功能执行,不影响程序的整体运行。减小运行时间上的损失。


3.程序讲解,我采用的的编译器是Ti自家的CCS,所以上传的代码和工程请使用CCS打开,
使用CCS有个好处就是可以直接在CCS里面用他的Resource Explorer导出对应的例程程序。像独立按键就可以直接在里面导出来。打开Resource Explorer->打开Software->打开SimpleLink MSP432P4 SDK->打开Examples->打开Development Tools->打开MSP432P401RLauncherPad-Red2.x(Red)->打开DriverLib(这里面有很多常用的外设驱动,有些时候可以直接拿来用,我这次就是拿GPIO外部中断来使用的)->打开gpio_input_interrupt->打开No RTOs->打开CCS Compiler,鼠标移到gpio_input_interrupt的右边,会出现三个点,点击三个点,点击import to CCS IDE进行例程的下载。
$O)S((1C@IQ]9FHOQ}R~D3F.png
之后就可以在CCS主页中看见下载好的例程了 蓝色为这个工程名,红色的是主函数。
下面为下载来的主函数部分,需要一点C语言基础。

  1. /* DriverLib Includes */
  2. #include <ti/devices/msp432p4xx/driverlib/driverlib.h>//这个头文件都是之前下载好的,所以不需要担心自己电脑有没有,以及配置的麻烦


  3. /* Standard Includes */
  4. #include <stdint.h>
  5. #include <stdbool.h>

  6. int main(void)//主函数部分
  7. {
  8.     /* Halting the Watchdog */
  9.     MAP_WDT_A_holdTimer();//关闭看门狗,一般用不到看门狗,除非程序容易跑飞等特殊情况下需要打开。

  10.     /* Configuring P1.0 as output and P1.1 (switch) as input */
  11.     MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);//使用库函数进行对单片机P1.0管脚进行配置为输出引脚

  12.     /* Configuring P1.1 as an input and enabling interrupts */
  13.     MAP_GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN1);//配置P1.1为带上拉电阻输入
  14.     MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, GPIO_PIN1);//清除P1.1上的中断标志,为初始化操作。
  15.     MAP_GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN1);////启用P1.1的端口中断模式
  16.     MAP_Interrupt_enableInterrupt(INT_PORT1);//端口1中断使能。

  17.     /* Enabling SRAM Bank Retention */
  18.     MAP_SysCtl_enableSRAMBankRetention(SYSCTL_SRAM_BANK1);
  19.    
  20.     /* Enabling MASTER interrupts */
  21.     MAP_Interrupt_enableMaster();   //开启中断响应

  22.     /* Going to LPM3 */
  23.     while (1)//while死循环
  24.     {
  25.         MAP_PCM_gotoLPM3();//几种低功耗模式,这里面可以加入其他的程序执行
  26.     }
  27. }

  28. /* GPIO ISR */
  29. void PORT1_IRQHandler(void)//管脚1的中断处理
  30. {
  31.     uint32_t status;//定义一个32位的变量

  32.     status = MAP_GPIO_getEnabledInterruptStatus(GPIO_PORT_P1);//判断端口P1是否有中断产生
  33.     MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, status);//清除P1.1上的中断标志

  34.     /* Toggling the output on the LED */
  35.     if(status & GPIO_PIN1)//如果产生了中断则执行下面的管脚电压翻转指令
  36.     {
  37.         MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);
  38.     }

  39. }
复制代码
欢迎各位大佬加入Q群:8734345**进行学习交流讨论。群里有丰富的学习资源供大伙使用

gpio_input_interrupt_MSP_EXP432P401R_nortos_ccs.zip

110.16 KB, 下载次数: 11, 下载积分: 积分 -1

本文工程

0

主题

2

帖子

134

积分

二氧化硅

Rank: 2

积分
134
发表于 2021-4-12 09:39:45   只看该作者
前排拜见dalao
63a4ef6c583b17bb(1).jpg

73

主题

469

帖子

1005

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1005
发表于 2021-4-12 17:25:00   只看该作者

额,你们可以的

73

主题

469

帖子

1005

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1005
发表于 2021-4-12 17:25:28   只看该作者
多谢支持~ 过几天再处理。前几个发帖的基本没问题。

12

主题

49

帖子

1281

积分

单晶硅锭

Rank: 3Rank: 3

积分
1281
发表于 2021-4-13 09:31:23   只看该作者
shengxiang 发表于 2021-4-12 17:25
多谢支持~ 过几天再处理。前几个发帖的基本没问题。

谢谢楼主的格式
https://bbs.nuedc-training.com.cn/thread-1421-1-1.html

打赏

参与人数 8赫兹币 +40 收起 理由
csj0710 + 5
zombiejbt + 5
JTao + 5
blueblues + 5
RHAnthony + 5
hw123456 + 5
bly + 5
shenweizuibang + 5

查看全部打赏

快速回复 返回顶部 返回列表