1 /* 2 * Copyright (c) 2006-2021, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2020-10-28 luhuadong first version 9 */ 10 11 #include <rtdevice.h> 12 #include <hifive1.h> 13 #include <platform.h> 14 #include <gpio.h> 15 #include "led.h" 16 17 #define USER_LED_OFFSET 5 18 _led_init(rt_uint8_t offset)19static void _led_init(rt_uint8_t offset) 20 { 21 GPIO_REG(GPIO_IOF_EN) &= ~(1UL << offset); 22 23 GPIO_REG(GPIO_OUTPUT_EN) |= (1UL << offset); 24 } 25 _led_set(rt_uint8_t offset,rt_uint8_t val)26static void _led_set(rt_uint8_t offset, rt_uint8_t val) 27 { 28 switch (val) 29 { 30 case LED_ON: 31 GPIO_REG(GPIO_OUTPUT_VAL) |= (1UL << offset); 32 break; 33 case LED_OFF: 34 GPIO_REG(GPIO_OUTPUT_VAL) &= ~(1UL << offset); 35 break; 36 default: 37 break; 38 } 39 } 40 _led_toggle(rt_uint8_t offset)41static void _led_toggle(rt_uint8_t offset) 42 { 43 GPIO_REG(GPIO_OUTPUT_VAL) ^= (1UL << offset); 44 } 45 led_init(void)46void led_init(void) 47 { 48 _led_init(USER_LED_OFFSET); 49 } 50 led_set(rt_uint8_t val)51void led_set(rt_uint8_t val) 52 { 53 _led_set(USER_LED_OFFSET, val); 54 } 55 led_toggle(void)56void led_toggle(void) 57 { 58 _led_toggle(USER_LED_OFFSET); 59 } 60