[MSP-EXP432P401R] MSP432P401R独立按键

  [复制链接]

12

主题

49

帖子

1284

积分

单晶硅锭

Rank: 3Rank: 3

积分
1284
楼主
查看: 4464回复: 8 发表于 2021-4-12 21:34:51   只看该作者
本帖最后由 黄福均 于 2021-4-12 21:38 编辑

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

MSP432P401R
用独立按键S2——P1.4作为输入,用LED2——P2.0作为显示输出
功能描述:初始状态,LED2以高频闪烁红光,按下板载独立按键S2,LED2闪烁频率变慢为原来的1/10,仍为红光,
再按下S2,LED2闪烁频率变回高频。如此反复,按下按键S2,LED2红光闪烁频率切换。


2. 原理图

LED2可以与LED1替换,LED2的其他管脚控制发出不同颜色的光。


独立按键S2可以S1替换,按键按下,该管脚为高电平。

3.工程文件打开说明
单片机型号:MSP-EXP432P401R Launchpad
开发环境:   Code Composer Studio 10.1.1

首先,一定不要把工程文件放在有中文的路径!
必须全英文路径!全英文路径!英文路径!
否则如下:


工程文件在CCS里面导入,操作为:File - Open Projects from File System...  - Directory... - 找到工程文件 - Finish


#include <ti/devices/msp432p4xx/driverlib/driverlib.h>
工程用到了msp432p4xx的库,驱动库需添加此路径。正常情况是配置好了的。

插上开发板,编译gpio_input_interrupt_work20210111.c文件,下载程序。
按一下复位键,开发板开始工作。不按复位不工作。

4. 工程源代码

/*******************************************************************************
* MSP432P401R 独立按键
* 功能描述:初始状态,LED2以高频闪烁红光,
* 按下板载独立按键S2,LED2闪烁频率变慢为原来的1/10,仍为红光,
* 再按下S2,LED2闪烁频率变回高频。
* 如此反复,按下按键S2,LED2红光闪烁频率切换。
*
*                MSP432P401R
*             ------------------
*         /|\|                  |
*          | |                  |
*          --|RST         P2.0  |---> P2.0 LED2红光
*            |                  |
*            |            P1.4  |<--  按键S2
*            |                  |
*            |                  |
*
******************************************************************************/
/* 添加驱动库头文件 */
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>

/* 基本头文件 */
#include <stdint.h>
#include <stdbool.h>

/* LED2模式选择参数,choose为偶数LED2高频闪烁,为奇数LED2低频闪烁,可根据需要设置更多模式 */
uint32_t choose=0;

int main(void)
{
    volatile uint32_t ii; //设置变量ii, 作为延时循环次数,ii越大,闪烁频率越慢

    /* 关闭看门狗 */
    MAP_WDT_A_holdTimer();

    /* 配置P2.0为输出*/
    MAP_GPIO_setAsOutputPin(GPIO_PORT_P2, GPIO_PIN0);

    /* 配置P1.4为输入并使能中断  */
    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);

    /* Enabling SRAM Bank Retention */
    MAP_SysCtl_enableSRAMBankRetention(SYSCTL_SRAM_BANK1);

    /* 使能全局中断 */
    MAP_Interrupt_enableMaster();   

    /* LED2进入闪烁循环 */
    while (1)
    {
        /* 延时 */
        if((choose%2) == 0)     //高频模式
        {
             for(ii=0;ii<10000;ii++)
             {
             }
        }
        else                    //低频模式
        {
             for(ii=0;ii<100000;ii++)
             {
             }
        };

         /* 取反P2.0的输出 */
        MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P2, GPIO_PIN0);
    }
}

/* GPIO中断服务程序  */
/* 两个独立按键S1--P1.1 、 S2--P1.4, 按键按下为高电平,
* GPIO_PORT_P1和GPIO_PIN1都为高,则S1按下,本实验未用到,
* GPIO_PORT_P1和GPIO_PIN4都为高,则S2按下,
* 否则没按键按下  */
void PORT1_IRQHandler(void)
{
    uint32_t status;    //设置一个状态标志量,寄存中断情况

    status = MAP_GPIO_getEnabledInterruptStatus(GPIO_PORT_P1);   //读取按键状态,按下为高
    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, status);           //清零所有中断标志位

    /* S2按下,choose+1,模式改变 */
    if(status & GPIO_PIN4)
    {
        choose++;
    }

    /* 按键按下次数太多,choose清零,重新计数,choose可计数按下次数 */
    if(choose>500000)
    {
        choose=0;
    }
}

gpio_input_interrupt_work20210111.zip (116.74 KB, 下载次数: 11)
欢迎大家提问,大家一起讨论学习。感谢亲们的收藏、打赏和投票!!!


打赏

参与人数 14赫兹币 +62 收起 理由
lithiumice + 5
hu158 + 5
fu188 + 5
mei187 + 5
辜浩珉 + 5 赞一个!
zombiejbt + 5
blueblues + 5
csj0710 + 5 淡定
hw123456 + 5 赞一个!
JTao + 5 很给力!
RHAnthony + 5
PIDqqq + 5 很给力! ooo
shenweizuibang + 1 很给力!
bly + 1 赞一个!

查看全部打赏

4

主题

13

帖子

685

积分

单晶硅锭

Rank: 3Rank: 3

积分
685
沙发
发表于 2021-4-13 09:25:47   只看该作者
黄老板带飞!

打赏

参与人数 9赫兹币 +45 收起 理由
RHAnthony + 5
hw123456 + 5
csj0710 + 5
zombiejbt + 5
lithiumice + 5
mei187 + 5
fu188 + 5
hu158 + 5
黄福均 + 5

查看全部打赏

4

主题

16

帖子

868

积分

单晶硅锭

Rank: 3Rank: 3

积分
868
板凳
发表于 2021-4-13 09:29:51   只看该作者
支持一下!!1

打赏

参与人数 10赫兹币 +50 收起 理由
bly + 5
mei187 + 5
hu158 + 5
fu188 + 5
zombiejbt + 5
csj0710 + 5
RHAnthony + 5
blueblues + 5
JTao + 5
hw123456 + 5

查看全部打赏

2

主题

5

帖子

615

积分

单晶硅锭

Rank: 3Rank: 3

积分
615
4#
发表于 2021-4-13 09:42:17   只看该作者
牛批,学习了,这个实在是太细致了,帮我解决的不少问题

0

主题

2

帖子

78

积分

一粒轻沙

Rank: 1

积分
78
5#
发表于 2021-4-13 09:47:09   只看该作者
我来试一试

0

主题

1

帖子

3

积分

一粒轻沙

Rank: 1

积分
3
6#
发表于 2021-4-13 09:51:20   只看该作者
均哥,yyds!

73

主题

469

帖子

1005

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1005
7#
发表于 2021-4-13 09:57:09   只看该作者
写得很认真,赞一个~

12

主题

49

帖子

1284

积分

单晶硅锭

Rank: 3Rank: 3

积分
1284
8#
发表于 2021-4-13 10:00:57   只看该作者
shengxiang 发表于 2021-4-13 09:57
写得很认真,赞一个~

谢谢,还在写矩阵按键的程序中

打赏

参与人数 9赫兹币 +45 收起 理由
mei187 + 5
blueblues + 5
zombiejbt + 5
csj0710 + 5
hw123456 + 5
JTao + 5
RHAnthony + 5
shenweizuibang + 5
bly + 5 赞一个!

查看全部打赏

0

主题

3

帖子

215

积分

二氧化硅

Rank: 2

积分
215
9#
发表于 2021-4-13 15:09:24   只看该作者
又学习到了新知识
快速回复 返回顶部 返回列表