/********************************************************************************************************* * 模块名称:LED.c * 摘 要:LED模块 * 当前版本:1.0.0 * 作 者:Leyutek(COPYRIGHT 2018 - 2021 Leyutek. All rights reserved.) * 完成日期:2021年07月01日 * 内 容: * 注 意: ********************************************************************************************************** * 取代版本: * 作 者: * 完成日期: * 修改内容: * 修改文件: *********************************************************************************************************/ /********************************************************************************************************* * 包含头文件 *********************************************************************************************************/ #include "Led.h" #include "gd32e23x_gpio.h" #include "gd32e23x_rcu.h" #include "systick.h" /********************************************************************************************************* * 宏定义 *********************************************************************************************************/ /********************************************************************************************************* * 枚举结构体 *********************************************************************************************************/ /********************************************************************************************************* * 内部变量定义 *********************************************************************************************************/ /********************************************************************************************************* * 内部函数声明 *********************************************************************************************************/ static void ConfigLEDGPIO(void); //配置USER_LED的GPIO /********************************************************************************************************* * 内部函数实现 *********************************************************************************************************/ /********************************************************************************************************* * 函数名称:ConfigLEDGPIO * 函数功能:配置LED的GPIO * 输入参数:void * 输出参数:void * 返 回 值:void * 创建日期:2021年07月01日 * 注 意: *********************************************************************************************************/ static void ConfigLEDGPIO(void) { //使能RCU相关时钟 rcu_periph_clock_enable(USR_LED_RCU); //使能GPIOB的时钟 gpio_mode_set(USR_LED_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, USR_LED); //设置GPIO模式 gpio_output_options_set(USR_LED_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, USR_LED); //设置GPIO输出模式及速度 gpio_bit_set(USR_LED_IO, USR_LED); //将USER_LED默认状态设置为打开 } /********************************************************************************************************* * API函数实现 *********************************************************************************************************/ /********************************************************************************************************* * 函数名称:InitLED * 函数功能:初始化LED模块 * 输入参数:void * 输出参数:void * 返 回 值:void * 创建日期:2021年07月01日 * 注 意: *********************************************************************************************************/ void InitLED(void) { ConfigLEDGPIO(); //配置LED的GPIO } /********************************************************************************************************* * 函数名称:LEDFlicker1 * 函数功能:LED闪烁函数 * 输入参数:cnt * 输出参数:void * 返 回 值:void * 创建日期:2021年07月01日 * 注 意:LEDFlicker1在Proc2msTask中调用,cnt为250时表示每500ms更改一次LED状态 *********************************************************************************************************/ void LEDFlicker1(unsigned short cnt) { static unsigned short s_iCnt; //定义静态变量s_iCnt作为计数器 s_iCnt++; //计数器的计数值加1 if(s_iCnt >= cnt) //计数器的计数值大于cnt { s_iCnt = 0; //重置计数器的计数值为0 //USER_LED状态取反,实现USER_LED闪烁 gpio_bit_write(USR_LED_IO, USR_LED, 1-gpio_output_bit_get(USR_LED_IO, USR_LED)); } } /********************************************************************************************************* * 函数名称:LEDFlicker2 * 函数功能:LED闪烁函数 * 输入参数:void * 输出参数:void * 返 回 值:void * 创建日期:2021年07月01日 * 注 意:LEDFlicker2在Proc1SecTask中调用,每100ms更改一次LED状态 *********************************************************************************************************/ void LEDFlicker2(void) { //USER_LED状态取反,实现USER_LED闪烁 gpio_bit_toggle(USR_LED_IO, USR_LED); }