最近在使用凌鸥LKS系列的MCU做一些基础开发,今天就分享一个简单的LED闪烁小项目。这是很多人学习MCU的入门任务,通过这个例子可以熟悉LKS MCU的GPIO操作和基本的延时函数。
一、项目简介
这个项目的目标是通过LKS MCU控制开发板上的LED实现简单的闪烁效果。我们将设置一个GPIO引脚作为输出,并通过循环切换该引脚的电平来控制LED的亮灭。
二、硬件环境
- 凌鸥LKS系列MCU开发板
- 开发板上的LED(或者外接LED)
- 开发工具:Keil或IAR
- 烧录工具:LKS Debugger
三、代码实现
1. GPIO初始化
首先需要初始化GPIO,设定相应引脚为输出模式。代码如下:
#include "lks_mcu.h" // 包含LKS MCU库文件
void GPIO_Init(void) {
GPIO_InitTypeDef GPIO_InitStruct = {0};
// 启用GPIO时钟
__HAL_RCC_GPIOA_CLK_ENABLE();
// 配置GPIO引脚为输出模式
GPIO_InitStruct.Pin = GPIO_PIN_5; // 假设LED连接在PA5引脚
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL; // 不使用上拉或下拉电阻
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 设置为低速输出
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
2. 延时函数
为了让LED闪烁,我们需要实现一个简单的延时函数,代码如下:
void Delay_ms(uint32_t ms) {
HAL_Delay(ms); // 使用HAL库提供的延时函数
}
3. 主程序
在主函数中,我们通过循环控制GPIO引脚的高低电平,实现LED的闪烁效果。
int main(void) {
// 初始化系统时钟
HAL_Init();
// 初始化GPIO
GPIO_Init();
while (1) {
// 点亮LED
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
Delay_ms(500); // 延时500ms
// 熄灭LED
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
Delay_ms(500); // 延时500ms
}
}
四、代码解析
- GPIO初始化:通过GPIO_Init()函数,将PA5引脚设置为输出模式。你可以根据实际情况更改引脚配置。
- 延时函数:HAL_Delay()提供了简便的延时功能,适合基础的时序控制。
- 主程序循环:通过HAL_GPIO_WritePin()控制引脚的电平,500ms高电平后变为低电平,即LED每秒闪烁一次。
五、总结
这个简单的LED闪烁例子帮助我熟悉了凌鸥LKS MCU的基本操作,包括GPIO配置和延时函数使用。希望对大家入门开发有所帮助。如果你对凌鸥的其他功能有兴趣,比如PWM、ADC等,欢迎讨论!
|