一、硬件介绍
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
|
|