历史上的今天
返回首页

历史上的今天

今天是:2025年12月21日(星期日)

2022年12月21日 | NO.9 矩阵键盘和MSP432实例——控制MSP开发板板载LED

2022-12-21 来源:zhihu

  上一节我们介绍了矩阵键盘的具体原理,这次我们来将实际操作。

  首先,在MSP432中,对于按键的输入就是检测端口的高低电平来判断矩阵键盘的按键情况。


  首先我们打开CCS中的gpiointerrupt工程,打开syscfg文件,增加几个输入和输出GPIO口,如下:

  

  其中CONFIG_GPIO_ABCD是属于检测我们矩阵键盘中ABCD的键值。CONFIG_GPIO_GREENBLUERED是属于控制我们开发板上的三色LED灯。

  然后我们打开gpiointerrupt.c这个文件,开始我们核心函数的编写。

  我们实验的内容是:通过矩阵键盘检测不同的键值ABCD亮不同颜色的灯。

  像往常一样,我们要引入GPIO的头文件。

/* Driver Header files */

#include

  我们首先编写四个回调函数,分别对应于我们MSP432检测到按键端口电平变化,MSP432该执行什么函数,如亮红绿蓝灯,或者关闭所有灯。


void gpioButtonFxn0(uint_least8_t index)

{

    /* Clear the GPIO interrupt and toggle an LED */

    GPIO_toggle(CONFIG_GPIO_LED_0);

}


void gpioButtonFxnA(uint_least8_t index)

{

    /* Clear the GPIO interrupt and toggle an LED */

    GPIO_toggle(CONFIG_GPIO_RED);

}


void gpioButtonFxnB(uint_least8_t index)

{

    /* Clear the GPIO interrupt and toggle an LED */

    GPIO_toggle(CONFIG_GPIO_GREEN);

}

void gpioButtonFxnC(uint_least8_t index)

{

    /* Clear the GPIO interrupt and toggle an LED */

    GPIO_toggle(CONFIG_GPIO_BLUE);

}

void gpioButtonFxnD(uint_least8_t index)

{

    /* 关闭所有LED灯 */

    GPIO_write(CONFIG_GPIO_RED, CONFIG_GPIO_LED_OFF);

    GPIO_write(CONFIG_GPIO_GREEN, CONFIG_GPIO_LED_OFF);

    GPIO_write(CONFIG_GPIO_BLUE, CONFIG_GPIO_LED_OFF);

}

复制代码

  在具体使用GPIO函数前,我们要先初始化GPIO:


/* Call driver init functions */

GPIO_init();

  然后初始化具体端口:


/* Configure the LED and button pins */

GPIO_setConfig(CONFIG_GPIO_LED_0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);

GPIO_setConfig(CONFIG_GPIO_LED_0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);


GPIO_setConfig(CONFIG_GPIO_BUTTON_0, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);

GPIO_setConfig(CONFIG_GPIO_A, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);

GPIO_setConfig(CONFIG_GPIO_B, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);

GPIO_setConfig(CONFIG_GPIO_C, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);

GPIO_setConfig(CONFIG_GPIO_D, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);

/* Turn off user LED */

GPIO_write(CONFIG_GPIO_LED_0, CONFIG_GPIO_LED_OFF);

GPIO_write(CONFIG_GPIO_GREEN, CONFIG_GPIO_LED_OFF);

GPIO_write(CONFIG_GPIO_BLUE, CONFIG_GPIO_LED_OFF);


  然后将我们的四个作为输入的GPIO口与和我们的回调函数关联起来,当我们的GPIO口检测到下降沿的时候就开始执行回调函数。


/* install Button callback */

GPIO_setCallback(CONFIG_GPIO_BUTTON_0, gpioButtonFxn0);

GPIO_setCallback(CONFIG_GPIO_A, gpioButtonFxnA);

GPIO_setCallback(CONFIG_GPIO_B, gpioButtonFxnB);

GPIO_setCallback(CONFIG_GPIO_C, gpioButtonFxnC);

GPIO_setCallback(CONFIG_GPIO_D, gpioButtonFxnD);


  同时我们还要开启中断:


/* Enable interrupts */

GPIO_enableInt(CONFIG_GPIO_BUTTON_0);

GPIO_enableInt(CONFIG_GPIO_A);

GPIO_enableInt(CONFIG_GPIO_B);

GPIO_enableInt(CONFIG_GPIO_C);

GPIO_enableInt(CONFIG_GPIO_D);


  至此我们的程序就完全完成了,我们来看一下运行结果。


推荐阅读

史海拾趣

FASTRAX公司的发展小趣事

2012年,瑞士公司u-blox宣布以1300万欧元收购FASTRAX 100%的股权。这一并购事件引起了业界的广泛关注。u-blox看中了FASTRAX在GPS接收模块领域的领先地位和技术实力,希望通过并购加强其在定位市场的竞争优势。并购完成后,FASTRAX成为u-blox集团的重要一员,继续为全球客户提供优质的GPS产品和服务。

Datalinear公司的发展小趣事

Datalinear公司成立于20世纪初,由一群热衷于数据处理的工程师创立。初创时期,公司面临着资金短缺、技术瓶颈和市场竞争激烈的挑战。然而,创始人凭借着对技术的执着和对市场的敏锐洞察力,成功开发出一款高效的数据处理设备,满足了当时市场对数据处理速度的需求。这款产品迅速在市场上打开销路,为Datalinear公司赢得了第一桶金。

Cogent_Computer_Systems公司的发展小趣事

Cogent_Computer_Systems公司在成立之初,便以其独特的技术创新在电子行业中崭露头角。公司研发团队成功开发出一款高性能的计算机芯片,该芯片在运算速度和能效比方面均达到了行业领先水平。这一技术突破迅速吸引了众多客户的关注,Cogent_Computer_Systems公司也因此获得了大量的订单。随着市场需求的不断增长,公司逐渐扩大生产规模,优化供应链管理,实现了业务的快速扩张。

Daniels Manufacturing公司的发展小趣事

进入21世纪后,随着信息技术的快速发展,数字化转型成为制造业的重要趋势。DMC紧跟时代步伐,积极推进数字化转型和智能制造。通过引入先进的生产管理系统、自动化生产线和智能检测设备,DMC实现了生产过程的数字化、网络化和智能化。这不仅提高了生产效率和产品质量,还降低了生产成本和能源消耗。此外,DMC还利用大数据和人工智能技术,对市场需求进行精准预测和分析,为产品研发和市场营销提供有力支持。

Epistar Corp公司的发展小趣事

Epistar的成立之初,正是LED(发光二极管)技术逐渐崭露头角的时代。公司创始人看到了LED技术的巨大潜力,决定投身这一领域。起初,Epistar面临技术壁垒高、市场接受度低等问题。然而,公司团队通过不懈的研发和技术积累,逐渐攻克了技术难关,并成功开发出多款性能优异的LED产品。这些产品在市场上取得了良好的反响,为Epistar的后续发展奠定了坚实的基础。

EMI Filter Company公司的发展小趣事

TDK公司,作为全球知名的电子元器件制造商,早在上世纪80年代就开始涉足EMI滤波器领域。当时,随着电子设备的日益普及,电磁干扰问题逐渐凸显。TDK看准市场需求,投入大量资源进行EMI滤波器的研发。初期,他们面临着技术难题和市场接受度的挑战。然而,通过不断的技术创新和产品迭代,TDK的EMI滤波器逐渐在市场上站稳了脚跟。他们的产品在计算机、通信设备等领域得到了广泛应用,有效解决了电磁干扰问题,提升了设备的稳定性和可靠性。

问答坊 | AI 解惑

刚结完贴再请教一个关于KEIL的错误

错误提示:identifier expected,该错误是指向我的.H的头文件的,请问这个是什么意思?该怎么找错在哪里了?在线等,敬请高手指点!先谢谢了!…

查看全部问答>

wince如何接入局域网(急)

我用C#编写的。。wince要接入局域网,代码怎么写啊。。还有,如果接入局域网后,怎么样能访问指定服务器的共享文件啊。。谢谢 …

查看全部问答>

试用报告3-关于人脸识别的一些总结

经过这些天的查找资料,基本上人脸识别的算法都搞清了。。。下面简述一下各种算法: (1) FPGA硬件选型采用Xilinx公司的Vertex芯片。该单元由视频采集模块、异步FIFO模块、视频解码模块、I2C 配置接口模块、图像帧存控制模块、图像低级处理模块、通 ...…

查看全部问答>

关于TI无线芯片的工作电压

CC1101、CC2530都写的最大电压3.9V,工作电压为1.8(2.0)~3.6V。 那么如果电压时3.7V,是否能稳定工作?芯片有没有损坏的危险?还是芯片不会坏,单片机有故障等危险? 因为设计需要使用3.7V电池。实际回路中约3.67V。超过3.6V,故有此提问。请大家 ...…

查看全部问答>

关于XDATA类型变量的存储

各位好,变量定义如下: char xdata ziku[] = {...} _at_ 0x0020; unsigned xdata int shuzu[] = {...}; unsigned xdata long ack; 求教:下面那两个未指定固定位置的xdata类型变量在编译的时候是否会和上面被指定固定位置的变量重叠呢?谢谢…

查看全部问答>

EE Logic 基本参数及核心芯片

分析仪基本参数 1、采样率100MHz 2、采样通道16 3、存储容量(待定) 4、存储深度(待定) 5、测量范围0-5V 6、支持协议(有待开发) 核心芯片选择 1、USB接口芯片(CY7C68013A-100AXC)16位FIFO接口。 2、FPGA (EP2C5Q208C8N orEP2C8Q20 ...…

查看全部问答>

职业发展遇到“瓶颈”,走还是留?

  随着时代的发展和竞争环境的不断变化,在职场上打拼多年的“老兵们”渐渐开始有所顾虑:“这份工作我要一直做下去吗?是不是该换个环境?”在你的潜意识里,你是不是也不止一次地问过自己,也许是出于生活的压力,也许是出于个人发展的需要,多 ...…

查看全部问答>

关于两片msp430g2553怎么使用同一个时钟的问题

本帖最后由 paulhyde 于 2014-9-15 03:09 编辑 如题,最近在做一个用示波器显示8个递减圆的题目,利用示波器的X-Y去显示,编程都编号的,但实际调试的时候发现两个单片机时钟不能同步,请问有什么办法可以使两片单片机使用同一个时钟啊? &nb ...…

查看全部问答>

ST F7大赛~智能小区控制系统~μCOSIII移植一

本帖最后由 abofly 于 2015-11-2 18:48 编辑 由于本人目前只接触过一个嵌入式操作系统μCos,因此本次设计采用了该系统。 新旗舰机的诞生必定导致老款的降价,人们似乎总是在追求最新……,呵呵我也不例外。 操作系统当然想用最新的,直接官 ...…

查看全部问答>