一、硬件介绍 
EVB-L0130 属于 MM32 EVBoard 系列开发板,该开发板为基于 Cortex-M0+的开发板,支持 MM32L0130MCU 
 
 
 
 
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、部分硬件介绍 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UART 输出连接关系表 
 
 
 
 
注意事项: 
由于板载 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 
 
五、效果演示 
 
 
 
 
按键点亮LED 
———————————————— 
 
                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 
 
原文链接:https://blog.csdn.net/weixin_44929802/article/details/144317657 
 
 |