diff options
| author | Meco Man <[email protected]> | 2021-03-17 02:26:35 +0800 |
|---|---|---|
| committer | Meco Man <[email protected]> | 2021-03-17 02:26:35 +0800 |
| commit | 958d9405755560e108e730ab2bb6cdd68ec6009a (patch) | |
| tree | 062b89967e184eb550b14dc02ba40bf8faed9ce0 /bsp/lpc55sxx | |
| parent | c3ffe18688a3696a486855ae98002714546bd836 (diff) | |
[lpcxxx] auto formatted
Diffstat (limited to 'bsp/lpc55sxx')
32 files changed, 353 insertions, 353 deletions
diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_adc.c b/bsp/lpc55sxx/Libraries/drivers/drv_adc.c index e1f79c2429..d7d29f0728 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_adc.c +++ b/bsp/lpc55sxx/Libraries/drivers/drv_adc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -34,7 +34,7 @@ static rt_err_t lpc_lpadc_convert(struct rt_adc_device *device, rt_uint32_t chan lpadc_conv_trigger_config_t mLpadcTriggerConfigStruct; lpadc_conv_command_config_t mLpadcCommandConfigStruct; lpadc_conv_result_t mLpadcResultConfigStruct; - + ADC_Type *base; base = (ADC_Type *)(device->parent.user_data); @@ -42,13 +42,13 @@ static rt_err_t lpc_lpadc_convert(struct rt_adc_device *device, rt_uint32_t chan LPADC_GetDefaultConvCommandConfig(&mLpadcCommandConfigStruct); mLpadcCommandConfigStruct.channelNumber = channel; LPADC_SetConvCommandConfig(base, 1U, &mLpadcCommandConfigStruct); - + /* Set trigger configuration. */ LPADC_GetDefaultConvTriggerConfig(&mLpadcTriggerConfigStruct); mLpadcTriggerConfigStruct.targetCommandId = 1U; mLpadcTriggerConfigStruct.enableHardwareTrigger = false; LPADC_SetConvTriggerConfig(base, 0U, &mLpadcTriggerConfigStruct); /* Configurate the trigger0. */ - + LPADC_DoSoftwareTrigger(base, 1U); /* 1U is trigger0 mask. */ while (!LPADC_GetConvResult(base, &mLpadcResultConfigStruct, 0U)); @@ -74,12 +74,12 @@ int rt_hw_adc_init(void) #if defined(BSP_USING_ADC0_CH0) lpadc_config_t mLpadcConfigStruct; - + CLOCK_SetClkDiv(kCLOCK_DivAdcAsyncClk, 16U, true); CLOCK_AttachClk(kMAIN_CLK_to_ADC_CLK); /* Disable LDOGPADC power down */ POWER_DisablePD(kPDRUNCFG_PD_LDOGPADC); - + LPADC_GetDefaultConfig(&mLpadcConfigStruct); mLpadcConfigStruct.enableAnalogPreliminary = true; mLpadcConfigStruct.referenceVoltageSource = kLPADC_ReferenceVoltageAlt2; @@ -91,7 +91,7 @@ int rt_hw_adc_init(void) LPADC_SetOffsetValue(ADC0, 10U, 10U); /* Request gain calibration. */ LPADC_DoAutoCalibration(ADC0); - + result = rt_hw_adc_register(&adc0_device, "adc0", &lpc_adc_ops, ADC0); if (result != RT_EOK) diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_adc.h b/bsp/lpc55sxx/Libraries/drivers/drv_adc.h index 0113b54f3e..412b5f3cd2 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_adc.h +++ b/bsp/lpc55sxx/Libraries/drivers/drv_adc.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_hwtimer.c b/bsp/lpc55sxx/Libraries/drivers/drv_hwtimer.c index bbaf2d6704..6014317b63 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_hwtimer.c +++ b/bsp/lpc55sxx/Libraries/drivers/drv_hwtimer.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -31,15 +31,15 @@ static void NVIC_Configuration(void) #ifdef BSP_USING_CTIMER1 EnableIRQ(CTIMER1_IRQn); #endif - + #ifdef BSP_USING_CTIMER2 EnableIRQ(CTIMER2_IRQn); #endif - + #ifdef BSP_USING_CTIMER3 EnableIRQ(CTIMER3_IRQn); #endif - + #ifdef BSP_USING_CTIMER4 EnableIRQ(CTIMER4_IRQn); #endif @@ -64,9 +64,9 @@ static rt_err_t lpc_ctimer_control(rt_hwtimer_t *timer, rt_uint32_t cmd, void *a if(hwtimer_dev == CTIMER2) clk = CLOCK_GetFreq(kCLOCK_CTimer2); if(hwtimer_dev == CTIMER3) clk = CLOCK_GetFreq(kCLOCK_CTimer3); if(hwtimer_dev == CTIMER4) clk = CLOCK_GetFreq(kCLOCK_CTimer4); - + pre = clk / *((uint32_t *)args) - 1; - + hwtimer_dev->PR = pre; } break; @@ -97,16 +97,16 @@ static void lpc_ctimer_init(rt_hwtimer_t *timer, rt_uint32_t state) hwtimer_dev = (CTIMER_Type *)timer->parent.user_data; RT_ASSERT(timer != RT_NULL); - + /* Use Main clock for some of the Ctimers */ if(hwtimer_dev == CTIMER0) CLOCK_AttachClk(kMAIN_CLK_to_CTIMER0); if(hwtimer_dev == CTIMER1) CLOCK_AttachClk(kMAIN_CLK_to_CTIMER1); if(hwtimer_dev == CTIMER2) CLOCK_AttachClk(kMAIN_CLK_to_CTIMER2); if(hwtimer_dev == CTIMER3) CLOCK_AttachClk(kMAIN_CLK_to_CTIMER3); if(hwtimer_dev == CTIMER4) CLOCK_AttachClk(kMAIN_CLK_to_CTIMER4); - + CTIMER_Deinit(hwtimer_dev); - + if (state == 1) { NVIC_Configuration(); @@ -121,7 +121,7 @@ static rt_err_t lpc_ctimer_start(rt_hwtimer_t *timer, rt_uint32_t cnt, rt_hwtime hwtimer_dev = (CTIMER_Type *)timer->parent.user_data; /* Match Configuration for Channel 0 */ ctimer_match_config_t matchCfg; - + RT_ASSERT(timer != RT_NULL); /* Configuration*/ @@ -131,13 +131,13 @@ static rt_err_t lpc_ctimer_start(rt_hwtimer_t *timer, rt_uint32_t cnt, rt_hwtime matchCfg.outControl = kCTIMER_Output_NoAction; matchCfg.outPinInitState = false; matchCfg.enableInterrupt = true; - + CTIMER_SetupMatch(hwtimer_dev, kCTIMER_Match_1, &matchCfg); - + NVIC_Configuration(); CTIMER_StartTimer(hwtimer_dev); - + return RT_EOK; } @@ -213,7 +213,7 @@ int rt_hw_hwtimer_init(void) LOG_E("CTIMER1 register failed\n"); } #endif - + #ifdef BSP_USING_CTIMER2 CTimer2.info = &lpc_hwtimer_info; CTimer2.ops = &lpc_hwtimer_ops; @@ -224,7 +224,7 @@ int rt_hw_hwtimer_init(void) LOG_E("CTIMER2 register failed\n"); } #endif - + #ifdef BSP_USING_CTIMER3 CTimer3.info = &lpc_hwtimer_info; CTimer3.ops = &lpc_hwtimer_ops; @@ -235,7 +235,7 @@ int rt_hw_hwtimer_init(void) LOG_E("CTIMER3 register failed\n"); } #endif - + #ifdef BSP_USING_CTIMER4 CTimer4.info = &lpc_hwtimer_info; CTimer4.ops = &lpc_hwtimer_ops; @@ -246,7 +246,7 @@ int rt_hw_hwtimer_init(void) LOG_E("CTIMER4 register failed\n"); } #endif - + return ret; } diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_hwtimer.h b/bsp/lpc55sxx/Libraries/drivers/drv_hwtimer.h index 441665c6e8..04d64d79e4 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_hwtimer.h +++ b/bsp/lpc55sxx/Libraries/drivers/drv_hwtimer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_i2c.c b/bsp/lpc55sxx/Libraries/drivers/drv_i2c.c index 45273f1552..53361bdd40 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_i2c.c +++ b/bsp/lpc55sxx/Libraries/drivers/drv_i2c.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -7,7 +7,7 @@ * Date Author Notes * 2019-07-15 Magicoe The first version for LPC55S6x */ - + #include <rtthread.h> #include <rtdevice.h> #include "board.h" @@ -86,7 +86,7 @@ out: } static const struct rt_i2c_bus_device_ops i2c_ops = -{ +{ lpc_i2c_xfer, RT_NULL, @@ -115,7 +115,7 @@ int rt_hw_i2c_init(void) lpc_i2c1.device_name = "LPC Flexcomm1 as I2C"; rt_i2c_bus_device_register(&lpc_i2c1.parent, "i2c1"); #endif /* BSP_USING_I2C1 */ - + #ifdef BSP_USING_I2C4 static struct lpc_i2c_bus lpc_i2c4; /* attach 12 MHz clock to FLEXCOMM2 (I2C master for touch controller) */ diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_i2c.h b/bsp/lpc55sxx/Libraries/drivers/drv_i2c.h index ac303c7367..87b576f30d 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_i2c.h +++ b/bsp/lpc55sxx/Libraries/drivers/drv_i2c.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -8,12 +8,12 @@ * 2018-03-15 Liuguang the first version. * 2019-07-19 Magicoe The first version for LPC55S6x */ - + #ifndef __DRV_RTC_H__ #define __DRV_RTC_H__ -#include <rtthread.h> -#include <rtdevice.h> +#include <rtthread.h> +#include <rtdevice.h> extern int rt_hw_i2c_init(void); diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_key.c b/bsp/lpc55sxx/Libraries/drivers/drv_key.c index 3f8188febe..930c2c706b 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_key.c +++ b/bsp/lpc55sxx/Libraries/drivers/drv_key.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -47,11 +47,11 @@ int my_button_register(struct my_button *button) { rt_pin_mode(button->pin, PIN_MODE_INPUT_PULLDOWN); } - + button->cnt = 0; button->event = BUTTON_EVENT_NONE; button_manage.button_list[button_manage.num++] = button; - + return 0; } @@ -100,7 +100,7 @@ static void my_button_scan(void *param) else if (cnt_old >= MY_BUTTON_HOLD_MS / MY_BUTTON_SCAN_SPACE_MS) /* BUTTON_HOLD_UP */ { LOG_D("BUTTON_HOLD_UP"); - button_manage.button_list[i]->event = BUTTON_EVENT_HOLD_UP; + button_manage.button_list[i]->event = BUTTON_EVENT_HOLD_UP; MY_BUTTON_CALL(button_manage.button_list[i]->cb, (button_manage.button_list[i])); } } @@ -117,7 +117,7 @@ int my_button_start(void) my_button_scan, /* Timeout callback func */ RT_NULL, /* Timeout func entry */ RT_TICK_PER_SECOND * MY_BUTTON_SCAN_SPACE_MS / 1000, - RT_TIMER_FLAG_PERIODIC | RT_TIMER_FLAG_SOFT_TIMER); + RT_TIMER_FLAG_PERIODIC | RT_TIMER_FLAG_SOFT_TIMER); /* Start Timer */ if (button_manage.timer != RT_NULL) rt_timer_start(button_manage.timer); @@ -159,7 +159,7 @@ void key_test(rt_uint32_t led_num, rt_uint32_t value) key.pin = KEY_PIN; my_button_register(&key); - + my_button_start(); } MSH_CMD_EXPORT(key_test, key_test); diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_key.h b/bsp/lpc55sxx/Libraries/drivers/drv_key.h index b0fb9d4095..f8a65370f0 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_key.h +++ b/bsp/lpc55sxx/Libraries/drivers/drv_key.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -7,12 +7,12 @@ * Date Author Notes * 2019-07-19 Magicoe The first version for LPC55S6x, refered github.com/Guozhanxin/RTT-BeepPlayer-pkg */ - + #ifndef __DRV_KEY_H__ #define __DRV_KEY_H__ -#include <rtthread.h> -#include <rtdevice.h> +#include <rtthread.h> +#include <rtdevice.h> #define MY_BUTTON_DOWN_MS 50 #define MY_BUTTON_HOLD_MS 700 diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_led.c b/bsp/lpc55sxx/Libraries/drivers/drv_led.c index d7c5a32ef7..922982f654 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_led.c +++ b/bsp/lpc55sxx/Libraries/drivers/drv_led.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_led.h b/bsp/lpc55sxx/Libraries/drivers/drv_led.h index de45db9063..65f55668b6 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_led.h +++ b/bsp/lpc55sxx/Libraries/drivers/drv_led.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -7,12 +7,12 @@ * Date Author Notes * 2019-07-19 Magicoe The first version for LPC55S6x */ - + #ifndef __DRV_LED_H__ #define __DRV_LED_H__ -#include <rtthread.h> -#include <rtdevice.h> +#include <rtthread.h> +#include <rtdevice.h> int rt_hw_led_init(void); diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_log.h b/bsp/lpc55sxx/Libraries/drivers/drv_log.h index 7e0bfee5b4..3fe511789b 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_log.h +++ b/bsp/lpc55sxx/Libraries/drivers/drv_log.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_mma8562.c b/bsp/lpc55sxx/Libraries/drivers/drv_mma8562.c index e009c86842..80b3b2671b 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_mma8562.c +++ b/bsp/lpc55sxx/Libraries/drivers/drv_mma8562.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -35,7 +35,7 @@ rt_err_t mma8562_read_reg(rt_uint8_t reg, rt_uint8_t len, rt_uint8_t *buf) struct rt_i2c_msg msgs[2]; msgs[0].addr = kMMA8562_ADDR; - msgs[0].flags = RT_I2C_WR; + msgs[0].flags = RT_I2C_WR; msgs[0].buf = ® msgs[0].len = 1; @@ -60,7 +60,7 @@ rt_err_t mma8562_write_reg(rt_uint8_t reg, rt_uint8_t data) buf[0] = reg; buf[1] = data; - + if (rt_i2c_master_send(mma8562_i2c_bus, kMMA8562_ADDR, 0, buf ,2) == 2) { return RT_EOK; @@ -78,15 +78,15 @@ rt_err_t mma8562_write_reg(rt_uint8_t reg, rt_uint8_t data) void get_mma8562(uint8_t data) { volatile acceleration_t accel; - + uint8_t ucVal1 = 0; uint8_t ucVal2 = 0; uint8_t ucStatus = 0; - + do { mma8562_read_reg(kMMA8562_STATUS, 1, &ucStatus); } while (!(ucStatus & 0x08)); - + mma8562_read_reg(kMMA8562_OUT_X_MSB, 1, &ucVal1); mma8562_read_reg(kMMA8562_OUT_X_LSB, 1, &ucVal2); @@ -150,7 +150,7 @@ int mma8562_hw_init(void) /* databyte = 0x0D; */ val = 0x0D; mma8562_write_reg(kMMA8562_CTRL_REG1, val); - + return 0; } diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_pin.c b/bsp/lpc55sxx/Libraries/drivers/drv_pin.c index 48d26a5825..d38a7ead9a 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_pin.c +++ b/bsp/lpc55sxx/Libraries/drivers/drv_pin.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -83,8 +83,8 @@ static struct lpc_pin lpc_pin_map[] = __LPC55S69_PIN(30, GPIO, 0, 29), /* PIO0_29 */ __LPC55S69_PIN(31, GPIO, 0, 30), /* PIO0_30 */ __LPC55S69_PIN(32, GPIO, 0, 31), /* PIO0_31 */ - - + + /* PIO1 / GPIO, 1 */ __LPC55S69_PIN(33, GPIO, 1, 0), /* PIO1_00 */ __LPC55S69_PIN(34, GPIO, 1, 1), /* PIO1_01 */ @@ -129,7 +129,7 @@ struct rt_pin_irq_hdr pin_irq_hdr_tab[] = {-1, 0, RT_NULL, RT_NULL}, {-1, 0, RT_NULL, RT_NULL}, {-1, 0, RT_NULL, RT_NULL}, - {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, }; static void lpc_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode) @@ -179,15 +179,15 @@ static void lpc_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode) } break; } - + /* Enable IOCON Clock */ CLOCK_EnableClock(kCLOCK_Iocon); - IOCON->PIO[lpc_pin_map[pin].gpio_port][lpc_pin_map[pin].gpio_pin] = pin_cfg; + IOCON->PIO[lpc_pin_map[pin].gpio_port][lpc_pin_map[pin].gpio_pin] = pin_cfg; /* Disable IOCON Clock -- To Save Power */ CLOCK_DisableClock(kCLOCK_Iocon); - + gpio_pin_config_t pin_config = {(gpio_pin_direction_t)dir, 1}; - GPIO_PinInit(GPIO, lpc_pin_map[pin].gpio_port, lpc_pin_map[pin].gpio_pin, &pin_config); + GPIO_PinInit(GPIO, lpc_pin_map[pin].gpio_port, lpc_pin_map[pin].gpio_pin, &pin_config); } @@ -197,20 +197,20 @@ static void lpc_pin_write(rt_device_t dev, rt_base_t pin, rt_base_t value) { return; } - + GPIO_PinWrite(lpc_pin_map[pin].gpio, lpc_pin_map[pin].gpio_port, lpc_pin_map[pin].gpio_pin, value); } static int lpc_pin_read(rt_device_t dev, rt_base_t pin) { - int value; + int value; if ((pin > __ARRAY_LEN(lpc_pin_map)) || (pin == 0)) { return RT_ERROR; } value = GPIO_PinRead(lpc_pin_map[pin].gpio, lpc_pin_map[pin].gpio_port, lpc_pin_map[pin].gpio_pin); - + return value; } @@ -225,10 +225,10 @@ static void pin_irq_hdr(pint_pin_int_t pintr, uint32_t pmatch_status) break; } } - + if(irqno >= IRQ_MAX_VAL) return; - + if (pin_irq_hdr_tab[irqno].hdr) { pin_irq_hdr_tab[irqno].hdr(pin_irq_hdr_tab[irqno].args); @@ -250,7 +250,7 @@ void PIN_INT0_IRQHandler(void) pmstatus = PINT_PatternMatchResetDetectLogic(PINT); pin_irq_hdr(kPINT_PinInt0, pmstatus); - + if ((PINT->ISEL & 0x1U) == 0x0U) { /* Edge sensitive: clear Pin interrupt after callback */ @@ -264,8 +264,8 @@ static rt_err_t lpc_pin_attach_irq(struct rt_device *device, void (*hdr)(void *args), void *args) { - int trigger_mode, pin_initx, pintsel, pin_cfg, i; - + int trigger_mode, pin_initx, pintsel, pin_cfg, i; + if ((pin > __ARRAY_LEN(lpc_pin_map)) || (pin == 0)) { return RT_ERROR; @@ -289,10 +289,10 @@ static rt_err_t lpc_pin_attach_irq(struct rt_device *device, trigger_mode = kPINT_PinIntEnableLowLevel; break; } - - /* Get inputmux_connection_t */ + + /* Get inputmux_connection_t */ pintsel = (pin - 1 + (0xC0U << 20)); - + for(i = 0; i < IRQ_MAX_VAL; i++) { if(pin_irq_hdr_tab[i].pin == -1) @@ -308,43 +308,43 @@ static rt_err_t lpc_pin_attach_irq(struct rt_device *device, if(i >= IRQ_MAX_VAL) return RT_ERROR; - + /* Initialize PINT */ PINT_Init(PINT); - + /* Enable Input and IOCon clk */ - /* AttachSignal */ + /* AttachSignal */ /* Connect trigger sources to PINT */ INPUTMUX_Init(INPUTMUX); INPUTMUX_AttachSignal(INPUTMUX, i, (inputmux_connection_t)pintsel); /* Turnoff clock to inputmux to save power. Clock is only needed to make changes */ INPUTMUX_Deinit(INPUTMUX); - + pin_cfg = ((IOCON->PIO[lpc_pin_map[pin].gpio_port][lpc_pin_map[pin].gpio_pin] & (~(IOCON_PIO_FUNC_MASK | IOCON_PIO_DIGIMODE_MASK | IOCON_PIO_FILTEROFF_MASK))) /* Mask bits to zero which are setting */ | IOCON_PIO_FUNC(0) /* Selects pin function.: PORT18 (pin 28) is configured as PIO1_8 */ | IOCON_PIO_DIGIMODE(1) /* Select Analog/Digital mode.: Digital mode. */ | IOCON_PIO_FILTEROFF(0)); /* Controls input glitch filter.: Filter enabled. Noise pulses below approximately 10 ns are filtered out. */ - - IOCON_PinMuxSet(IOCON, lpc_pin_map[pin].gpio_port, lpc_pin_map[pin].gpio_pin, pin_cfg); - + + IOCON_PinMuxSet(IOCON, lpc_pin_map[pin].gpio_port, lpc_pin_map[pin].gpio_pin, pin_cfg); + /* PINT_PinInterruptConfig */ - PINT_PinInterruptConfig(PINT, (pint_pin_int_t)pin_initx, (pint_pin_enable_t)(pin_irq_hdr_tab[i].mode), callback); + PINT_PinInterruptConfig(PINT, (pint_pin_int_t)pin_initx, (pint_pin_enable_t)(pin_irq_hdr_tab[i].mode), callback); /* Enable callbacks for PINTx by Index */ PINT_EnableCallbackByIndex(PINT, (pint_pin_int_t)pin_initx); - + return RT_EOK; } static rt_err_t lpc_pin_detach_irq(struct rt_device *device, rt_int32_t pin) { - int i; + int i; if ((pin > __ARRAY_LEN(lpc_pin_map)) || (pin == 0)) { return RT_ERROR; } - + for(i = 0; i < IRQ_MAX_VAL; i++) { if(pin_irq_hdr_tab[i].pin == pin) @@ -355,19 +355,19 @@ static rt_err_t lpc_pin_detach_irq(struct rt_device *device, rt_int32_t pin) pin_irq_hdr_tab[i].args = RT_NULL; break; } - } + } return RT_EOK; } static rt_err_t lpc_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_uint32_t enabled) { int irqn_type, i; - + if ((pin > __ARRAY_LEN(lpc_pin_map)) || (pin == 0)) { return RT_ERROR; } - + for(i = 0; i < IRQ_MAX_VAL; i++) { if(pin_irq_hdr_tab[i].pin == pin) @@ -401,8 +401,8 @@ static rt_err_t lpc_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_u } break; } - } - + } + if(i >= IRQ_MAX_VAL) return RT_ERROR; diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_pin.h b/bsp/lpc55sxx/Libraries/drivers/drv_pin.h index 0c69698e67..21ebf56051 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_pin.h +++ b/bsp/lpc55sxx/Libraries/drivers/drv_pin.h @@ -1,19 +1,19 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes - * 2018-03-13 Liuguang the first version. + * 2018-03-13 Liuguang the first version. * 2018-03-19 Liuguang add GPIO interrupt mode support. * 2019-07-15 Magicoe The first version for LPC55S6x */ - + #ifndef __DRV_PIN_H__ #define __DRV_PIN_H__ -#include <rtthread.h> +#include <rtthread.h> #include <rtdevice.h> #define GET_PINS(PORTx, PINx) (32 * PORTx + PINx + 1) /* PORTx:0,1, PINx:0,1...31 */ diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_pwm.c b/bsp/lpc55sxx/Libraries/drivers/drv_pwm.c index 64d6cfd00a..e2fa7f05b6 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_pwm.c +++ b/bsp/lpc55sxx/Libraries/drivers/drv_pwm.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -40,7 +40,7 @@ static struct rt_pwm_ops lpc_drv_ops = static rt_err_t lpc_drv_pwm_enable(struct rt_device_pwm *device, struct rt_pwm_configuration *configuration, rt_bool_t enable) { CTIMER_Type *base; - + base = (CTIMER_Type *)device->parent.user_data; if (!enable) @@ -63,14 +63,14 @@ static rt_err_t lpc_drv_pwm_get(struct rt_device_pwm *device, struct rt_pwm_conf uint32_t get_frequence; uint32_t pwmClock = 0; CTIMER_Type *base; - + base = (CTIMER_Type *)device->parent.user_data; - + #ifdef BSP_USING_CTIMER2 /* get frequence */ pwmClock = CLOCK_GetFreq(kCLOCK_CTimer2) ; #endif - + get_frequence = pwmClock / (base->MR[kCTIMER_Match_3] + 1); if(configuration->channel == 1) @@ -85,7 +85,7 @@ static rt_err_t lpc_drv_pwm_get(struct rt_device_pwm *device, struct rt_pwm_conf configuration->pulse = get_duty * configuration->period / 100; rt_kprintf("*** PWM period %d, pulse %d\r\n", configuration->period, configuration->pulse); - + return RT_EOK; } @@ -97,7 +97,7 @@ static rt_err_t lpc_drv_pwm_set(struct rt_device_pwm *device, struct rt_pwm_conf ctimer_config_t config; CTIMER_Type *base; base = (CTIMER_Type *)device->parent.user_data; - + uint32_t pwmPeriod, pulsePeriod; /* Run as a timer */ config.mode = kCTIMER_TimerMode; @@ -105,7 +105,7 @@ static rt_err_t lpc_drv_pwm_set(struct rt_device_pwm *device, struct rt_pwm_conf config.input = kCTIMER_Capture_0; /* Timer counter is incremented on every APB bus clock */ config.prescale = 0; - + if(configuration->channel == 1) { /* Get the PWM period match value and pulse width match value of DEFAULT_FREQ PWM signal with DEFAULT_DUTY dutycycle */ @@ -159,17 +159,17 @@ int rt_hw_pwm_init(void) static struct rt_device_pwm pwm1_device; ctimer_config_t config; uint32_t pwmPeriod, pulsePeriod; - + /* Use 12 MHz clock for some of the Ctimers */ CLOCK_AttachClk(kMAIN_CLK_to_CTIMER2); - + /* Run as a timer */ config.mode = kCTIMER_TimerMode; /* This field is ignored when mode is timer */ config.input = kCTIMER_Capture_0; /* Timer counter is incremented on every APB bus clock */ config.prescale = 0; - + CTIMER_Init(CTIMER2, &config); #ifdef BSP_USING_CTIMER2_MAT1 @@ -243,7 +243,7 @@ static int pwm_get(int argc, char **argv) result = -RT_EIO; goto _exit; } - + result = rt_pwm_get(device, atoi(argv[2])); _exit: diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_pwm.h b/bsp/lpc55sxx/Libraries/drivers/drv_pwm.h index 7260c0c587..47e50a435b 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_pwm.h +++ b/bsp/lpc55sxx/Libraries/drivers/drv_pwm.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_rtc.c b/bsp/lpc55sxx/Libraries/drivers/drv_rtc.c index c277d82079..fc49389566 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_rtc.c +++ b/bsp/lpc55sxx/Libraries/drivers/drv_rtc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -8,12 +8,12 @@ * 2018-03-15 Liuguang the first version. * 2019-07-19 Magicoe The first version for LPC55S6x */ - + #include <rtthread.h> #include <rtdevice.h> #include <sys/time.h> -#include "drv_rtc.h" -#include "fsl_common.h" +#include "drv_rtc.h" +#include "fsl_common.h" #include "fsl_rtc.h" #ifdef RT_USING_RTC @@ -22,21 +22,21 @@ #error "Please don't define 'FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL'!" #endif -static time_t get_timestamp(void) +static time_t get_timestamp(void) { - struct tm tm_new = {0}; - rtc_datetime_t rtcDate; - + struct tm tm_new = {0}; + rtc_datetime_t rtcDate; + /* Get date time */ RTC_GetDatetime(RTC, &rtcDate); - - tm_new.tm_sec = rtcDate.second; - tm_new.tm_min = rtcDate.minute; + + tm_new.tm_sec = rtcDate.second; + tm_new.tm_min = rtcDate.minute; tm_new.tm_hour = rtcDate.hour; - - tm_new.tm_mday = rtcDate.day; - tm_new.tm_mon = rtcDate.month - 1; - tm_new.tm_year = rtcDate.year - 1900; + + tm_new.tm_mday = rtcDate.day; + tm_new.tm_mon = rtcDate.month - 1; + tm_new.tm_year = rtcDate.year - 1900; return timegm(&tm_new); } @@ -44,27 +44,27 @@ static time_t get_timestamp(void) static int set_timestamp(time_t timestamp) { struct tm *p_tm; - rtc_datetime_t rtcDate; - + rtc_datetime_t rtcDate; + p_tm = gmtime(×tamp); - - rtcDate.second = p_tm->tm_sec ; - rtcDate.minute = p_tm->tm_min ; - rtcDate.hour = p_tm->tm_hour; - rtcDate.day = p_tm->tm_mday; - rtcDate.month = p_tm->tm_mon + 1; - rtcDate.year = p_tm->tm_year + 1900; - + rtcDate.second = p_tm->tm_sec ; + rtcDate.minute = p_tm->tm_min ; + rtcDate.hour = p_tm->tm_hour; + + rtcDate.day = p_tm->tm_mday; + rtcDate.month = p_tm->tm_mon + 1; + rtcDate.year = p_tm->tm_year + 1900; + /* RTC time counter has to be stopped before setting the date & time in the TSR register */ RTC_StopTimer(RTC); - + /* Set RTC time to default */ RTC_SetDatetime(RTC, &rtcDate); /* Start the RTC time counter */ RTC_StartTimer(RTC); - + return RT_EOK; } @@ -72,83 +72,83 @@ static rt_err_t lpc_rtc_init(rt_device_t dev) { /* Init RTC */ RTC_Init(RTC); - + /* Start the RTC time counter */ RTC_StartTimer(RTC); - - return RT_EOK; + + return RT_EOK; } static rt_err_t lpc_rtc_open(rt_device_t dev, rt_uint16_t oflag) { - return RT_EOK; + return RT_EOK; } -static rt_err_t lpc_rtc_close(rt_device_t dev) +static rt_err_t lpc_rtc_close(rt_device_t dev) { - return RT_EOK; -} + return RT_EOK; +} static rt_size_t lpc_rtc_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size) { - return 0; + return 0; } static rt_size_t lpc_rtc_write(rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size) { - return 0; + return 0; } static rt_err_t lpc_rtc_control(rt_device_t dev, int cmd, void *args) { RT_ASSERT(dev != RT_NULL); - + switch(cmd) { - case RT_DEVICE_CTRL_RTC_GET_TIME: + case RT_DEVICE_CTRL_RTC_GET_TIME: { - *(uint32_t *)args = get_timestamp(); + *(uint32_t *)args = get_timestamp(); } break; - - case RT_DEVICE_CTRL_RTC_SET_TIME: + + case RT_DEVICE_CTRL_RTC_SET_TIME: { - set_timestamp(*(time_t *)args); + set_timestamp(*(time_t *)args); } break; - + default: - return RT_EINVAL; + return RT_EINVAL; } - - return RT_EOK; + + return RT_EOK; } -static struct rt_device device = +static struct rt_device device = { - .type = RT_Device_Class_RTC, - .init = lpc_rtc_init, - .open = lpc_rtc_open, - .close = lpc_rtc_close, + .type = RT_Device_Class_RTC, + .init = lpc_rtc_init, + .open = lpc_rtc_open, + .close = lpc_rtc_close, .read = lpc_rtc_read, .write = lpc_rtc_write, - .control = lpc_rtc_control, + .control = lpc_rtc_control, }; int rt_hw_rtc_init(void) { rt_err_t ret = RT_EOK; - - ret = rt_device_register(&device, "rtc", RT_DEVICE_FLAG_RDWR); + + ret = rt_device_register(&device, "rtc", RT_DEVICE_FLAG_RDWR); if(ret != RT_EOK) { - return ret; + return ret; } - - rt_device_open(&device, RT_DEVICE_OFLAG_RDWR); - - return RT_EOK; + + rt_device_open(&device, RT_DEVICE_OFLAG_RDWR); + + return RT_EOK; } -INIT_DEVICE_EXPORT(rt_hw_rtc_init); +INIT_DEVICE_EXPORT(rt_hw_rtc_init); #endif /*RT_USING_RTC */ diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_rtc.h b/bsp/lpc55sxx/Libraries/drivers/drv_rtc.h index a0623308ad..a905b177ae 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_rtc.h +++ b/bsp/lpc55sxx/Libraries/drivers/drv_rtc.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -8,12 +8,12 @@ * 2018-03-15 Liuguang the first version. * 2019-07-19 Magicoe The first version for LPC55S6x */ - + #ifndef __DRV_RTC_H__ #define __DRV_RTC_H__ -#include <rtthread.h> -#include <rtdevice.h> +#include <rtthread.h> +#include <rtdevice.h> int rt_hw_rtc_init(void); diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_sd.c b/bsp/lpc55sxx/Libraries/drivers/drv_sd.c index 66385a7056..597e49aa7b 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_sd.c +++ b/bsp/lpc55sxx/Libraries/drivers/drv_sd.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -12,7 +12,7 @@ #include <string.h> #include <board.h> -#include "fsl_common.h" +#include "fsl_common.h" #include "fsl_iocon.h" #include "fsl_sdif.h" @@ -177,14 +177,14 @@ int rt_hw_mci_init(void) return -RT_ERROR; } rt_memset(_mci_device, 0, sizeof(struct mci_device)); - + /* attach main clock to SDIF */ CLOCK_AttachClk(kMAIN_CLK_to_SDIO_CLK); /* need call this function to clear the halt bit in clock divider register */ CLOCK_SetClkDiv(kCLOCK_DivSdioClk, (uint32_t)(SystemCoreClock / FSL_FEATURE_SDIF_MAX_SOURCE_CLOCK + 1U), true); _mci_device->card = g_sd; - + /* Save host information. */ _mci_device->card.host.base = SDIF; _mci_device->card.host.sourceClock_Hz = CLOCK_GetFreq(kCLOCK_SDio); @@ -202,14 +202,14 @@ int rt_hw_mci_init(void) /* power off card */ SD_PowerOffCard(_mci_device->card.host.base, _mci_device->card.usrParam.pwr); - + /* check SD card insert */ if(BOARD_SDIF_CD_STATUS() == true) { rt_kprintf("\r\nCard detect fail.\r\n"); return kStatus_Fail; } - + /* wait card insert */ if (SD_WaitCardDetectStatus(_mci_device->card.host.base, &s_sdCardDetect, true) == kStatus_Success) { @@ -223,7 +223,7 @@ int rt_hw_mci_init(void) rt_kprintf("\r\nCard detect fail.\r\n"); return kStatus_Fail; } - + /* Init card. */ if (SD_CardInit(&_mci_device->card)) { diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_sd.h b/bsp/lpc55sxx/Libraries/drivers/drv_sd.h index 125f2b9a47..e604787c16 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_sd.h +++ b/bsp/lpc55sxx/Libraries/drivers/drv_sd.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -18,7 +18,7 @@ struct mci_device { struct rt_device parent; /**< RT-Thread device struct */ struct rt_device_blk_geometry geometry; /**< sector size, sector count */ - sd_card_t card; /**< Card descriptor */ + sd_card_t card; /**< Card descriptor */ rt_event_t finish_event; /**< data send finish event*/ rt_bool_t data_error; /**< data send error*/ struct rt_mutex lock; diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_spi.c b/bsp/lpc55sxx/Libraries/drivers/drv_spi.c index 53c4c3730f..332b20ac5e 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_spi.c +++ b/bsp/lpc55sxx/Libraries/drivers/drv_spi.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -9,7 +9,7 @@ */ #include "drv_spi.h" -#include "fsl_common.h" +#include "fsl_common.h" #include "fsl_iocon.h" #include "fsl_spi.h" @@ -23,7 +23,7 @@ defined(BSP_USING_SPIBUS6) || \ defined(BSP_USING_SPIBUS7) || \ defined(BSP_USING_SPIBUS8) - + #if defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL #error "Please don't define 'FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL'!" #endif @@ -44,14 +44,14 @@ struct lpc_sw_spi_cs static uint32_t lpc_get_spi_freq(SPI_Type *base) { uint32_t freq = 0; - + #if defined(BSP_USING_SPIBUS0) if(base == SPI0) { freq = CLOCK_GetFreq(kCLOCK_Flexcomm0); } -#endif - +#endif + #if defined(BSP_USING_SPIBUS1) if(base == SPI1) { @@ -72,7 +72,7 @@ static uint32_t lpc_get_spi_freq(SPI_Type *base) freq = CLOCK_GetFreq(kCLOCK_Flexcomm3); } #endif - + #if defined(BSP_USING_SPIBUS4) if(base == SPI4) { @@ -116,15 +116,15 @@ static rt_err_t lpc_spi_init(SPI_Type *base, struct rt_spi_configuration *cfg) { spi_master_config_t masterConfig = {0}; - RT_ASSERT(cfg != RT_NULL); + RT_ASSERT(cfg != RT_NULL); if(cfg->data_width != 8 && cfg->data_width != 16) { - return (-RT_EINVAL); + return (-RT_EINVAL); } - - SPI_MasterGetDefaultConfig(&masterConfig); + + SPI_MasterGetDefaultConfig(&masterConfig); #if defined(BSP_USING_SPIBUS8) if(base == SPI8) @@ -140,81 +140,81 @@ static rt_err_t lpc_spi_init(SPI_Type *base, struct rt_spi_configuration *cfg) cfg->max_hz = 12*1000*1000; } #endif - + masterConfig.baudRate_Bps = cfg->max_hz; if(cfg->data_width == 8) { - masterConfig.dataWidth = kSPI_Data8Bits; + masterConfig.dataWidth = kSPI_Data8Bits; } else if(cfg->data_width == 16) { - masterConfig.dataWidth = kSPI_Data16Bits; + masterConfig.dataWidth = kSPI_Data16Bits; } if(cfg->mode & RT_SPI_MSB) { - masterConfig.direction = kSPI_MsbFirst; + masterConfig.direction = kSPI_MsbFirst; } else { - masterConfig.direction = kSPI_LsbFirst; + masterConfig.direction = kSPI_LsbFirst; } if(cfg->mode & RT_SPI_CPHA) { - masterConfig.phase = kSPI_ClockPhaseSecondEdge; + masterConfig.phase = kSPI_ClockPhaseSecondEdge; } else { - masterConfig.phase = kSPI_ClockPhaseFirstEdge; + masterConfig.phase = kSPI_ClockPhaseFirstEdge; } if(cfg->mode & RT_SPI_CPOL) { - masterConfig.polarity = kSPI_ClockPolarityActiveLow; + masterConfig.polarity = kSPI_ClockPolarityActiveLow; } else { - masterConfig.polarity = kSPI_ClockPolarityActiveHigh; + masterConfig.polarity = kSPI_ClockPolarityActiveHigh; } - SPI_MasterInit(base, &masterConfig, lpc_get_spi_freq(base)); + SPI_MasterInit(base, &masterConfig, lpc_get_spi_freq(base)); - return RT_EOK; + return RT_EOK; } rt_err_t lpc_spi_bus_attach_device(const char *bus_name, const char *device_name, rt_uint32_t pin) { - rt_err_t ret = RT_EOK; - - struct rt_spi_device *spi_device = (struct rt_spi_device *)rt_malloc(sizeof(struct rt_spi_device)); - RT_ASSERT(spi_device != RT_NULL); - - struct lpc_sw_spi_cs *cs_pin = (struct lpc_sw_spi_cs *)rt_malloc(sizeof(struct lpc_sw_spi_cs)); + rt_err_t ret = RT_EOK; + + struct rt_spi_device *spi_device = (struct rt_spi_device *)rt_malloc(sizeof(struct rt_spi_device)); + RT_ASSERT(spi_device != RT_NULL); + + struct lpc_sw_spi_cs *cs_pin = (struct lpc_sw_spi_cs *)rt_malloc(sizeof(struct lpc_sw_spi_cs)); RT_ASSERT(cs_pin != RT_NULL); - + cs_pin->pin = pin; - rt_pin_mode(pin, PIN_MODE_OUTPUT); - rt_pin_write(pin, PIN_HIGH); - - ret = rt_spi_bus_attach_device(spi_device, device_name, bus_name, (void *)cs_pin); - - return ret; + rt_pin_mode(pin, PIN_MODE_OUTPUT); + rt_pin_write(pin, PIN_HIGH); + + ret = rt_spi_bus_attach_device(spi_device, device_name, bus_name, (void *)cs_pin); + + return ret; } static rt_err_t spi_configure(struct rt_spi_device *device, struct rt_spi_configuration *cfg) { - rt_err_t ret = RT_EOK; - struct lpc_spi *spi = RT_NULL; - + rt_err_t ret = RT_EOK; + struct lpc_spi *spi = RT_NULL; + RT_ASSERT(cfg != RT_NULL); RT_ASSERT(device != RT_NULL); - - spi = (struct lpc_spi *)(device->bus->parent.user_data); - spi->cfg = cfg; - ret = lpc_spi_init(spi->base, cfg); - + + spi = (struct lpc_spi *)(device->bus->parent.user_data); + spi->cfg = cfg; + ret = lpc_spi_init(spi->base, cfg); + return ret; } @@ -222,23 +222,23 @@ static rt_err_t spi_configure(struct rt_spi_device *device, struct rt_spi_config static rt_uint32_t spixfer(struct rt_spi_device *device, struct rt_spi_message *message) { uint32_t length; - + RT_ASSERT(device != RT_NULL); RT_ASSERT(device->bus != RT_NULL); RT_ASSERT(device->bus->parent.user_data != RT_NULL); - - struct lpc_spi *spi = (struct lpc_spi *)(device->bus->parent.user_data); - struct lpc_sw_spi_cs *cs = device->parent.user_data; - + + struct lpc_spi *spi = (struct lpc_spi *)(device->bus->parent.user_data); + struct lpc_sw_spi_cs *cs = device->parent.user_data; + if(message->cs_take) { rt_pin_write(cs->pin, PIN_LOW); } - + length = message->length; - const rt_uint8_t *txData = (uint8_t *)(message->send_buf); - rt_uint8_t *rxData = (uint8_t *)(message->recv_buf); - + const rt_uint8_t *txData = (uint8_t *)(message->send_buf); + rt_uint8_t *rxData = (uint8_t *)(message->recv_buf); + rt_kprintf("*** spi send %d\r\n", length); while (length) @@ -257,181 +257,181 @@ static rt_uint32_t spixfer(struct rt_spi_device *device, struct rt_spi_message * } txData += SPISTEP(spi->cfg->data_width);; length--; - } - + } + if(message->cs_release) { rt_pin_write(cs->pin, PIN_HIGH); } - - return (message->length - length); + + return (message->length - length); } #if defined(BSP_USING_SPIBUS0) -static struct lpc_spi spi0 = +static struct lpc_spi spi0 = { .base = SPI0 -}; -static struct rt_spi_bus spi0_bus = +}; +static struct rt_spi_bus spi0_bus = { .parent.user_data = &spi0 -}; +}; #endif #if defined(BSP_USING_SPIBUS1) -static struct lpc_spi spi1 = +static struct lpc_spi spi1 = { .base = SPI1 -}; -static struct rt_spi_bus spi1_bus = +}; +static struct rt_spi_bus spi1_bus = { .parent.user_data = &spi1 -}; +}; #endif #if defined(BSP_USING_SPIBUS2) -static struct lpc_spi spi2 = +static struct lpc_spi spi2 = { .base = SPI2 -}; -static struct rt_spi_bus spi2_bus = +}; +static struct rt_spi_bus spi2_bus = { .parent.user_data = &spi2 -}; +}; #endif #if defined(BSP_USING_SPIBUS3) -static struct lpc_spi spi3 = +static struct lpc_spi spi3 = { .base = SPI3 -}; -static struct rt_spi_bus spi3_bus = +}; +static struct rt_spi_bus spi3_bus = { .parent.user_data = &spi3 -}; +}; #endif #if defined(BSP_USING_SPIBUS4) -static struct lpc_spi spi4 = +static struct lpc_spi spi4 = { .base = SPI4 -}; -static struct rt_spi_bus spi4_bus = +}; +static struct rt_spi_bus spi4_bus = { .parent.user_data = &spi4 -}; +}; #endif #if defined(BSP_USING_SPIBUS5) -static struct lpc_spi spi5 = +static struct lpc_spi spi5 = { .base = SPI5 -}; -static struct rt_spi_bus spi5_bus = +}; +static struct rt_spi_bus spi5_bus = { .parent.user_data = &spi5 -}; +}; #endif #if defined(BSP_USING_SPIBUS6) -static struct lpc_spi spi6 = +static struct lpc_spi spi6 = { .base = SPI6 -}; -static struct rt_spi_bus spi6_bus = +}; +static struct rt_spi_bus spi6_bus = { .parent.user_data = &spi6 -}; +}; #endif #if defined(BSP_USING_SPIBUS7) -static struct lpc_spi spi7 = +static struct lpc_spi spi7 = { .base = SPI7 -}; -static struct rt_spi_bus spi7_bus = +}; +static struct rt_spi_bus spi7_bus = { .parent.user_data = &spi7 -}; +}; #endif #if defined(BSP_USING_SPIBUS8) -static struct lpc_spi spi8 = +static struct lpc_spi spi8 = { .base = SPI8 -}; -static struct rt_spi_bus spi8_bus = +}; +static struct rt_spi_bus spi8_bus = { .parent.user_data = &spi8 -}; +}; #endif -static struct rt_spi_ops lpc_spi_ops = +static struct rt_spi_ops lpc_spi_ops = { - .configure = spi_configure, + .configure = spi_configure, .xfer = spixfer -}; +}; int rt_hw_spi_init(void) { #if defined(BSP_USING_SPIBUS0) CLOCK_AttachClk(kFRO12M_to_FLEXCOMM0); RESET_PeripheralReset(kFC0_RST_SHIFT_RSTn); - spi0.cfg = RT_NULL; - rt_spi_bus_register(&spi0_bus, "spi0", &lpc_spi_ops); + spi0.cfg = RT_NULL; + rt_spi_bus_register(&spi0_bus, "spi0", &lpc_spi_ops); #endif #if defined(BSP_USING_SPIBUS1) CLOCK_AttachClk(kFRO12M_to_FLEXCOMM1); RESET_PeripheralReset(kFC1_RST_SHIFT_RSTn); - spi1.cfg = RT_NULL; - rt_spi_bus_register(&spi1_bus, "spi1", &lpc_spi_ops); + spi1.cfg = RT_NULL; + rt_spi_bus_register(&spi1_bus, "spi1", &lpc_spi_ops); #endif #if defined(BSP_USING_SPIBUS2) CLOCK_AttachClk(kFRO12M_to_FLEXCOMM2); RESET_PeripheralReset(kFC2_RST_SHIFT_RSTn); - spi2.cfg = RT_NULL; - rt_spi_bus_register(&spi2_bus, "spi2", &lpc_spi_ops); + spi2.cfg = RT_NULL; + rt_spi_bus_register(&spi2_bus, "spi2", &lpc_spi_ops); #endif #if defined(BSP_USING_SPIBUS3) CLOCK_AttachClk(kFRO12M_to_FLEXCOMM3); RESET_PeripheralReset(kFC3_RST_SHIFT_RSTn); - spi3.cfg = RT_NULL; - rt_spi_bus_register(&spi3_bus, "spi3", &lpc_spi_ops); + spi3.cfg = RT_NULL; + rt_spi_bus_register(&spi3_bus, "spi3", &lpc_spi_ops); #endif #if defined(BSP_USING_SPIBUS4) CLOCK_AttachClk(kFRO12M_to_FLEXCOMM4); RESET_PeripheralReset(kFC4_RST_SHIFT_RSTn); - spi4.cfg = RT_NULL; - rt_spi_bus_register(&spi4_bus, "spi4", &lpc_spi_ops); + spi4.cfg = RT_NULL; + rt_spi_bus_register(&spi4_bus, "spi4", &lpc_spi_ops); #endif - + #if defined(BSP_USING_SPIBUS5) CLOCK_AttachClk(kFRO12M_to_FLEXCOMM5); RESET_PeripheralReset(kFC5_RST_SHIFT_RSTn); - spi5.cfg = RT_NULL; - rt_spi_bus_register(&spi5_bus, "spi5", &lpc_spi_ops); + spi5.cfg = RT_NULL; + rt_spi_bus_register(&spi5_bus, "spi5", &lpc_spi_ops); #endif #if defined(BSP_USING_SPIBUS6) CLOCK_AttachClk(kFRO12M_to_FLEXCOMM6); RESET_PeripheralReset(kFC6_RST_SHIFT_RSTn); - spi6.cfg = RT_NULL; - rt_spi_bus_register(&spi6_bus, "spi6", &lpc_spi_ops); + spi6.cfg = RT_NULL; + rt_spi_bus_register(&spi6_bus, "spi6", &lpc_spi_ops); #endif #if defined(BSP_USING_SPIBUS7) CLOCK_AttachClk(kFRO12M_to_FLEXCOMM7); RESET_PeripheralReset(kFC7_RST_SHIFT_RSTn); - spi7.cfg = RT_NULL; - rt_spi_bus_register(&spi7_bus, "spi7", &lpc_spi_ops); + spi7.cfg = RT_NULL; + rt_spi_bus_register(&spi7_bus, "spi7", &lpc_spi_ops); #endif - + #if defined(BSP_USING_SPIBUS8) CLOCK_AttachClk(kMAIN_CLK_to_HSLSPI); RESET_PeripheralReset(kHSLSPI_RST_SHIFT_RSTn); @@ -440,7 +440,7 @@ int rt_hw_spi_init(void) rt_spi_bus_register(&spi8_bus, "spi8", &lpc_spi_ops); #endif - return RT_EOK; + return RT_EOK; } INIT_BOARD_EXPORT(rt_hw_spi_init); diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_spi.h b/bsp/lpc55sxx/Libraries/drivers/drv_spi.h index 6aeb91256e..d361637c60 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_spi.h +++ b/bsp/lpc55sxx/Libraries/drivers/drv_spi.h @@ -1,16 +1,16 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 */ - -#ifndef __DRV_SPI_H__ -#define __DRV_SPI_H__ -#include <rtthread.h> -#include <rtdevice.h> +#ifndef __DRV_SPI_H__ +#define __DRV_SPI_H__ + +#include <rtthread.h> +#include <rtdevice.h> int rt_hw_spi_init(void); -rt_err_t lpc_spi_bus_attach_device(const char *bus_name, const char *device_name, rt_uint32_t pin); +rt_err_t lpc_spi_bus_attach_device(const char *bus_name, const char *device_name, rt_uint32_t pin); #endif diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_uart.c b/bsp/lpc55sxx/Libraries/drivers/drv_uart.c index d9c325971f..c9bf72eb8d 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_uart.c +++ b/bsp/lpc55sxx/Libraries/drivers/drv_uart.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -40,7 +40,7 @@ struct lpc_uart USART_Type *uart_base; IRQn_Type irqn; clock_name_t clock_src; - + struct rt_serial_device *serial; char *device_name; }; @@ -133,7 +133,7 @@ static const struct lpc_uart uarts[] = USART0, FLEXCOMM0_IRQn, kCLOCK_Flexcomm0, - + &serial0, "uart", }, @@ -143,7 +143,7 @@ static const struct lpc_uart uarts[] = USART1, FLEXCOMM1_IRQn, kCLOCK_Flexcomm1, - + &serial1, "uart1", }, @@ -153,7 +153,7 @@ static const struct lpc_uart uarts[] = USART2, FLEXCOMM2_IRQn, kCLOCK_Flexcomm2, - + &serial2, "uart2", }, @@ -163,7 +163,7 @@ static const struct lpc_uart uarts[] = USART3, FLEXCOMM3_IRQn, kCLOCK_Flexcomm3, - + &serial3, "uart3", }, @@ -173,7 +173,7 @@ static const struct lpc_uart uarts[] = USART4, FLEXCOMM4_IRQn, kCLOCK_Flexcomm4, - + &serial4, "uart4", }, @@ -183,7 +183,7 @@ static const struct lpc_uart uarts[] = USART5, FLEXCOMM5_IRQn, kCLOCK_Flexcomm5, - + &serial5, "uart5", }, @@ -193,7 +193,7 @@ static const struct lpc_uart uarts[] = USART6, FLEXCOMM6_IRQn, kCLOCK_Flexcomm6, - + &serial6, "uart6", }, @@ -203,7 +203,7 @@ static const struct lpc_uart uarts[] = USART7, FLEXCOMM7_IRQn, kCLOCK_Flexcomm7, - + &serial7, "uart7", }, @@ -270,11 +270,11 @@ static rt_err_t lpc_configure(struct rt_serial_device *serial, struct serial_con RT_ASSERT(serial != RT_NULL); RT_ASSERT(cfg != RT_NULL); - + uart = (struct lpc_uart *)serial->parent.user_data; lpc_uart_gpio_init(uart); - + /* * config.baudRate_Bps = 115200U; * config.parityMode = kUSART_ParityDisabled; @@ -285,7 +285,7 @@ static rt_err_t lpc_configure(struct rt_serial_device *serial, struct serial_con */ USART_GetDefaultConfig(&config); config.baudRate_Bps = cfg->baud_rate; - + switch (cfg->data_bits) { case DATA_BITS_7: @@ -296,7 +296,7 @@ static rt_err_t lpc_configure(struct rt_serial_device *serial, struct serial_con config.bitCountPerChar = kUSART_8BitsPerChar; break; } - + switch (cfg->stop_bits) { case STOP_BITS_2: @@ -306,7 +306,7 @@ static rt_err_t lpc_configure(struct rt_serial_device *serial, struct serial_con config.stopBitCount = kUSART_OneStopBit; break; } - + switch (cfg->parity) { case PARITY_ODD: @@ -319,7 +319,7 @@ static rt_err_t lpc_configure(struct rt_serial_device *serial, struct serial_con config.parityMode = kUSART_ParityDisabled; break; } - + config.enableTx = true; config.enableRx = true; @@ -399,7 +399,7 @@ static void uart_isr(struct rt_serial_device *serial) /* UART in mode Receiver -------------------------------------------------*/ rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND); - + /* leave interrupt */ rt_interrupt_leave(); } @@ -416,7 +416,7 @@ int rt_hw_uart_init(void) { struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; int i; - + for (i = 0; i < sizeof(uarts) / sizeof(uarts[0]); i++) { uarts[i].serial->ops = &lpc_uart_ops; diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_uart.h b/bsp/lpc55sxx/Libraries/drivers/drv_uart.h index 603e2a248b..b0dffa8e70 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_uart.h +++ b/bsp/lpc55sxx/Libraries/drivers/drv_uart.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_wdt.c b/bsp/lpc55sxx/Libraries/drivers/drv_wdt.c index 65150a42fb..095c3f0665 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_wdt.c +++ b/bsp/lpc55sxx/Libraries/drivers/drv_wdt.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -43,7 +43,7 @@ static wwdt_config_t WWDT1_config = /* No warning is provided */ .warningValue = 0, /* Set clock frequency. */ - .clockFreq_Hz = 0U, + .clockFreq_Hz = 0U, }; void WDT_BOD_IRQHandler(void) @@ -109,9 +109,9 @@ static rt_err_t lpc_wwdt_init(rt_watchdog_t *wdt) SYSCON->CLOCK_CTRL |= SYSCON_CLOCK_CTRL_FRO1MHZ_CLK_ENA_MASK; /* Set clock divider for WWDT clock source. */ CLOCK_SetClkDiv(kCLOCK_DivWdtClk, 1U, true); - + WWDT_GetDefaultConfig(&WWDT1_config); - + /* * Set watchdog feed time constant to approximately 4s * Set watchdog warning time to 512 ticks after feed time constant @@ -125,7 +125,7 @@ static rt_err_t lpc_wwdt_init(rt_watchdog_t *wdt) WWDT1_config.enableWatchdogReset = true; /* Setup watchdog clock frequency(Hz). */ WWDT1_config.clockFreq_Hz = CLOCK_GetFreq(kCLOCK_WdtClk); - + WWDT_Init(base, &WWDT1_config); lpc_wwdt_close(wdt); @@ -175,11 +175,11 @@ static rt_err_t lpc_wwdt_control(rt_watchdog_t *wdt, int cmd, void *args) case RT_DEVICE_CTRL_WDT_SET_TIMEOUT: { RT_ASSERT(*(uint16_t *)args != 0); - + WWDT1_config.timeoutValue = (CLOCK_GetFreq(kCLOCK_WdtClk) / 4) * (*(uint16_t *)args) * 2; WWDT1_config.warningValue = 512; WWDT1_config.windowValue = (CLOCK_GetFreq(kCLOCK_WdtClk) / 4) * (*(uint16_t *)args) * 2 / 4; - + base->TC = WWDT_TC_COUNT(WWDT1_config.timeoutValue); base->WINDOW = WWDT_WINDOW_WINDOW(WWDT1_config.windowValue); base->WARNINT = WWDT_WARNINT_WARNINT(WWDT1_config.warningValue); diff --git a/bsp/lpc55sxx/Libraries/drivers/drv_wdt.h b/bsp/lpc55sxx/Libraries/drivers/drv_wdt.h index 2517fb81d9..1b34934cf2 100644 --- a/bsp/lpc55sxx/Libraries/drivers/drv_wdt.h +++ b/bsp/lpc55sxx/Libraries/drivers/drv_wdt.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/lpc55sxx/Libraries/template/lpc55s6xxxx/applications/main.c b/bsp/lpc55sxx/Libraries/template/lpc55s6xxxx/applications/main.c index e03a8c6336..ef4393ba39 100644 --- a/bsp/lpc55sxx/Libraries/template/lpc55s6xxxx/applications/main.c +++ b/bsp/lpc55sxx/Libraries/template/lpc55s6xxxx/applications/main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -27,7 +27,7 @@ int main(void) #elif defined(__GNUC__) rt_kprintf("using gcc, version: %d.%d\n", __GNUC__, __GNUC_MINOR__); #endif - + rt_pin_mode(LEDB_PIN, PIN_MODE_OUTPUT); /* Set GPIO as Output */ while (1) { diff --git a/bsp/lpc55sxx/Libraries/template/lpc55s6xxxx/board/board.c b/bsp/lpc55sxx/Libraries/template/lpc55s6xxxx/board/board.c index 4a7fb3f885..42a08bcb34 100644 --- a/bsp/lpc55sxx/Libraries/template/lpc55s6xxxx/board/board.c +++ b/bsp/lpc55sxx/Libraries/template/lpc55s6xxxx/board/board.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -41,15 +41,15 @@ void rt_hw_board_init() { /* Hardware Initialization */ BOARD_InitPins(); - + CLOCK_EnableClock(kCLOCK_InputMux); - + CLOCK_EnableClock(kCLOCK_Gpio0); CLOCK_EnableClock(kCLOCK_Gpio1); - + GPIO_PortInit(GPIO, 0); GPIO_PortInit(GPIO, 1); - + /* NVIC Configuration */ #define NVIC_VTOR_MASK 0x3FFFFF80 #ifdef VECT_TAB_RAM @@ -62,16 +62,16 @@ void rt_hw_board_init() BOARD_BootClockPLL150M(); //BOARD_BootClockFROHF96M(); - - /* init systick 1 systick = 1/(100M / 100) 100��systick = 1s*/ + + /* init systick 1 systick = 1/(100M / 100) 100个systick = 1s*/ SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND); /* set pend exception priority */ NVIC_SetPriority(PendSV_IRQn, (1 << __NVIC_PRIO_BITS) - 1); /*init uart device*/ rt_hw_uart_init(); - -#ifdef RT_USING_CONSOLE + +#ifdef RT_USING_CONSOLE rt_console_set_device(RT_CONSOLE_DEVICE_NAME); #endif diff --git a/bsp/lpc55sxx/Libraries/template/lpc55s6xxxx/board/board.h b/bsp/lpc55sxx/Libraries/template/lpc55s6xxxx/board/board.h index f2fce5c093..1899798c13 100644 --- a/bsp/lpc55sxx/Libraries/template/lpc55s6xxxx/board/board.h +++ b/bsp/lpc55sxx/Libraries/template/lpc55s6xxxx/board/board.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/lpc55sxx/lpc55s69_nxp_evk/applications/main.c b/bsp/lpc55sxx/lpc55s69_nxp_evk/applications/main.c index e0a2e3171f..64689741de 100644 --- a/bsp/lpc55sxx/lpc55s69_nxp_evk/applications/main.c +++ b/bsp/lpc55sxx/lpc55s69_nxp_evk/applications/main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * Copyright (c) 2019-2020, Arm Limited. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 diff --git a/bsp/lpc55sxx/lpc55s69_nxp_evk/board/board.c b/bsp/lpc55sxx/lpc55s69_nxp_evk/board/board.c index b81bc8e616..0b71b508e7 100644 --- a/bsp/lpc55sxx/lpc55s69_nxp_evk/board/board.c +++ b/bsp/lpc55sxx/lpc55s69_nxp_evk/board/board.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * Copyright (c) 2019-2020, Arm Limited. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 @@ -43,15 +43,15 @@ void rt_hw_board_init() { /* Hardware Initialization */ BOARD_InitPins(); - + CLOCK_EnableClock(kCLOCK_InputMux); - + CLOCK_EnableClock(kCLOCK_Gpio0); CLOCK_EnableClock(kCLOCK_Gpio1); - + GPIO_PortInit(GPIO, 0); GPIO_PortInit(GPIO, 1); - + /* NVIC Configuration */ #define NVIC_VTOR_MASK 0x3FFFFF80 #ifdef VECT_TAB_RAM @@ -73,16 +73,16 @@ void rt_hw_board_init() BOARD_BootClockPLL150M(); #endif //BOARD_BootClockFROHF96M(); - - /* init systick 1 systick = 1/(100M / 100) 100��systick = 1s*/ + + /* init systick 1 systick = 1/(100M / 100) 100个systick = 1s*/ SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND); /* set pend exception priority */ NVIC_SetPriority(PendSV_IRQn, (1 << __NVIC_PRIO_BITS) - 1); /*init uart device*/ rt_hw_uart_init(); - -#ifdef RT_USING_CONSOLE + +#ifdef RT_USING_CONSOLE rt_console_set_device(RT_CONSOLE_DEVICE_NAME); #endif diff --git a/bsp/lpc55sxx/lpc55s69_nxp_evk/board/board.h b/bsp/lpc55sxx/lpc55s69_nxp_evk/board/board.h index 32afed7da3..d2deccda88 100644 --- a/bsp/lpc55sxx/lpc55s69_nxp_evk/board/board.h +++ b/bsp/lpc55sxx/lpc55s69_nxp_evk/board/board.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * |
