# easy_led **Repository Path**: main_i/easy_led ## Basic Information - **Project Name**: easy_led - **Description**: 单片机常用led驱动 - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 3 - **Created**: 2021-12-11 - **Last Updated**: 2024-11-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # easy_led #### 介绍 单片机常用led驱动,可以十分方便的控制led闪烁频率和闪烁持续时间 #### 移植教程 1. 将 easy_led.c easy_led.h easy_led_port.c 添加到工程中 2. 打开 easy_led_port.c 文件,自行实现里面的函数, 里面的函数主要是为了实现临界区保护 3. 周期性的调用 void eled_ticks(void); 函数 #### 使用说明 1. led IO硬件初始化 2. 初始化LED驱动并设置led默认的闪烁状态,注意闪烁状态的单位为ticks 也就是 void eled_ticks(void); 函数的执行周期 ```C void eled_init(eLED_T * uLed, ledControl_t ledControl, uint16_t ledOnDefaultTicks, uint16_t ledOffDefaultTicks); ``` 3. 根据需要设置LED闪烁周期和持续时间,当持续时间结束后,LED会自动恢复到初始化时设置的默认闪烁状态 ```c void eled_set(eLED_T * uLed, uint16_t ledOnTicks, uint16_t ledOffTicks, uint16_t keepTicks); ``` #### 使用例子 ```c eLED_T g_eled1, g_eled2, g_eled3, g_eled4; /* LED IO控制函数 */ void eled1_control(uint8_t level) { //HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, (GPIO_PinState)level); } void eled2_control(uint8_t level) { //HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, (GPIO_PinState)level); } void eled3_control(uint8_t level) { //HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, (GPIO_PinState)level); } void eled4_control(uint8_t level) { //HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, (GPIO_PinState)level); } int main(void) { /* 设置led1 默认状态 90 个周期亮 10个周期灭 */ eled_init(&g_eled1, eled1_control, 90, 10); eled_init(&g_eled2, eled2_control, 100, 100); eled_init(&g_eled3, eled3_control, 10, 10); eled_init(&g_eled4, eled4_control, 50, 50); /* 设置led4 状态 10 个周期亮 10个周期灭 持续500个周期 */ eled_set(&g_eled4, 10, 10, 500); eled_set(&g_eled3, 10, 90, 500); while (1) { delay_ms(10); /* 10ms 调用一次 也可以放在中断中 */ eled_ticks(); } } ```