灵动微电子 EVB-L0130 (MM32L0136C7P) 开发板使用指南
分享作者:A0dy
作者昵称:A0dy?
评测品牌:灵动微电子
评测型号:MM32EVBL0136
发布时间:2024-12-09 10:55:05
0
前言
如何通过按键点亮LED?
开源口碑分享内容

一、硬件介绍

EVB-L0130 属于 MM32 EVBoard 系列开发板,该开发板为基于 Cortex-M0+的开发板,支持 MM32L0130 MCU。

1、主要特点

EVB-L0130 开发板具有如下特点: ⚫ 支持高达 4KV EFT 抗干扰能力 ⚫ 支持 SWD 调试接口 ⚫ 目标 MCU USB 接口供电 ⚫ 5-按键 ⚫ 4-LED ⚫ 2-UART 连接器 ⚫ 1-USB 连接器 ⚫ 1-8Mbit 的 SPI Flash 存储器 ⚫ 1-2048bit 的 I2C 存储器 ⚫ 4-引脚功能选择开关 ⚫ 1-3.5mm 耳机插座,用于 I2S L/R 音频输出 ⚫ 1-无源扬声器 ⚫ 1-3 模拟输入电位器 ⚫ 1-板载段码 LCD 屏 ⚫ 全贴片工艺设计

2、部分硬件介绍

开发板K1K2K3K4nRST(K5)
EVB-L0130PB2PD5PA8PB5PA0

开发板LD1LD2LD3LD4
EVB-L0130PB9PB10PB11PC0

引脚功能EVB-L0130
Speaker(喇叭)PA6


UART 输出连接关系表

引脚功能EVB-L0130
GNDGND
RXD1PC1
TXD1PC0
RXD2PA3
TXD2PA2


注意事项: 由于板载 UART2 接口中的 TXD2、 RXD2 与 CN7 调试接口(JTAG调试接口)中 UART 的 TXD、 RXD 的引脚共用,均为 PA2 和 PA3,在使用过程中,板载 UART2 接口与 CN7 调试接口中的 UART 请勿同时使用

二、相关资料(相关工具下载等)

1、开发板相关文档、例程等

点此下载

2、Pack包安装

参考此安装方法(需安装" MM32L0xx"Pack包),与 FTHR-G0001 开发类似。

三、代码程序编写(按键点亮板载LED)

1、打开工程代码例程

打开下载的”MM32L0130库函数与例程”文件,以GPIO_LED_Toggle工程为基础,进行相关后续代码的编写。

(…\LibSamples_MM32L0130_V0.10.4\Samples\LibSamples\GPIO\GPIO_LED_Toggle)

示例代码效果为: 串口2输出相关信息 并且 LED1~LED4 进行闪烁。


2、程序代码编写

1.代码主要功能

当按下K1时,LED1点亮,再次按下时,熄灭,LED2~LED4(K2~K4)同理。

同时在串口2中输出(当前按键的状态)

2.按键代码编写

1°初始化按键功能

//在platform.c中编写 按键初始化函数 void PLATFORM_InitKEY(void);

void PLATFORM_InitKEY(void){

    GPIO_InitTypeDef GPIO_InitStruct;

    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_2; // K1
    GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_IPD;

    GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_5; //K4
    GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_IPU;
    GPIO_Init(GPIOB, &GPIO_InitStruct);
    
    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_5;    // K2
    GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_IPU;
    GPIO_Init(GPIOD, &GPIO_InitStruct);

    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_8;   // K3 
    GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_IPU;
    GPIO_Init(GPIOA, &GPIO_InitStruct);

}


// 注:将 void PLATFORM_InitLED(void) 中 LED初始化(默认点亮) 改为 熄灭状态

void PLATFORM_InitLED(void){
    .....
    
    .....    
        
    PLATFORM_LED_Enable(LED1, DISABLE);
    PLATFORM_LED_Enable(LED2, DISABLE);
    PLATFORM_LED_Enable(LED3, DISABLE);
    PLATFORM_LED_Enable(LED4, DISABLE);
}

2°按键控制LED功能函数

//在platform.c中编写 按键控制LED功能函数
// State->按键状态,Count->按键延时计数,InputLevel->当前按键的电平
// ActiveLevel->按键按下时的电平,Name->当前按键的名称
//void KEY_Handler(uint8_t *State, uint8_t *Count, uint8_t InputLevel, uint8_t ActiveLevel, char *Name)

void KEY_Handler(uint8_t *State, uint8_t *Count, uint8_t InputLevel, uint8_t ActiveLevel, char *Name)
{
    if (0 == *State)    //按键当前状态 (按键未按下状态 (State = 0))
    {
        if (InputLevel == ActiveLevel)  //按键按下
        {
            *Count += 1;
            if (*Count >= 5)    //消抖
            {
                *State = 1;
                *Count = 0;
                printf("\r\n%s Pressed", Name);
                PLATFORM_LED_Toggle(*(Name + 1 ) - '1'); // 当前按键所对应的LED (翻转LED状态)     
            }
        }        
    }
    else    //(按键按下状态 (State = 1))
    {
        if (InputLevel != ActiveLevel)  //按键已松开
        {
            *Count += 1;
            if (*Count >= 5)    //消抖
            {
                *State = 0;
                *Count = 0;
                printf("\r\n%s Release", Name); //按键松开
            }
        }
        else    //长按状态
        {
            *Count = 0;
        }
    }
}

3°将按键与对应的LED进行绑定

//在platform.c中 编写 void KEY_LED(void); 将按键与对应的LED进行绑定

void KEY_LED(void)
{
    static uint8_t KeyState[4] =
    {
        0, 0, 0, 0
    };
    static uint8_t KeyCount[4] =
    {
        0, 0, 0, 0
    };

    while (1)
    {
        KEY_Handler(&KeyState[0], &KeyCount[0], 
                    GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_2), Bit_SET,   "K1");
        KEY_Handler(&KeyState[1], &KeyCount[1], 
                    GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8), Bit_RESET, "K2");
        KEY_Handler(&KeyState[2], &KeyCount[2], 
                    GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5), Bit_RESET, "K3");
        KEY_Handler(&KeyState[3], &KeyCount[3], 
                    GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_5), Bit_RESET, "K4");
    }
}

3.主函数

//main.c
int main(void)
{
    PLATFORM_Init();

    while (1)
    {
        
    }
}

//platform.c
void PLATFORM_Init(void)
{
    PLATFORM_InitDelay();

    PLATFORM_InitConsole(115200);

    PLATFORM_InitLED();
    
    PLATFORM_InitKEY(); // 初始化按键

    PLATFORM_PrintInfo();
    
    KEY_LED();	// 按键点亮LED
}

四、程序烧录(连接方式)

1、SWD接口连接

SWDIO -> PA13

SWCLK -> PA14


2、串口2连接

RX -> UART2(TXD2) 或 PA2


五、效果演示




全部评论
暂无评论
0/144