Funpack5-2 - 基于Microchip EV41C56A开发板制作的触摸控制开关
该项目使用了Microchip EV41C56A开发板,实现了通过触摸控制LED灯的设计,它的主要功能为:通过触摸Microchip EV41C56A开发板触摸按键,控制板载的LED灯的亮、灭动作。
标签
LED
Microchip
触摸控制
PIC32CM5164LS00048
happy
更新2026-06-15
16

一、硬件介绍:
这次参加活动的开发板是Microchip的EV41C56A。这是是一款专为评估 PIC32CM5164LS00048 微控制器而设计的硬件平台。该套件基于安全且超低功耗的 ARM® Cortex®-M23 内核,集成了丰富的安全功能和触摸控制能力。主控PIC32CM5164LS00048芯片, 内核:ARM Cortex-M23(支持 ARM TrustZone 硬件级安全隔离);存储:512 KB Flash,64 KB SRAM;工作电压:1.7V - 3.6V。板载有LED、按键、和一个触摸按键。

二、任务选择:

参加这次活动,我选择了任务1:

触摸输入与LED控制。使用 EV41C56A 开发板板载触摸按键功能,实现以下逻辑:单次触摸 → 点亮板载LED;再次触摸 → 关闭LED。功能要求:正确初始化触摸通道;LED 控制逻辑清晰,不出现误触发。

三、设计思路:

通过触摸控制LED灯的亮灭。开发板上有一个触摸按键, 设置一个状态机,当有触摸发生时,改变状态机的状态,然后通过状态机的状态控制LED灯的亮灭。

image.png

四、任务实现:

开发工具使用MPLAB X IDE v6.25。我是在笔记本上Ubuntu下安装的开发环境。预先在MCC环境中添加touch组件。新建项目。

image.png

image.png

image.png

image.png

新建好项目后,MPLAB X IDE 会自动打开MCC图形化编辑器,这个过程很漫长,需要耐心等待(很容易报错,报错了就再重来,保持网络的连接)。

image.png

image.png

成功打开MCC后,添加触摸库。通过阅读官方的文档,可以得知板载的LED灯是PA15脚,触摸按键是PA22脚。需要分别配置这两个管脚。

image.png

image.png

image.png

在MCC中配置好硬件后,就可以获取触摸按键的状态,以及驱动LED灯了。

image.png

这里需要留意一下,MCC自动生成的代码有点问题,需要调整一下触摸按键的初始化和RTC初始化的顺序,触摸初始化需要放到后边,否则触摸按键会无法工作。还需要注意,需要将安全项目(secure)做为主项目,并对安全项目中的main.c进行编辑。

image.png

#include <stddef.h>                     // Defines NULL
#include <stdbool.h>                    // Defines true
#include <stdlib.h>                     // Defines EXIT_FAILURE
#include "definitions.h"                // SYS function prototypes


/* typedef for non-secure callback functions */
typedef void (*funcptr_void) (void) __attribute__((cmse_nonsecure_call));


// *****************************************************************************
// *****************************************************************************
// Section: Main Entry Point
// *****************************************************************************
// *****************************************************************************


int main ( void )
{
    uint8_t key_status0 = 0;
    uint32_t msp_ns = *((uint32_t *)(TZ_START_NS));
    volatile funcptr_void NonSecure_ResetHandler;


    /* Initialize all modules */
    SYS_Initialize ( NULL );


    if (msp_ns != 0xFFFFFFFF)
    {
        /* Set non-secure main stack (MSP_NS) */
        __TZ_set_MSP_NS(msp_ns);


        /* Get non-secure reset handler */
        NonSecure_ResetHandler = (funcptr_void)(*((uint32_t *)((TZ_START_NS) + 4U)));


        /* Start non-secure state software application */
        NonSecure_ResetHandler();
    }
    LED_Set();
//    LED_Clear();
    while ( true )
    {
        // touch_process();                          // update touch state
        // key_status0 = get_sensor_state(0) & 0x80; // check touch status


        // if (0u != key_status0)
        // {
        //     LED_Set();   // LED on when pressed
        // }
        // else
        // {
        //     LED_Clear(); // LED off when released
        // }    
        // LED_Toggle();
        // long i=0;
        // while(i<500000){
        //     i++;
        // }
    }


    /* Execution should not come here during normal operation */
    return ( EXIT_FAILURE );
}



/*******************************************************************************
 End of File
*/

五、效果展示:

触摸一下,LED灯就亮了。

4ab972c27afed952eefdbbf5e4c44b16.jpg

再触摸一下,LED灯就灭了。

b6b98fd012250654f8698dc329254db8.jpg

六、心得体会:

很开心能参加这次活动,MPLAB X IDE 中的MCC图形化界面配置功能真的很强大,但是MCC的安装也是超级痛苦,在群里各位老师的帮助下,经过多次尝试,终于安装好了MPLAB X IDE。期望Microchip能拓展更多的开发工具。





附件下载
LED.zip
源码
团队介绍
单片机爱好者
团队成员
happy
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号