diff --git a/.github/ALL_BSP_COMPILE.json b/.github/ALL_BSP_COMPILE.json index b129c97bfde..d101263ae30 100644 --- a/.github/ALL_BSP_COMPILE.json +++ b/.github/ALL_BSP_COMPILE.json @@ -85,10 +85,12 @@ "zynqmp-r5-axu4ev", "yichip/yc3122-pos", "yichip/yc3121-pos", + "mm32/mm32f103x", "mm32/mm32f3270-100ask-pitaya", - "mm32f327x", - "mm32f526x", - "mm32l07x", + "mm32/mm32f327x", + "mm32/mm32f526x", + "mm32/mm32l07x", + "mm32/mm32l3xx", "sam7x", "hk32/hk32f030c8-mini", "rm48x50", diff --git a/MAINTAINERS b/MAINTAINERS index beb663e8b34..1d859345e8c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -100,7 +100,7 @@ path: bsp/nxp/mcx/mcxn owners: 下里巴人(hywing) tag: bsp_mm32f526x -path: bsp/mm32f526x +path: bsp/mm32/mm32f526x owners: Huanyi Mai(Maihuanyi) tag: bsp_nrf5x diff --git a/bsp/Copyright_Notice.md b/bsp/Copyright_Notice.md index 59358aa5ffa..96ae208cc4e 100644 --- a/bsp/Copyright_Notice.md +++ b/bsp/Copyright_Notice.md @@ -550,8 +550,8 @@ Copyright: Copyright (c) 2009 - 2013 ARM LIMITED Path: -- bsp/mm32l07x/Libraries/CMSIS -- bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE +- bsp/mm32/mm32l07x/Libraries/CMSIS +- bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE ------ @@ -561,8 +561,8 @@ Copyright: (c) COPYRIGHT 2017 MindMotion Path: -- bsp/mm32l07x/Libraries/MM32L0xx -- bsp/mm32l3xx/Libraries/MM32L3xx +- bsp/mm32/mm32l07x/Libraries/MM32L0xx +- bsp/mm32/mm32l3xx/Libraries/MM32L3xx ### nrf diff --git a/bsp/mm32/README.md b/bsp/mm32/README.md index a62bd4fff7a..0b2e1cee268 100644 --- a/bsp/mm32/README.md +++ b/bsp/mm32/README.md @@ -4,7 +4,16 @@ MM32 系列 BSP 目前支持情况如下表所示: | **BSP 文件夹名称** | **开发板名称** | |:------------------------- |:-------------------------- | +| **F103 系列** | | +| [mm32f103x](mm32f103x) | MM32 MiniBoard 开发板 | | **F3270 系列** | | | [mm32f3270-100ask-pitaya](mm32f3270-100ask-pitaya) | 百问网MM32F3273G8P火龙果开发板 | +| [mm32f327x](mm32f327x) | MM32F3270 EVBoard 开发板 | +| **F526 系列** | | +| [mm32f526x](mm32f526x) | MM32F5265-OB 开发板 | +| **L0 系列** | | +| [mm32l07x](mm32l07x) | MM32 MiniBoard Rev.D2 开发板 | +| **L3 系列** | | +| [mm32l3xx](mm32l3xx) | MM32 MiniBoard Rev.D2 开发板 | -可以通过阅读相应 BSP 下的 README 来快速上手。 \ No newline at end of file +可以通过阅读相应 BSP 下的 README 来快速上手。 diff --git a/bsp/mm32/libraries/HAL_Drivers/SConscript b/bsp/mm32/libraries/HAL_Drivers/SConscript index 9a78e170ec3..b5ec618691d 100644 --- a/bsp/mm32/libraries/HAL_Drivers/SConscript +++ b/bsp/mm32/libraries/HAL_Drivers/SConscript @@ -1,24 +1,21 @@ Import('RTT_ROOT') Import('rtconfig') from building import * +import os cwd = GetCurrentDir() +group = [] # add the general drivers. src = Split(""" """) -if GetDepend(['RT_USING_PIN']): - src += ['drv_gpio.c'] - -if GetDepend(['RT_USING_SERIAL']): - src += ['drv_uart.c'] - -src += ['drv_common.c'] +if GetDepend('SOC_SERIES_MM32F3277') or os.path.basename(Dir('#').abspath).lower().startswith('mm32f3270'): + src += ['drv_common.c'] path = [cwd] -path += [cwd + '/config'] -group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path) +group = group + SConscript(os.path.join(cwd, 'drivers', 'SConscript')) +group = group + DefineGroup('Drivers', src, depend = [''], CPPPATH = path) Return('group') diff --git a/bsp/mm32/libraries/HAL_Drivers/Kconfig b/bsp/mm32/libraries/HAL_Drivers/drivers/Kconfig similarity index 100% rename from bsp/mm32/libraries/HAL_Drivers/Kconfig rename to bsp/mm32/libraries/HAL_Drivers/drivers/Kconfig diff --git a/bsp/mm32/libraries/HAL_Drivers/drivers/SConscript b/bsp/mm32/libraries/HAL_Drivers/drivers/SConscript new file mode 100644 index 00000000000..9c0806ffcce --- /dev/null +++ b/bsp/mm32/libraries/HAL_Drivers/drivers/SConscript @@ -0,0 +1,39 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building import * +import os + +cwd = GetCurrentDir() +group = [] +src = [] + +uart_deps = ['BSP_USING_UART1', 'BSP_USING_UART2', 'BSP_USING_UART3', + 'BSP_USING_UART4', 'BSP_USING_UART5', 'BSP_USING_UART6', + 'BSP_USING_UART7', 'BSP_USING_UART8'] + +if GetDepend(['RT_USING_SERIAL']) or any([GetDepend(uart) for uart in uart_deps]): + src += ['drv_uart.c'] + +gpio_series = ['SOC_SERIES_MM32F103', 'SOC_SERIES_MM32F327', + 'SOC_SERIES_MM32F3277', 'SOC_SERIES_MM32F526', + 'SOC_SERIES_MM32L3'] + +if (GetDepend(['RT_USING_PIN']) or GetDepend(['BSP_USING_GPIO'])) and any([GetDepend(series) for series in gpio_series]): + src += ['drv_gpio.c'] + +if GetDepend(['BSP_USING_ADC']): + src += ['drv_adc.c'] + +if GetDepend(['BSP_USING_OCFLASH']): + src += ['drv_flash.c'] + +CPPPATH = [ + cwd, + os.path.abspath(os.path.join(cwd, '..')), + os.path.join(Dir('#').abspath, 'board'), + os.path.join(cwd, 'config'), +] + +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/mm32/libraries/HAL_Drivers/config/mm32f3277g8p/dma_config.h b/bsp/mm32/libraries/HAL_Drivers/drivers/config/mm32f3277g8p/dma_config.h similarity index 100% rename from bsp/mm32/libraries/HAL_Drivers/config/mm32f3277g8p/dma_config.h rename to bsp/mm32/libraries/HAL_Drivers/drivers/config/mm32f3277g8p/dma_config.h diff --git a/bsp/mm32/libraries/HAL_Drivers/config/mm32f3277g8p/uart_config.h b/bsp/mm32/libraries/HAL_Drivers/drivers/config/mm32f3277g8p/uart_config.h similarity index 100% rename from bsp/mm32/libraries/HAL_Drivers/config/mm32f3277g8p/uart_config.h rename to bsp/mm32/libraries/HAL_Drivers/drivers/config/mm32f3277g8p/uart_config.h diff --git a/bsp/mm32/libraries/HAL_Drivers/drivers/drv_adc.c b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_adc.c new file mode 100644 index 00000000000..b935131023a --- /dev/null +++ b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_adc.c @@ -0,0 +1,327 @@ +/* + * Merged MM32 shared driver file. + * Series-specific branches preserve the original BSP driver implementations. + */ + +#if defined(SOC_SERIES_MM32F526) +/* MM32F526 */ +/* + * Copyright (c) 2022-2025, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2025-01-22 chasel first version + * 2025-02-10 chasel fix adc calibration did not clear flag bits + */ +#include +#include "board.h" +#include "drv_adc.h" +#include +#include +#include +#include + +#if defined(BSP_USING_ADC) + +struct mm32_adc +{ + struct rt_adc_device mm32_adc_device; + ADC_TypeDef *adc_x; + char *name; +}; + +#if defined(BSP_USING_ADC1) +struct mm32_adc mm32_adc1_config = { + .adc_x = ADC1, + .name = "adc1", +}; +#endif /* BSP_USING_ADC1 */ + +#if defined(BSP_USING_ADC2) +struct mm32_adc mm32_adc2_config = { + .adc_x = ADC2, + .name = "adc2", +}; +#endif /* BSP_USING_ADC2 */ + +static void ADCxChannelEnable(ADC_TypeDef* ADCn, rt_uint32_t channel) +{ + ADCn->ADCHS &= ~(1 << channel); + ADCn->ADCHS |= (1 << channel); +} + +static rt_err_t mm32_adc_init(struct rt_adc_device *device, rt_int8_t channel, rt_bool_t enabled) +{ + ADC_InitTypeDef ADC_InitStruct; + ADC_TypeDef *adc_x; + RT_ASSERT(device != RT_NULL); + adc_x = device->parent.user_data; + + if (enabled) { + mm32_msp_adc_init((void *)adc_x); + + ADC_CalibrationConfig(adc_x, 0x1FE); + + ADC_StructInit(&ADC_InitStruct); + ADC_InitStruct.ADC_Resolution = ADC_Resolution_12b; + ADC_InitStruct.ADC_Prescaler = ADC_Prescaler_16; //ADC prescale factor + ADC_InitStruct.ADC_Mode = ADC_Mode_Scan; //Set ADC mode to scan conversion mode + ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right; //AD data right-justified + ADC_Init(adc_x, &ADC_InitStruct); + + ADC_SampleTimeConfig(adc_x, channel, ADC_SampleTime_240_5); + + ADC_ChannelCmd(adc_x, channel, ENABLE); + + ADC_DifferentialConversionConfig(adc_x, ADC_Pseudo_Differential_Conversion_4_5); + + ADC_Cmd(adc_x, ENABLE); + } else { + #if defined(BSP_USING_ADC1) + RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, DISABLE); //disable ADC1 clock + #endif /* BSP_USING_ADC1 */ + + #if defined(BSP_USING_ADC2) + RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2, DISABLE); //disable ADC2 clock + #endif /* BSP_USING_ADC2 */ + + ADC_DeInit(adc_x); + ADC_Cmd(adc_x, DISABLE); + } + + return RT_EOK; +} + +static rt_err_t mm32_get_adc_value(struct rt_adc_device *device, rt_int8_t channel, rt_uint32_t *value) +{ + ADC_TypeDef *adc_x; + RT_ASSERT(device != RT_NULL); + adc_x = device->parent.user_data; + + ADC_SoftwareStartConvCmd(adc_x, ENABLE); + + while(ADC_GetFlagStatus(adc_x, ADC_FLAG_EOC) == 0); + ADC_ClearFlag(adc_x, ADC_FLAG_EOC); + + *value = ADC_GetChannelConvertedValue(adc_x, channel); + return RT_EOK; +} + +static rt_uint8_t mm32_adc_get_resolution(struct rt_adc_device *device) +{ + ADC_TypeDef *adc_x = device->parent.user_data; + + RT_ASSERT(device != RT_NULL); + + switch( ((adc_x->ADCFG)&(0x00000380)) ) + { + case ADC_Resolution_12b: + return 12; + case ADC_Resolution_11b: + return 11; + case ADC_Resolution_10b: + return 10; + case ADC_Resolution_9b: + return 9; + case ADC_Resolution_8b: + return 8; + default: + return 12; + } +} + +static rt_int16_t mm32_adc_get_vref(struct rt_adc_device *device) +{ + if(device == RT_NULL) + return -RT_ERROR; + + return 3300; +} + +static const struct rt_adc_ops mm32_adc_ops = +{ + .enabled = mm32_adc_init, + .convert = mm32_get_adc_value, + .get_resolution = mm32_adc_get_resolution, + .get_vref = mm32_adc_get_vref, +}; + +int rt_hw_adc_init(void) +{ + #if defined(BSP_USING_ADC1) + rt_hw_adc_register(&mm32_adc1_config.mm32_adc_device, mm32_adc1_config.name, &mm32_adc_ops, mm32_adc1_config.adc_x); + #endif /* BSP_USING_ADC1 */ + + #if defined(BSP_USING_ADC2) + rt_hw_adc_register(&mm32_adc2_config.mm32_adc_device, mm32_adc2_config.name, &mm32_adc_ops, mm32_adc2_config.adc_x); + #endif /* BSP_USING_ADC2 */ + + return RT_EOK; +} +INIT_BOARD_EXPORT(rt_hw_adc_init); + +#endif /* BSP_USING_ADC */ + +#elif defined(SOC_SERIES_MM32F327) +/* MM32F327 */ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-03-17 letian first version + */ +#include +#include +#include "drv_adc.h" +#include +#include +#include +#include + +#if defined(BSP_USING_ADC) + +#define ADC_CONFIG_GPIORCC RCC_AHBENR_GPIOA +#define ADC_CONFIG_GPIOX GPIOA +#define ADC_CONFIG_IOX GPIO_Pin_5 | GPIO_Pin_4 + +struct mm32_adc +{ + struct rt_adc_device mm32_adc_device; + ADC_TypeDef *adc_x; + char *name; +}; + +#if defined(BSP_USING_ADC1) +struct mm32_adc mm32_adc1_config = { + .adc_x = ADC1, + .name = "adc1", +}; +#endif /* BSP_USING_ADC1 */ + +#if defined(BSP_USING_ADC2) +struct mm32_adc mm32_adc2_config = { + .adc_x = ADC2, + .name = "adc2", +}; +#endif /* BSP_USING_ADC2 */ + +static void ADCxChannelEnable(ADC_TypeDef* ADCn, ADCCHANNEL_TypeDef channel) +{ + ADCn->CHSR &= ~(1 << channel); + ADCn->CHSR |= (1 << channel); +} + +static rt_err_t mm32_adc_init(struct rt_adc_device *device, rt_uint32_t channel, rt_bool_t enabled) +{ + ADC_InitTypeDef ADC_InitStruct; + ADC_TypeDef *adc_x; + RT_ASSERT(device != RT_NULL); + adc_x = device->parent.user_data; + + #if defined(BSP_USING_ADC1) + RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC1, ENABLE); //Enable ADC1 clock + #endif /* BSP_USING_ADC1 */ + + #if defined(BSP_USING_ADC2) + RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC2, ENABLE); //Enable ADC2 clock + #endif /* BSP_USING_ADC2 */ + + ADC_StructInit(&ADC_InitStruct); + ADC_InitStruct.ADC_Resolution = ADC_Resolution_12b; + ADC_InitStruct.ADC_PRESCARE = ADC_PCLK2_PRESCARE_16; //ADC prescale factor + ADC_InitStruct.ADC_Mode = ADC_Mode_Continue; //Set ADC mode to continuous conversion mode + ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right; //AD data right-justified + ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; + ADC_Init(adc_x, &ADC_InitStruct); + + ADC_RegularChannelConfig(adc_x, channel, 0, ADC_Samctl_239_5); + ADC_Cmd(adc_x, ENABLE); + ADCxChannelEnable(adc_x, channel); + + //config gpio + GPIO_InitTypeDef GPIO_InitStruct; + GPIO_StructInit(&GPIO_InitStruct); + + RCC_AHBPeriphClockCmd(ADC_CONFIG_GPIORCC, ENABLE); + GPIO_InitStruct.GPIO_Pin = ADC_CONFIG_IOX; + GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN; + GPIO_Init(ADC_CONFIG_GPIOX, &GPIO_InitStruct); + + return RT_EOK; +} + +static rt_err_t mm32_get_adc_value(struct rt_adc_device *device, rt_uint32_t channel, rt_uint32_t *value) +{ + ADC_TypeDef *adc_x; + RT_ASSERT(device != RT_NULL); + adc_x = device->parent.user_data; + + ADC_SoftwareStartConvCmd(adc_x, ENABLE); + while(ADC_GetFlagStatus(adc_x, ADC_IT_EOC) == 0); + ADC_ClearFlag(adc_x, ADC_IT_EOC); + *value = ADC_GetConversionValue(adc_x); + return RT_EOK; +} + +static rt_uint8_t mm32_adc_get_resolution(struct rt_adc_device *device) +{ + ADC_TypeDef *adc_x = device->parent.user_data; + + RT_ASSERT(device != RT_NULL); + + switch( ((adc_x->CFGR)&(0x00000380)) ) + { + case ADC_Resolution_12b: + return 12; + case ADC_Resolution_11b: + return 11; + case ADC_Resolution_10b: + return 10; + case ADC_Resolution_9b: + return 9; + case ADC_Resolution_8b: + return 8; + default: + return 0; + } +} + +static rt_int16_t mm32_adc_get_vref(struct rt_adc_device *device) +{ + if(device == RT_NULL) + return -RT_ERROR; + + return 3300; +} + +static const struct rt_adc_ops mm32_adc_ops = +{ + .enabled = mm32_adc_init, + .convert = mm32_get_adc_value, + .get_resolution = mm32_adc_get_resolution, + .get_vref = mm32_adc_get_vref, +}; + +int rt_hw_adc_init(void) +{ + #if defined(BSP_USING_ADC1) + rt_hw_adc_register(&mm32_adc1_config.mm32_adc_device, mm32_adc1_config.name, &mm32_adc_ops, mm32_adc1_config.adc_x); + #endif /* BSP_USING_ADC1 */ + + #if defined(BSP_USING_ADC2) + rt_hw_adc_register(&mm32_adc2_config.mm32_adc_device, mm32_adc2_config.name, &mm32_adc_ops, mm32_adc2_config.adc_x); + #endif /* BSP_USING_ADC2 */ + + return RT_EOK; +} +INIT_BOARD_EXPORT(rt_hw_adc_init); + +#endif /* BSP_USING_ADC */ + +#endif diff --git a/bsp/mm32/libraries/HAL_Drivers/drivers/drv_adc.h b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_adc.h new file mode 100644 index 00000000000..c9f495cee00 --- /dev/null +++ b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_adc.h @@ -0,0 +1,44 @@ +/* + * Merged MM32 shared driver file. + * Series-specific branches preserve the original BSP driver implementations. + */ + +#if defined(SOC_SERIES_MM32F526) +/* MM32F526 */ +/* + * Copyright (c) 2022-2025, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2025-01-22 chasel first version + */ + +#ifndef __DRV_ADC_H__ +#define __DRV_ADC_H__ + +int rt_hw_adc_init(void); + +#endif + +#elif defined(SOC_SERIES_MM32F327) +/* MM32F327 */ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-03-17 letian first version + */ + +#ifndef __DRV_ADC_H__ +#define __DRV_ADC_H__ + +int rt_hw_adc_init(void); + +#endif + +#endif diff --git a/bsp/mm32/libraries/HAL_Drivers/drv_config.h b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_config.h similarity index 100% rename from bsp/mm32/libraries/HAL_Drivers/drv_config.h rename to bsp/mm32/libraries/HAL_Drivers/drivers/drv_config.h diff --git a/bsp/mm32/libraries/HAL_Drivers/drv_dma.h b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_dma.h similarity index 100% rename from bsp/mm32/libraries/HAL_Drivers/drv_dma.h rename to bsp/mm32/libraries/HAL_Drivers/drivers/drv_dma.h diff --git a/bsp/mm32/libraries/HAL_Drivers/drivers/drv_flash.c b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_flash.c new file mode 100644 index 00000000000..5b9b5994960 --- /dev/null +++ b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_flash.c @@ -0,0 +1,302 @@ +/* + * Merged MM32 shared driver file. + * Series-specific branches preserve the original BSP driver implementations. + */ + +#if defined(SOC_SERIES_MM32F526) +/* MM32F526 */ +/* + * Copyright (c) 2022-2025, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2025-01-22 chasel first version + */ + + +#include +#include "hal_flash.h" +#include "drv_flash.h" + +#define OCFLASH_BLK_SIZE 1024 +#define OCFLASH_LEN 1024*256 +#define OCFLASH_ADDR 0x08000000 + +#ifdef OCFLASH_USE_FAL + #include +#endif + +#ifdef OCFLASH_USE_LFS + #include + #define FS_PARTITION_NAME "filesystem" +#endif + +static int init(void) +{ + /* do nothing now */ + return 0; +} + +static int read(long offset, uint8_t *buf, size_t size) +{ + size_t i; + uint32_t addr = OCFLASH_ADDR + offset; + for (i = 0; i < size; i++) + { + *buf = *(__IO uint8_t *)addr; + buf++; + addr++; + } + return size; +} + +static int write(long offset, const uint8_t *buf, size_t size) +{ + size_t i; + uint32_t addr = OCFLASH_ADDR + offset; + + FLASH->KEYR = 0x45670123; + FLASH->KEYR = 0xCDEF89AB; + FLASH->SR = 0x00000001 | 0x00000004 | 0x00000010; + FLASH->CR |= 0x1; + + i = 0; + while (i < size) + { + *(__IO uint16_t *)addr = *buf | *(buf + 1) << 8; + addr = addr + 2; + buf += 2; + i += 2; + } + //Lock flash + FLASH->CR |= 0x00000080; + + return size; +} + +static int erase(long offset, size_t size) +{ + int len; + RT_ASSERT(offset > 0 && offset < OCFLASH_LEN); + int page_addr = (offset >> 10) << 10; + len = size + (offset - page_addr); + while (len > 0) + { + FLASH_Unlock(); + FLASH_ErasePage(page_addr); + FLASH_Lock(); + len -= OCFLASH_BLK_SIZE; + page_addr += OCFLASH_BLK_SIZE; + } + + return size; +} + +#ifdef OCFLASH_USE_FAL +const struct fal_flash_dev mm32_onchip_flash = +{ + .name = "mm32_onchip", + .addr = 0x08000000, + .len = 1024 * 512, + .blk_size = 1024, + .ops = {init, read, write, erase}, + .write_gran = 2 +}; +#endif + +int flash_init(void) +{ +#ifdef OCFLASH_USE_FAL + fal_init(); +#endif +#ifdef OCFLASH_USE_LFS + struct rt_device *flash_dev = fal_mtd_nor_device_create(FS_PARTITION_NAME); + + if (flash_dev == NULL) + { + rt_kprintf("Can't create a mtd device on '%s' partition.\n", FS_PARTITION_NAME); + } + else + { + rt_kprintf("Create a mtd device on the %s partition of flash successful.\n", FS_PARTITION_NAME); + } + + if (rt_device_find(FS_PARTITION_NAME) != RT_NULL) + { + if (dfs_mount(FS_PARTITION_NAME, "/", "lfs", 0, 0) == RT_EOK) + { + rt_kprintf("onchip lfs filesystem mount to '/'\n"); + } + else + { + dfs_mkfs("lfs", FS_PARTITION_NAME); + if (dfs_mount(FS_PARTITION_NAME, "/", "lfs", 0, 0) == RT_EOK) + { + rt_kprintf("onchip lfs filesystem mount to '/' with mkfs\n"); + } + else + { + rt_kprintf("onchip lfs filesystem mount to '/' failed!\n"); + } + } + } + else + { + rt_kprintf("find filesystem portion failed\r\n"); + } +#endif + return 0; +} +INIT_APP_EXPORT(flash_init); + +#elif defined(SOC_SERIES_MM32F327) +/* MM32F327 */ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-05 mazhiyuan first version + */ + + +#include +#include "hal_flash.h" +#include "drv_flash.h" + +#define OCFLASH_BLK_SIZE 1024 +#define OCFLASH_LEN 1024*512 +#define OCFLASH_ADDR 0x08000000 + +#ifdef OCFLASH_USE_FAL + #include +#endif + +#ifdef OCFLASH_USE_LFS + #include + #define FS_PARTITION_NAME "filesystem" +#endif + +static int init(void) +{ + /* do nothing now */ + return 0; +} + +static int read(long offset, uint8_t *buf, size_t size) +{ + size_t i; + uint32_t addr = OCFLASH_ADDR + offset; + for (i = 0; i < size; i++) + { + *buf = *(__IO uint8_t *)addr; + buf++; + addr++; + } + return size; +} + +static int write(long offset, const uint8_t *buf, size_t size) +{ + size_t i; + uint32_t addr = OCFLASH_ADDR + offset; + + FLASH->KEYR = 0x45670123; + FLASH->KEYR = 0xCDEF89AB; + FLASH->SR = 0x00000001 | 0x00000004 | 0x00000010; + FLASH->CR |= 0x1; + + i = 0; + while (i < size) + { + *(__IO uint16_t *)addr = *buf | *(buf + 1) << 8; + addr = addr + 2; + buf += 2; + i += 2; + } + //Lock flash + FLASH->CR |= 0x00000080; + + return size; +} + +static int erase(long offset, size_t size) +{ + int len; + RT_ASSERT(offset > 0 && offset < OCFLASH_LEN); + int page_addr = (offset >> 10) << 10; + len = size + (offset - page_addr); + while (len > 0) + { + FLASH_Unlock(); + FLASH_ErasePage(page_addr); + FLASH_Lock(); + len -= OCFLASH_BLK_SIZE; + page_addr += OCFLASH_BLK_SIZE; + } + + return size; +} + +#ifdef OCFLASH_USE_FAL +const struct fal_flash_dev mm32_onchip_flash = +{ + .name = "mm32_onchip", + .addr = 0x08000000, + .len = 1024 * 512, + .blk_size = 1024, + .ops = {init, read, write, erase}, + .write_gran = 2 +}; +#endif + +int flash_init(void) +{ +#ifdef OCFLASH_USE_FAL + fal_init(); +#endif +#ifdef OCFLASH_USE_LFS + struct rt_device *flash_dev = fal_mtd_nor_device_create(FS_PARTITION_NAME); + + if (flash_dev == NULL) + { + rt_kprintf("Can't create a mtd device on '%s' partition.\n", FS_PARTITION_NAME); + } + else + { + rt_kprintf("Create a mtd device on the %s partition of flash successful.\n", FS_PARTITION_NAME); + } + + if (rt_device_find(FS_PARTITION_NAME) != RT_NULL) + { + if (dfs_mount(FS_PARTITION_NAME, "/", "lfs", 0, 0) == RT_EOK) + { + rt_kprintf("onchip lfs filesystem mount to '/'\n"); + } + else + { + dfs_mkfs("lfs", FS_PARTITION_NAME); + if (dfs_mount(FS_PARTITION_NAME, "/", "lfs", 0, 0) == RT_EOK) + { + rt_kprintf("onchip lfs filesystem mount to '/' with mkfs\n"); + } + else + { + rt_kprintf("onchip lfs filesystem mount to '/' failed!\n"); + } + } + } + else + { + rt_kprintf("find filesystem portion failed\r\n"); + } +#endif + return 0; +} +INIT_APP_EXPORT(flash_init); + +#endif diff --git a/bsp/mm32/libraries/HAL_Drivers/drivers/drv_flash.h b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_flash.h new file mode 100644 index 00000000000..1303c9a9e96 --- /dev/null +++ b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_flash.h @@ -0,0 +1,66 @@ +/* + * Merged MM32 shared driver file. + * Series-specific branches preserve the original BSP driver implementations. + */ + +#if defined(SOC_SERIES_MM32F526) +/* MM32F526 */ +/* + * Copyright (c) 2022-2025, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2025-01-22 chasel first version + */ + +#ifndef __DRV_FLASH_H__ +#define __DRV_FLASH_H__ + +#include + +struct spi_flash_device +{ + struct rt_device flash_device; + struct rt_device_blk_geometry geometry; + struct rt_spi_device *rt_spi_device; + struct rt_mutex lock; + void *user_data; +}; + +int flash_init(void); + +#endif + +#elif defined(SOC_SERIES_MM32F327) +/* MM32F327 */ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-05 mazhiyuan first version + */ + +#ifndef __DRV_FLASH_H__ +#define __DRV_FLASH_H__ + +#include + +struct spi_flash_device +{ + struct rt_device flash_device; + struct rt_device_blk_geometry geometry; + struct rt_spi_device *rt_spi_device; + struct rt_mutex lock; + void *user_data; +}; + +int flash_init(void); + +#endif + +#endif diff --git a/bsp/mm32/libraries/HAL_Drivers/drivers/drv_gpio.c b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_gpio.c new file mode 100644 index 00000000000..d55c2041e9c --- /dev/null +++ b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_gpio.c @@ -0,0 +1,2640 @@ +/* + * Merged MM32 shared driver file. + * Series-specific branches preserve the original BSP driver implementations. + */ + +#if defined(SOC_SERIES_MM32F3277) +/* MM32F3277 */ +/* + * Copyright (c) 2020-2022, CQ 100ask Development Team + * + * Change Logs: + * Date Author Notes + * 2022-05-29 Alen first version + */ + +#include "drv_gpio.h" + +#ifdef RT_USING_PIN + +#define PIN_NUM(port, no) (((((port) & 0xFu) << 4) | ((no) & 0xFu))) +#define PIN_PORT(pin) ((uint8_t)(((pin) >> 4) & 0xFu)) +#define PIN_NO(pin) ((uint8_t)((pin) & 0xFu)) + +#define PIN_STPORT(pin) ((GPIO_Type *)(GPIOA_BASE + (0x400u * PIN_PORT(pin)))) + +#define PIN_STPIN(pin) ((uint16_t)(1u << PIN_NO(pin))) + + +#if defined(GPIOF) +#define __MM32_PORT_MAX 6u +#elif defined(GPIOE) +#define __MM32_PORT_MAX 5u +#elif defined(GPIOD) +#define __MM32_PORT_MAX 4u +#elif defined(GPIOC) +#define __MM32_PORT_MAX 3u +#elif defined(GPIOB) +#define __MM32_PORT_MAX 2u +#elif defined(GPIOA) +#define __MM32_PORT_MAX 1u +#else +#define __MM32_PORT_MAX 0u +#error Unsupported MM32 GPIO peripheral. +#endif + +#define PIN_STPORT_MAX __MM32_PORT_MAX + +#define GET_EXTI_PORT(PORT) + +static const struct pin_irq_map pin_irq_map[] = +{ + {GPIO_PIN_0, EXTI0_IRQn, EXTI_LINE_0, SYSCFG_EXTILine_0}, + {GPIO_PIN_1, EXTI1_IRQn, EXTI_LINE_1, SYSCFG_EXTILine_1}, + {GPIO_PIN_2, EXTI2_IRQn, EXTI_LINE_2, SYSCFG_EXTILine_2}, + {GPIO_PIN_3, EXTI3_IRQn, EXTI_LINE_3, SYSCFG_EXTILine_3}, + {GPIO_PIN_4, EXTI4_IRQn, EXTI_LINE_4, SYSCFG_EXTILine_4}, + {GPIO_PIN_5, EXTI9_5_IRQn, EXTI_LINE_5,SYSCFG_EXTILine_5}, + {GPIO_PIN_6, EXTI9_5_IRQn, EXTI_LINE_6, SYSCFG_EXTILine_6}, + {GPIO_PIN_7, EXTI9_5_IRQn, EXTI_LINE_7, SYSCFG_EXTILine_7}, + {GPIO_PIN_8, EXTI9_5_IRQn, EXTI_LINE_8, SYSCFG_EXTILine_8}, + {GPIO_PIN_9, EXTI9_5_IRQn, EXTI_LINE_9, SYSCFG_EXTILine_9}, + {GPIO_PIN_10, EXTI15_10_IRQn, EXTI_LINE_10, SYSCFG_EXTILine_10}, + {GPIO_PIN_11, EXTI15_10_IRQn, EXTI_LINE_11, SYSCFG_EXTILine_11}, + {GPIO_PIN_12, EXTI15_10_IRQn, EXTI_LINE_12, SYSCFG_EXTILine_12}, + {GPIO_PIN_13, EXTI15_10_IRQn, EXTI_LINE_13, SYSCFG_EXTILine_13}, + {GPIO_PIN_14, EXTI15_10_IRQn, EXTI_LINE_14, SYSCFG_EXTILine_14}, + {GPIO_PIN_15, EXTI15_10_IRQn, EXTI_LINE_15, SYSCFG_EXTILine_15}, +}; + +static 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}, + {-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}, + {-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}, + {-1, 0, RT_NULL, RT_NULL}, +}; +static uint32_t pin_irq_enable_mask = 0; + +#define ITEM_NUM(items) sizeof(items) / sizeof(items[0]) + +static rt_base_t mm32_pin_get(const char *name) +{ + rt_base_t pin = 0; + int hw_port_num, hw_pin_num = 0; + int i, name_len; + + name_len = rt_strlen(name); + + if ((name_len < 4) || (name_len >= 6)) + { + return -RT_EINVAL; + } + if ((name[0] != 'P') || (name[2] != '.')) + { + return -RT_EINVAL; + } + + if ((name[1] >= 'A') && (name[1] <= 'F')) + { + hw_port_num = (int)(name[1] - 'A'); + } + else + { + return -RT_EINVAL; + } + + for (i = 3; i < name_len; i++) + { + hw_pin_num *= 10; + hw_pin_num += name[i] - '0'; + } + + pin = PIN_NUM(hw_port_num, hw_pin_num); + + return pin; +} + +static void mm32_pin_write(rt_device_t dev, rt_base_t pin, rt_uint8_t value) +{ + GPIO_Type *gpio_port; + uint16_t gpio_pin; + + if (PIN_PORT(pin) < PIN_STPORT_MAX) + { + gpio_port = PIN_STPORT(pin); + gpio_pin = PIN_STPIN(pin); + + GPIO_WriteBit(gpio_port, gpio_pin, (rt_uint16_t)value); + } +} + +static rt_ssize_t mm32_pin_read(rt_device_t dev, rt_base_t pin) +{ + GPIO_Type *gpio_port; + uint16_t gpio_pin; + rt_ssize_t value = PIN_LOW; + + if (PIN_PORT(pin) < PIN_STPORT_MAX) + { + gpio_port = PIN_STPORT(pin); + gpio_pin = PIN_STPIN(pin); + value = GPIO_ReadInDataBit(gpio_port, gpio_pin); + } + else + { + return -RT_EINVAL; + } + + return value; +} + +static void mm32_pin_mode(rt_device_t dev, rt_base_t pin, rt_uint8_t mode) +{ + GPIO_Init_Type GPIO_InitStruct; + + if (PIN_PORT(pin) >= PIN_STPORT_MAX) + { + return; + } + + /* Configure GPIO_InitStructure */ + GPIO_InitStruct.Pins = PIN_STPIN(pin); + GPIO_InitStruct.PinMode = GPIO_PinMode_Out_PushPull; + GPIO_InitStruct.Speed = GPIO_Speed_50MHz; + + if (mode == PIN_MODE_OUTPUT) + { + /* output setting */ + GPIO_InitStruct.PinMode = GPIO_PinMode_Out_PushPull; + } + else if (mode == PIN_MODE_INPUT) + { + /* input setting: not pull. */ + GPIO_InitStruct.PinMode = GPIO_PinMode_In_Floating; + } + else if (mode == PIN_MODE_INPUT_PULLUP) + { + /* input setting: pull up. */ + GPIO_InitStruct.PinMode = GPIO_PinMode_In_PullUp; + } + else if (mode == PIN_MODE_INPUT_PULLDOWN) + { + /* input setting: pull down. */ + GPIO_InitStruct.PinMode = GPIO_PinMode_In_PullDown; + } + else if (mode == PIN_MODE_OUTPUT_OD) + { + /* output setting: od. */ + GPIO_InitStruct.PinMode = GPIO_PinMode_Out_OpenDrain; + } + + GPIO_Init(PIN_STPORT(pin), &GPIO_InitStruct); +} + +rt_inline rt_int32_t bit2bitno(rt_uint32_t bit) +{ + rt_uint8_t i; + for (i = 0; i < 32; i++) + { + if ((0x01 << i) == bit) + { + return i; + } + } + return -1; +} + +rt_inline const struct pin_irq_map *get_pin_irq_map(uint32_t pinbit) +{ + rt_int32_t mapindex = bit2bitno(pinbit); + if (mapindex < 0 || mapindex >= ITEM_NUM(pin_irq_map)) + { + return RT_NULL; + } + return &pin_irq_map[mapindex]; +}; + +static rt_err_t mm32_pin_attach_irq(struct rt_device *device, rt_base_t pin, + rt_uint8_t mode, void (*hdr)(void *args), void *args) +{ + rt_base_t level; + rt_int32_t irqindex = -1; + + if (PIN_PORT(pin) >= PIN_STPORT_MAX) + { + return -RT_ENOSYS; + } + + irqindex = bit2bitno(PIN_STPIN(pin)); + if (irqindex < 0 || irqindex >= ITEM_NUM(pin_irq_map)) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + if (pin_irq_hdr_tab[irqindex].pin == pin && + pin_irq_hdr_tab[irqindex].hdr == hdr && + pin_irq_hdr_tab[irqindex].mode == mode && + pin_irq_hdr_tab[irqindex].args == args) + { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + if (pin_irq_hdr_tab[irqindex].pin != -1) + { + rt_hw_interrupt_enable(level); + return -RT_EBUSY; + } + pin_irq_hdr_tab[irqindex].pin = pin; + pin_irq_hdr_tab[irqindex].hdr = hdr; + pin_irq_hdr_tab[irqindex].mode = mode; + pin_irq_hdr_tab[irqindex].args = args; + rt_hw_interrupt_enable(level); + + return RT_EOK; +} + +static rt_err_t mm32_pin_dettach_irq(struct rt_device *device, rt_base_t pin) +{ + rt_base_t level; + rt_int32_t irqindex = -1; + + if (PIN_PORT(pin) >= PIN_STPORT_MAX) + { + return -RT_ENOSYS; + } + + irqindex = bit2bitno(PIN_STPIN(pin)); + if (irqindex < 0 || irqindex >= ITEM_NUM(pin_irq_map)) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + if (pin_irq_hdr_tab[irqindex].pin == -1) + { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + pin_irq_hdr_tab[irqindex].pin = -1; + pin_irq_hdr_tab[irqindex].hdr = RT_NULL; + pin_irq_hdr_tab[irqindex].mode = 0; + pin_irq_hdr_tab[irqindex].args = RT_NULL; + rt_hw_interrupt_enable(level); + + return RT_EOK; +} + +static rt_err_t mm32_pin_irq_enable(struct rt_device *device, rt_base_t pin, + rt_uint8_t enabled) +{ + const struct pin_irq_map *irqmap; + rt_base_t level; + rt_int32_t irqindex = -1; + GPIO_Init_Type GPIO_InitStruct; + + if (PIN_PORT(pin) >= PIN_STPORT_MAX) + { + return -RT_ENOSYS; + } + + if (enabled == PIN_IRQ_ENABLE) + { + irqindex = bit2bitno(PIN_STPIN(pin)); + if (irqindex < 0 || irqindex >= ITEM_NUM(pin_irq_map)) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + + if (pin_irq_hdr_tab[irqindex].pin == -1) + { + rt_hw_interrupt_enable(level); + return -RT_ENOSYS; + } + + irqmap = &pin_irq_map[irqindex]; + + /* Configure GPIO_InitStructure */ + GPIO_InitStruct.Pins = PIN_STPIN(pin); + GPIO_InitStruct.Speed = GPIO_Speed_50MHz; + GPIO_InitStruct.PinMode = GPIO_PinMode_In_PullUp; + GPIO_Init(PIN_STPORT(pin), &GPIO_InitStruct); + + SYSCFG_SetExtIntMux(SYSCFG_EXTIPort_GPIOA + (0 == (rt_uint32_t)PIN_PORT(pin)?0: PIN_PORT(pin)/GPIOB_BASE), irqmap->syscfg_extiline); + switch (pin_irq_hdr_tab[irqindex].mode) + { + case PIN_IRQ_MODE_RISING: + EXTI_SetTriggerIn(EXTI, irqmap->extiline, EXTI_TriggerIn_RisingEdge); + break; + case PIN_IRQ_MODE_FALLING: + EXTI_SetTriggerIn(EXTI, irqmap->extiline, EXTI_TriggerIn_FallingEdge); + break; + case PIN_IRQ_MODE_RISING_FALLING: + EXTI_SetTriggerIn(EXTI, irqmap->extiline, EXTI_TriggerIn_BothEdges); + break; + } + EXTI_EnableLineInterrupt(EXTI, irqmap->extiline, true); + + NVIC_SetPriority(irqmap->irqno, NVIC_EncodePriority(4, 5, 0)); + NVIC_EnableIRQ(irqmap->irqno); + pin_irq_enable_mask |= irqmap->pinbit; + + rt_hw_interrupt_enable(level); + } + else if (enabled == PIN_IRQ_DISABLE) + { + irqmap = get_pin_irq_map(PIN_STPIN(pin)); + if (irqmap == RT_NULL) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + + pin_irq_enable_mask &= ~irqmap->pinbit; + + if ((irqmap->pinbit >= GPIO_PIN_5) && (irqmap->pinbit <= GPIO_PIN_9)) + { + if (!(pin_irq_enable_mask & (GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9))) + { + NVIC_DisableIRQ(irqmap->irqno); + } + } + else if ((irqmap->pinbit >= GPIO_PIN_10) && (irqmap->pinbit <= GPIO_PIN_15)) + { + if (!(pin_irq_enable_mask & (GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15))) + { + NVIC_DisableIRQ(irqmap->irqno); + } + } + else + { + NVIC_DisableIRQ(irqmap->irqno); + } + + rt_hw_interrupt_enable(level); + } + else + { + return -RT_ENOSYS; + } + + return RT_EOK; +} +const static struct rt_pin_ops _mm32_pin_ops = +{ + mm32_pin_mode, + mm32_pin_write, + mm32_pin_read, + mm32_pin_attach_irq, + mm32_pin_dettach_irq, + mm32_pin_irq_enable, + mm32_pin_get, +}; + +rt_inline void pin_irq_hdr(int irqno) +{ + if (pin_irq_hdr_tab[irqno].hdr) + { + pin_irq_hdr_tab[irqno].hdr(pin_irq_hdr_tab[irqno].args); + } +} + +void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) +{ + pin_irq_hdr(bit2bitno(GPIO_Pin)); +} + +#define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__)) +#define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__)) + +void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) +{ + /* EXTI line interrupt detected */ + if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != 0x00u) + { + __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); + HAL_GPIO_EXTI_Callback(GPIO_Pin); + } +} + +void EXTI0_IRQHandler(void) +{ + rt_interrupt_enter(); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); + rt_interrupt_leave(); +} + +void EXTI1_IRQHandler(void) +{ + rt_interrupt_enter(); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1); + rt_interrupt_leave(); +} + +void EXTI2_IRQHandler(void) +{ + rt_interrupt_enter(); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2); + rt_interrupt_leave(); +} + +void EXTI3_IRQHandler(void) +{ + rt_interrupt_enter(); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3); + rt_interrupt_leave(); +} + +void EXTI4_IRQHandler(void) +{ + rt_interrupt_enter(); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4); + rt_interrupt_leave(); +} + +void EXTI9_5_IRQHandler(void) +{ + rt_interrupt_enter(); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_5); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_6); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_7); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9); + rt_interrupt_leave(); +} + +void EXTI15_10_IRQHandler(void) +{ + rt_interrupt_enter(); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_10); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_14); + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_15); + rt_interrupt_leave(); +} + +int rt_hw_pin_init(void) +{ +#if defined(RCC_AHB1_PERIPH_GPIOA) + RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOA, true); +#endif + +#if defined(RCC_AHB1_PERIPH_GPIOB) + RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOB, true); +#endif + +#if defined(RCC_AHB1_PERIPH_GPIOC) + RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOC, true); +#endif + +#if defined(RCC_AHB1_PERIPH_GPIOD) + RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOD, true); +#endif + +#if defined(RCC_AHB1_PERIPH_GPIOE) + RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOE, true); +#endif + +#if defined(RCC_AHB1_PERIPH_GPIOF) + RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOF, true); +#endif + +#if defined(RCC_APB2_PERIPH_SYSCFG) + RCC_EnableAPB2Periphs(RCC_APB2_PERIPH_SYSCFG, true); +#endif + + return rt_device_pin_register("pin", &_mm32_pin_ops, RT_NULL); +} + +#endif /* RT_USING_PIN */ + +#elif defined(SOC_SERIES_MM32F526) +/* MM32F526 */ +/* + * Copyright (c) 2022-2025, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2025-01-22 chasel first version + */ + +#include +#include +#include "drv_gpio.h" +#include +#include +#include +#include +#include +#include + +#define PIN_NUM(port, no) (((((port) & 0xFu) << 4) | ((no) & 0xFu))) +#define PIN_PORT(pin) ((uint8_t)(((pin) >> 4) & 0xFu)) +#define PIN_NO(pin) ((uint8_t)((pin) & 0xFu)) +#define RCC_PIN_PORT(pin) ((uint32_t)(0x01u << (PIN_PORT(pin)))) + +#define PIN_ATPORTSOURCE(pin) ((uint8_t)(((pin) & 0xF0u) >> 4)) +#define PIN_ATPINSOURCE(pin) ((uint8_t)((pin) & 0xFu)) + +#define PIN_ATPORT(pin) ((GPIO_TypeDef *)(GPIOA_BASE + (0x400u * PIN_PORT(pin)))) +#define PIN_ATPIN(pin) ((uint16_t)(1u << PIN_NO(pin))) + +/* mm32f5265 pin port */ +#define __MM32_PORT_MAX 6u + +#define PIN_ATPORT_MAX __MM32_PORT_MAX + +struct pin_irq_map +{ + rt_uint16_t pinbit; + rt_uint32_t irqbit; + enum IRQn irqno; +}; +const struct pin_irq_map mm32_pin_irq_map[] = +{ + {GPIO_Pin_0, EXTI_Line0, EXTI0_IRQn}, + {GPIO_Pin_1, EXTI_Line1, EXTI1_IRQn}, + {GPIO_Pin_2, EXTI_Line2, EXTI2_IRQn}, + {GPIO_Pin_3, EXTI_Line3, EXTI3_IRQn}, + {GPIO_Pin_4, EXTI_Line4, EXTI4_IRQn}, + {GPIO_Pin_5, EXTI_Line5, EXTI9_5_IRQn}, + {GPIO_Pin_6, EXTI_Line6, EXTI9_5_IRQn}, + {GPIO_Pin_7, EXTI_Line7, EXTI9_5_IRQn}, + {GPIO_Pin_8, EXTI_Line8, EXTI9_5_IRQn}, + {GPIO_Pin_9, EXTI_Line9, EXTI9_5_IRQn}, + {GPIO_Pin_10, EXTI_Line10, EXTI15_10_IRQn}, + {GPIO_Pin_11, EXTI_Line11, EXTI15_10_IRQn}, + {GPIO_Pin_12, EXTI_Line12, EXTI15_10_IRQn}, + {GPIO_Pin_13, EXTI_Line13, EXTI15_10_IRQn}, + {GPIO_Pin_14, EXTI_Line14, EXTI15_10_IRQn}, + {GPIO_Pin_15, EXTI_Line15, EXTI15_10_IRQn}, +}; +struct rt_pin_irq_hdr mm32_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}, + {-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}, + {-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}, + {-1, 0, RT_NULL, RT_NULL}, +}; + +#define ITEM_NUM(items) sizeof(items) / sizeof(items[0]) + +static rt_base_t mm32_pin_get(const char *name) +{ + rt_base_t pin = 0; + int hw_port_num, hw_pin_num = 0; + int i, name_len; + + name_len = rt_strlen(name); + + if ((name_len < 4) || (name_len >= 6)) { + return -RT_EINVAL; + } + + if ((name[0] != 'P') || (name[2] != '.')) { + return -RT_EINVAL; + } + + if ((name[1] >= 'A') && (name[1] <= 'Z')) { + hw_port_num = (int)(name[1] - 'A'); + } else { + return -RT_EINVAL; + } + + for (i = 3; i < name_len; i++) { + hw_pin_num *= 10; + hw_pin_num += name[i] - '0'; + } + + pin = PIN_NUM(hw_port_num, hw_pin_num); + + return pin; +} + +void mm32_pin_write(rt_device_t dev, rt_base_t pin, rt_uint8_t value) +{ + GPIO_TypeDef *gpio_port; + + uint16_t gpio_pin; + if (PIN_PORT(pin) < PIN_ATPORT_MAX) { + gpio_port = PIN_ATPORT(pin); + gpio_pin = PIN_ATPIN(pin); + } else { + return; + } + + GPIO_WriteBit(gpio_port, gpio_pin, (PIN_LOW == value) ? Bit_RESET : Bit_SET); +} + +rt_ssize_t mm32_pin_read(rt_device_t dev, rt_base_t pin) +{ + GPIO_TypeDef *gpio_port; + uint16_t gpio_pin; + int value; + + value = PIN_LOW; + + if (PIN_PORT(pin) < PIN_ATPORT_MAX) { + gpio_port = PIN_ATPORT(pin); + gpio_pin = PIN_ATPIN(pin); + value = GPIO_ReadInputDataBit(gpio_port, gpio_pin); + } else { + return -RT_EINVAL; + } + + return value; +} + +void mm32_pin_mode(rt_device_t dev, rt_base_t pin, rt_uint8_t mode) +{ + GPIO_TypeDef *gpio_port; + uint16_t gpio_pin; + GPIO_InitTypeDef GPIO_InitStructure; + + if (PIN_PORT(pin) < PIN_ATPORT_MAX) { + gpio_port = PIN_ATPORT(pin); + gpio_pin = PIN_ATPIN(pin); + } else { + return; + } + + /* GPIO Periph clock enable */ + RCC_AHBPeriphClockCmd(RCC_PIN_PORT(pin), ENABLE); + + /* Configure GPIO_InitStructure */ + GPIO_InitStructure.GPIO_Pin = gpio_pin; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_High; + + if (mode == PIN_MODE_OUTPUT) { + /* output setting */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; + } else if (mode == PIN_MODE_OUTPUT_OD) { + /* output setting: od. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; + } else if (mode == PIN_MODE_INPUT) { + /* input setting: not pull. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_FLOATING; + } else if (mode == PIN_MODE_INPUT_PULLUP) { + /* input setting: pull up. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + } else { + /* input setting:default. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; + } + + GPIO_Init(gpio_port, &GPIO_InitStructure); +} + +rt_inline rt_int32_t bit2bitno(rt_uint32_t bit) +{ + int i; + for (i = 0; i < 32; i++) { + if ((0x01 << i) == bit) { + return i; + } + } + + return -1; +} + +rt_inline const struct pin_irq_map *get_pin_irq_map(uint32_t pinbit) +{ + rt_int32_t mapindex = bit2bitno(pinbit); + if (mapindex < 0 || mapindex >= ITEM_NUM(mm32_pin_irq_map)) { + return RT_NULL; + } + return &mm32_pin_irq_map[mapindex]; +}; + +rt_err_t mm32_pin_attach_irq(struct rt_device *device, rt_base_t pin, + rt_uint8_t mode, void (*hdr)(void *args), void *args) +{ + uint16_t gpio_pin; + rt_base_t level; + rt_int32_t irqindex = -1; + + if (PIN_PORT(pin) < PIN_ATPORT_MAX) { + gpio_pin = PIN_ATPIN(pin); + } else { + return -RT_EINVAL; + } + + irqindex = bit2bitno(gpio_pin); + if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + if (mm32_pin_irq_hdr_tab[irqindex].pin == pin && + mm32_pin_irq_hdr_tab[irqindex].hdr == hdr && + mm32_pin_irq_hdr_tab[irqindex].mode == mode && + mm32_pin_irq_hdr_tab[irqindex].args == args) + { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + + if (mm32_pin_irq_hdr_tab[irqindex].pin != -1) { + rt_hw_interrupt_enable(level); + return -RT_EBUSY; + } + + mm32_pin_irq_hdr_tab[irqindex].pin = pin; + mm32_pin_irq_hdr_tab[irqindex].hdr = hdr; + mm32_pin_irq_hdr_tab[irqindex].mode = mode; + mm32_pin_irq_hdr_tab[irqindex].args = args; + rt_hw_interrupt_enable(level); + + return RT_EOK; +} +rt_err_t mm32_pin_detach_irq(struct rt_device *device, rt_base_t pin) +{ + uint16_t gpio_pin; + rt_base_t level; + rt_int32_t irqindex = -1; + + if (PIN_PORT(pin) < PIN_ATPORT_MAX) { + gpio_pin = PIN_ATPIN(pin); + } else { + return -RT_EINVAL; + } + + irqindex = bit2bitno(gpio_pin); + if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + + mm32_pin_irq_hdr_tab[irqindex].pin = -1; + mm32_pin_irq_hdr_tab[irqindex].hdr = RT_NULL; + mm32_pin_irq_hdr_tab[irqindex].mode = 0; + mm32_pin_irq_hdr_tab[irqindex].args = RT_NULL; + rt_hw_interrupt_enable(level); + + return RT_EOK; +} + +rt_err_t mm32_pin_irq_enable(struct rt_device *device, rt_base_t pin, + rt_uint8_t enabled) +{ + GPIO_TypeDef *gpio_port; + uint16_t gpio_pin; + const struct pin_irq_map *irqmap; + rt_base_t level; + rt_int32_t irqindex = -1; + GPIO_InitTypeDef GPIO_InitStructure; + NVIC_InitTypeDef NVIC_InitStructure; + EXTI_InitTypeDef EXTI_InitStructure; + + if (PIN_PORT(pin) < PIN_ATPORT_MAX) { + gpio_port = PIN_ATPORT(pin); + gpio_pin = PIN_ATPIN(pin); + } else { + return -RT_EINVAL; + } + + if (enabled == PIN_IRQ_ENABLE) + { + irqindex = bit2bitno(gpio_pin); + if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) { + return -RT_ENOSYS; + } + level = rt_hw_interrupt_disable(); + if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) { + rt_hw_interrupt_enable(level); + return -RT_ENOSYS; + } + irqmap = &mm32_pin_irq_map[irqindex]; + + /* GPIO Periph clock enable */ + RCC_AHBPeriphClockCmd(RCC_PIN_PORT(pin), ENABLE); + + /* Configure GPIO_InitStructure */ + GPIO_InitStructure.GPIO_Pin = gpio_pin; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_High; + GPIO_Init(gpio_port, &GPIO_InitStructure); + + NVIC_InitStructure.NVIC_IRQChannel = irqmap->irqno; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init(&NVIC_InitStructure); + + EXTI_InitStructure.EXTI_Line = irqmap->irqbit; + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + switch (mm32_pin_irq_hdr_tab[irqindex].mode) { + case PIN_IRQ_MODE_RISING: + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + break; + case PIN_IRQ_MODE_FALLING: + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; + break; + case PIN_IRQ_MODE_RISING_FALLING: + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; + break; + } + EXTI_InitStructure.EXTI_LineCmd = ENABLE; + EXTI_Init(&EXTI_InitStructure); + rt_hw_interrupt_enable(level); + } else if (enabled == PIN_IRQ_DISABLE) { + irqmap = get_pin_irq_map(gpio_pin); + if (irqmap == RT_NULL) { + return -RT_ENOSYS; + } + EXTI_InitStructure.EXTI_Line = irqmap->irqbit; + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + EXTI_InitStructure.EXTI_LineCmd = DISABLE; + EXTI_Init(&EXTI_InitStructure); + } else { + return -RT_ENOSYS; + } + + return RT_EOK; +} +const static struct rt_pin_ops _mm32_pin_ops = +{ + mm32_pin_mode, + mm32_pin_write, + mm32_pin_read, + mm32_pin_attach_irq, + mm32_pin_detach_irq, + mm32_pin_irq_enable, + mm32_pin_get, +}; + +int rt_hw_pin_init(void) +{ + int result; + + result = rt_device_pin_register("pin", &_mm32_pin_ops, RT_NULL); + return result; +} + +rt_inline void pin_irq_hdr(int irqno) +{ + EXTI_ClearITPendingBit(mm32_pin_irq_map[irqno].irqbit); + if (mm32_pin_irq_hdr_tab[irqno].hdr) + { + mm32_pin_irq_hdr_tab[irqno].hdr(mm32_pin_irq_hdr_tab[irqno].args); + } +} +void EXTI0_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(0); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI1_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(1); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI2_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(2); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI3_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(3); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI4_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(4); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI9_5_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + if (EXTI_GetITStatus(EXTI_Line5) != RESET) + { + pin_irq_hdr(5); + } + if (EXTI_GetITStatus(EXTI_Line6) != RESET) + { + pin_irq_hdr(6); + } + if (EXTI_GetITStatus(EXTI_Line7) != RESET) + { + pin_irq_hdr(7); + } + if (EXTI_GetITStatus(EXTI_Line8) != RESET) + { + pin_irq_hdr(8); + } + if (EXTI_GetITStatus(EXTI_Line9) != RESET) + { + pin_irq_hdr(9); + } + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI15_10_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + if (EXTI_GetITStatus(EXTI_Line10) != RESET) + { + pin_irq_hdr(10); + } + if (EXTI_GetITStatus(EXTI_Line11) != RESET) + { + pin_irq_hdr(11); + } + if (EXTI_GetITStatus(EXTI_Line12) != RESET) + { + pin_irq_hdr(12); + } + if (EXTI_GetITStatus(EXTI_Line13) != RESET) + { + pin_irq_hdr(13); + } + if (EXTI_GetITStatus(EXTI_Line14) != RESET) + { + pin_irq_hdr(14); + } + if (EXTI_GetITStatus(EXTI_Line15) != RESET) + { + pin_irq_hdr(15); + } + /* leave interrupt */ + rt_interrupt_leave(); +} + +#elif defined(SOC_SERIES_MM32F327) +/* MM32F327 */ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-05 mazhiyuan first version + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#define MM32_PIN(index, rcc, gpio, gpio_index) \ + { \ + 0, RCC_##rcc##Periph_GPIO##gpio, GPIO##gpio, GPIO_Pin_##gpio_index, GPIO_PortSourceGPIO##gpio, GPIO_PinSource##gpio_index \ + } +#define MM32_PIN_DEFAULT \ + { \ + -1, 0, 0, 0, 0, 0 \ + } +/* MM32 GPIO driver */ +struct pin_index +{ + int index; + uint32_t rcc; + GPIO_TypeDef *gpio; + uint32_t pin; + uint8_t port_source; + uint8_t pin_source; +}; +static const struct pin_index mm32_pin_map[] = +{ + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, + MM32_PIN(2, AHB, C, 13), + MM32_PIN(3, AHB, C, 14), + MM32_PIN(4, AHB, C, 15), + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, + MM32_PIN(10, AHB, A, 0), + MM32_PIN(11, AHB, A, 1), + MM32_PIN(12, AHB, A, 2), + MM32_PIN(13, AHB, A, 3), + MM32_PIN(14, AHB, A, 4), + MM32_PIN(15, AHB, A, 5), + MM32_PIN(16, AHB, A, 6), + MM32_PIN(17, AHB, A, 7), + MM32_PIN(18, AHB, B, 0), + MM32_PIN(19, AHB, B, 1), + MM32_PIN(20, AHB, B, 2), + MM32_PIN(21, AHB, B, 10), + MM32_PIN(22, AHB, B, 11), + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, + MM32_PIN(25, AHB, B, 12), + MM32_PIN(26, AHB, B, 13), + MM32_PIN(27, AHB, B, 14), + MM32_PIN(28, AHB, B, 15), + MM32_PIN(29, AHB, A, 8), + MM32_PIN(30, AHB, A, 9), + MM32_PIN(31, AHB, A, 10), + MM32_PIN(32, AHB, A, 11), + MM32_PIN(33, AHB, A, 12), + MM32_PIN(34, AHB, A, 13), + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, + MM32_PIN(37, AHB, A, 14), + MM32_PIN(38, AHB, A, 15), + MM32_PIN(39, AHB, B, 3), + MM32_PIN(40, AHB, B, 4), + MM32_PIN(41, AHB, B, 5), + MM32_PIN(42, AHB, B, 6), + MM32_PIN(43, AHB, B, 7), + MM32_PIN_DEFAULT, + MM32_PIN(45, AHB, B, 8), + MM32_PIN(46, AHB, B, 9), + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, +}; + +struct pin_irq_map +{ + rt_uint16_t pinbit; + rt_uint32_t irqbit; + enum IRQn irqno; +}; +const struct pin_irq_map mm32_pin_irq_map[] = +{ + {GPIO_Pin_0, EXTI_Line0, EXTI0_IRQn}, + {GPIO_Pin_1, EXTI_Line1, EXTI1_IRQn}, + {GPIO_Pin_2, EXTI_Line2, EXTI2_IRQn}, + {GPIO_Pin_3, EXTI_Line3, EXTI3_IRQn}, + {GPIO_Pin_4, EXTI_Line4, EXTI4_IRQn}, + {GPIO_Pin_5, EXTI_Line5, EXTI9_5_IRQn}, + {GPIO_Pin_6, EXTI_Line6, EXTI9_5_IRQn}, + {GPIO_Pin_7, EXTI_Line7, EXTI9_5_IRQn}, + {GPIO_Pin_8, EXTI_Line8, EXTI9_5_IRQn}, + {GPIO_Pin_9, EXTI_Line9, EXTI9_5_IRQn}, + {GPIO_Pin_10, EXTI_Line10, EXTI15_10_IRQn}, + {GPIO_Pin_11, EXTI_Line11, EXTI15_10_IRQn}, + {GPIO_Pin_12, EXTI_Line12, EXTI15_10_IRQn}, + {GPIO_Pin_13, EXTI_Line13, EXTI15_10_IRQn}, + {GPIO_Pin_14, EXTI_Line14, EXTI15_10_IRQn}, + {GPIO_Pin_15, EXTI_Line15, EXTI15_10_IRQn}, +}; +struct rt_pin_irq_hdr mm32_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}, + {-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}, + {-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}, + {-1, 0, RT_NULL, RT_NULL}, +}; +#define ITEM_NUM(items) sizeof(items) / sizeof(items[0]) +const struct pin_index *get_pin(uint8_t pin) +{ + const struct pin_index *index; + + if (pin < ITEM_NUM(mm32_pin_map)) + { + index = &mm32_pin_map[pin]; + if (index->gpio == 0) + index = RT_NULL; + } + else + { + index = RT_NULL; + } + + return index; +}; + +void mm32_pin_write(rt_device_t dev, rt_base_t pin, rt_uint8_t value) +{ + const struct pin_index *index; + + index = get_pin(pin); + if (index == RT_NULL) + { + return; + } + if (value == PIN_LOW) + { + GPIO_ResetBits(index->gpio, index->pin); + } + else + { + + GPIO_SetBits(index->gpio, index->pin); + } +} + +rt_ssize_t mm32_pin_read(rt_device_t dev, rt_base_t pin) +{ + rt_ssize_t value; + const struct pin_index *index; + + value = PIN_LOW; + index = get_pin(pin); + if (index == RT_NULL) + { + return -RT_EINVAL; + } + if (GPIO_ReadInputDataBit(index->gpio, index->pin) == Bit_RESET) + { + value = PIN_LOW; + } + else + { + value = PIN_HIGH; + } + return value; +} + +void mm32_pin_mode(rt_device_t dev, rt_base_t pin, rt_uint8_t mode) +{ + const struct pin_index *index; + GPIO_InitTypeDef GPIO_InitStructure; + + index = get_pin(pin); + if (index == RT_NULL) + { + return; + } + /* GPIO Periph clock enable */ + RCC_AHBPeriphClockCmd(index->rcc, ENABLE); + /* Configure GPIO_InitStructure */ + GPIO_InitStructure.GPIO_Pin = index->pin; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + if (mode == PIN_MODE_OUTPUT) + { + /* output setting */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; + } + else if (mode == PIN_MODE_OUTPUT_OD) + { + /* output setting: od. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; + } + else if (mode == PIN_MODE_INPUT) + { + /* input setting: not pull. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; + } + else if (mode == PIN_MODE_INPUT_PULLUP) + { + /* input setting: pull up. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + } + else + { + /* input setting:default. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; + } + GPIO_Init(index->gpio, &GPIO_InitStructure); +} +rt_inline rt_int32_t bit2bitno(rt_uint32_t bit) +{ + int i; + for (i = 0; i < 32; i++) + { + if ((0x01 << i) == bit) + { + return i; + } + } + return -1; +} +rt_inline const struct pin_irq_map *get_pin_irq_map(uint32_t pinbit) +{ + rt_int32_t mapindex = bit2bitno(pinbit); + if (mapindex < 0 || mapindex >= ITEM_NUM(mm32_pin_irq_map)) + { + return RT_NULL; + } + return &mm32_pin_irq_map[mapindex]; +}; +rt_err_t mm32_pin_attach_irq(struct rt_device *device, rt_base_t pin, + rt_uint8_t mode, void (*hdr)(void *args), void *args) +{ + const struct pin_index *index; + rt_base_t level; + rt_int32_t irqindex = -1; + + index = get_pin(pin); + if (index == RT_NULL) + { + return -RT_ENOSYS; + } + irqindex = bit2bitno(index->pin); + if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + if (mm32_pin_irq_hdr_tab[irqindex].pin == pin && + mm32_pin_irq_hdr_tab[irqindex].hdr == hdr && + mm32_pin_irq_hdr_tab[irqindex].mode == mode && + mm32_pin_irq_hdr_tab[irqindex].args == args) + { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + if (mm32_pin_irq_hdr_tab[irqindex].pin != -1) + { + rt_hw_interrupt_enable(level); + return -RT_EBUSY; + } + mm32_pin_irq_hdr_tab[irqindex].pin = pin; + mm32_pin_irq_hdr_tab[irqindex].hdr = hdr; + mm32_pin_irq_hdr_tab[irqindex].mode = mode; + mm32_pin_irq_hdr_tab[irqindex].args = args; + rt_hw_interrupt_enable(level); + + return RT_EOK; +} +rt_err_t mm32_pin_detach_irq(struct rt_device *device, rt_base_t pin) +{ + const struct pin_index *index; + rt_base_t level; + rt_int32_t irqindex = -1; + + index = get_pin(pin); + if (index == RT_NULL) + { + return -RT_ENOSYS; + } + irqindex = bit2bitno(index->pin); + if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) + { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + mm32_pin_irq_hdr_tab[irqindex].pin = -1; + mm32_pin_irq_hdr_tab[irqindex].hdr = RT_NULL; + mm32_pin_irq_hdr_tab[irqindex].mode = 0; + mm32_pin_irq_hdr_tab[irqindex].args = RT_NULL; + rt_hw_interrupt_enable(level); + + return RT_EOK; +} +rt_err_t mm32_pin_irq_enable(struct rt_device *device, rt_base_t pin, + rt_uint8_t enabled) +{ + const struct pin_index *index; + const struct pin_irq_map *irqmap; + rt_base_t level; + rt_int32_t irqindex = -1; + GPIO_InitTypeDef GPIO_InitStructure; + NVIC_InitTypeDef NVIC_InitStructure; + EXTI_InitTypeDef EXTI_InitStructure; + + index = get_pin(pin); + if (index == RT_NULL) + { + return -RT_ENOSYS; + } + if (enabled == PIN_IRQ_ENABLE) + { + irqindex = bit2bitno(index->pin); + if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) + { + return -RT_ENOSYS; + } + level = rt_hw_interrupt_disable(); + if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) + { + rt_hw_interrupt_enable(level); + return -RT_ENOSYS; + } + irqmap = &mm32_pin_irq_map[irqindex]; + /* GPIO Periph clock enable */ + RCC_APB2PeriphClockCmd(index->rcc, ENABLE); + /* Configure GPIO_InitStructure */ + GPIO_InitStructure.GPIO_Pin = index->pin; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(index->gpio, &GPIO_InitStructure); + + NVIC_InitStructure.NVIC_IRQChannel = irqmap->irqno; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init(&NVIC_InitStructure); + + EXTI_InitStructure.EXTI_Line = irqmap->irqbit; + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + switch (mm32_pin_irq_hdr_tab[irqindex].mode) + { + case PIN_IRQ_MODE_RISING: + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + break; + case PIN_IRQ_MODE_FALLING: + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; + break; + case PIN_IRQ_MODE_RISING_FALLING: + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; + break; + } + EXTI_InitStructure.EXTI_LineCmd = ENABLE; + EXTI_Init(&EXTI_InitStructure); + rt_hw_interrupt_enable(level); + } + else if (enabled == PIN_IRQ_DISABLE) + { + irqmap = get_pin_irq_map(index->pin); + if (irqmap == RT_NULL) + { + return -RT_ENOSYS; + } + EXTI_InitStructure.EXTI_Line = irqmap->irqbit; + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + EXTI_InitStructure.EXTI_LineCmd = DISABLE; + EXTI_Init(&EXTI_InitStructure); + } + else + { + return -RT_ENOSYS; + } + + return RT_EOK; +} +const static struct rt_pin_ops _mm32_pin_ops = +{ + mm32_pin_mode, + mm32_pin_write, + mm32_pin_read, + mm32_pin_attach_irq, + mm32_pin_detach_irq, + mm32_pin_irq_enable, + RT_NULL, +}; + +int rt_hw_pin_init(void) +{ + int result; + + result = rt_device_pin_register("pin", &_mm32_pin_ops, RT_NULL); + return result; +} +INIT_BOARD_EXPORT(rt_hw_pin_init); + +rt_inline void pin_irq_hdr(int irqno) +{ + EXTI_ClearITPendingBit(mm32_pin_irq_map[irqno].irqbit); + if (mm32_pin_irq_hdr_tab[irqno].hdr) + { + mm32_pin_irq_hdr_tab[irqno].hdr(mm32_pin_irq_hdr_tab[irqno].args); + } +} +void EXTI0_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(0); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI1_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(1); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI2_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(2); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI3_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(3); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI4_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(4); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI9_5_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + if (EXTI_GetITStatus(EXTI_Line5) != RESET) + { + pin_irq_hdr(5); + } + if (EXTI_GetITStatus(EXTI_Line6) != RESET) + { + pin_irq_hdr(6); + } + if (EXTI_GetITStatus(EXTI_Line7) != RESET) + { + pin_irq_hdr(7); + } + if (EXTI_GetITStatus(EXTI_Line8) != RESET) + { + pin_irq_hdr(8); + } + if (EXTI_GetITStatus(EXTI_Line9) != RESET) + { + pin_irq_hdr(9); + } + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI15_10_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + if (EXTI_GetITStatus(EXTI_Line10) != RESET) + { + pin_irq_hdr(10); + } + if (EXTI_GetITStatus(EXTI_Line11) != RESET) + { + pin_irq_hdr(11); + } + if (EXTI_GetITStatus(EXTI_Line12) != RESET) + { + pin_irq_hdr(12); + } + if (EXTI_GetITStatus(EXTI_Line13) != RESET) + { + pin_irq_hdr(13); + } + if (EXTI_GetITStatus(EXTI_Line14) != RESET) + { + pin_irq_hdr(14); + } + if (EXTI_GetITStatus(EXTI_Line15) != RESET) + { + pin_irq_hdr(15); + } + /* leave interrupt */ + rt_interrupt_leave(); +} + +#elif defined(SOC_SERIES_MM32F103) +/* MM32F103 */ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-04 stackRyan first version + */ +#include +#include +#include +#include + +#define MM32_PIN(index, rcc, gpio, gpio_index) { 0, RCC_##rcc##Periph_GPIO##gpio, GPIO##gpio, GPIO_Pin_##gpio_index, GPIO_PortSourceGPIO##gpio, GPIO_PinSource##gpio_index} +#define MM32_PIN_DEFAULT {-1, 0, 0, 0, 0, 0} +/* MM32 GPIO driver */ +struct pin_index +{ + int index; + uint32_t rcc; + GPIO_TypeDef *gpio; + uint32_t pin; + uint8_t port_source; + uint8_t pin_source; +}; +static const struct pin_index mm32_pin_map[] = +{ + MM32_PIN_DEFAULT, + MM32_PIN(1, APB2, A, 0), + MM32_PIN(2, APB2, A, 1), + MM32_PIN(3, APB2, A, 2), + MM32_PIN(4, APB2, A, 3), + MM32_PIN(5, APB2, A, 4), + MM32_PIN(6, APB2, A, 5), + MM32_PIN(7, APB2, A, 6), + MM32_PIN(8, APB2, A, 7), + MM32_PIN(9, APB2, A, 8), + MM32_PIN(10, APB2, A, 9), + MM32_PIN(11, APB2, A, 10), + MM32_PIN(12, APB2, A, 11), + MM32_PIN(13, APB2, A, 12), + MM32_PIN(14, APB2, A, 13), + MM32_PIN(15, APB2, A, 14), + MM32_PIN(16, APB2, A, 15), + MM32_PIN(17, APB2, B, 0), + MM32_PIN(18, APB2, B, 1), + MM32_PIN(19, APB2, B, 2), + MM32_PIN(20, APB2, B, 3), + MM32_PIN(21, APB2, B, 4), + MM32_PIN(22, APB2, B, 5), + MM32_PIN(23, APB2, B, 6), + MM32_PIN(24, APB2, B, 7), + MM32_PIN(25, APB2, B, 8), + MM32_PIN(26, APB2, B, 9), + MM32_PIN(27, APB2, B, 10), + MM32_PIN(28, APB2, B, 11), + MM32_PIN(29, APB2, B, 12), + MM32_PIN(30, APB2, B, 13), + MM32_PIN(31, APB2, B, 14), + MM32_PIN(32, APB2, B, 15), + MM32_PIN(33, APB2, C, 0), + MM32_PIN(34, APB2, C, 1), + MM32_PIN(35, APB2, C, 2), + MM32_PIN(36, APB2, C, 3), + MM32_PIN(37, APB2, C, 4), + MM32_PIN(38, APB2, C, 5), + MM32_PIN(39, APB2, C, 6), + MM32_PIN(40, APB2, C, 7), + MM32_PIN(41, APB2, C, 8), + MM32_PIN(42, APB2, C, 9), + MM32_PIN(43, APB2, C, 10), + MM32_PIN(44, APB2, C, 11), + MM32_PIN(45, APB2, C, 12), + MM32_PIN(46, APB2, C, 13), + MM32_PIN(47, APB2, C, 14), + MM32_PIN(48, APB2, C, 15), + MM32_PIN(49, APB2, D, 0), + MM32_PIN(50, APB2, D, 1), + MM32_PIN(51, APB2, D, 2), + MM32_PIN(52, APB2, D, 3), + MM32_PIN(53, APB2, D, 4), + MM32_PIN(54, APB2, D, 5), + MM32_PIN(55, APB2, D, 6), + MM32_PIN(56, APB2, D, 7), + MM32_PIN(57, APB2, D, 8), + MM32_PIN(58, APB2, D, 9), + MM32_PIN(59, APB2, D, 10), + MM32_PIN(60, APB2, D, 11), + MM32_PIN(61, APB2, D, 12), + MM32_PIN(62, APB2, D, 13), + MM32_PIN(63, APB2, D, 14), + MM32_PIN(64, APB2, D, 15), +}; + +struct pin_irq_map +{ + rt_uint16_t pinbit; + rt_uint32_t irqbit; + enum IRQn irqno; +}; +const struct pin_irq_map mm32_pin_irq_map[] = +{ + {GPIO_Pin_0, EXTI_Line0, EXTI0_IRQn }, + {GPIO_Pin_1, EXTI_Line1, EXTI1_IRQn }, + {GPIO_Pin_2, EXTI_Line2, EXTI2_IRQn }, + {GPIO_Pin_3, EXTI_Line3, EXTI3_IRQn }, + {GPIO_Pin_4, EXTI_Line4, EXTI4_IRQn }, + {GPIO_Pin_5, EXTI_Line5, EXTI9_5_IRQn }, + {GPIO_Pin_6, EXTI_Line6, EXTI9_5_IRQn }, + {GPIO_Pin_7, EXTI_Line7, EXTI9_5_IRQn }, + {GPIO_Pin_8, EXTI_Line8, EXTI9_5_IRQn }, + {GPIO_Pin_9, EXTI_Line9, EXTI9_5_IRQn }, + {GPIO_Pin_10, EXTI_Line10, EXTI15_10_IRQn}, + {GPIO_Pin_11, EXTI_Line11, EXTI15_10_IRQn}, + {GPIO_Pin_12, EXTI_Line12, EXTI15_10_IRQn}, + {GPIO_Pin_13, EXTI_Line13, EXTI15_10_IRQn}, + {GPIO_Pin_14, EXTI_Line14, EXTI15_10_IRQn}, + {GPIO_Pin_15, EXTI_Line15, EXTI15_10_IRQn}, +}; +struct rt_pin_irq_hdr mm32_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}, + {-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}, + {-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}, + {-1, 0, RT_NULL, RT_NULL}, +}; +#define ITEM_NUM(items) sizeof(items) / sizeof(items[0]) +const struct pin_index *get_pin(uint8_t pin) +{ + const struct pin_index *index; + + if (pin < ITEM_NUM(mm32_pin_map)) + { + index = &mm32_pin_map[pin]; + if (index->gpio == 0) + index = RT_NULL; + } + else + { + index = RT_NULL; + } + + return index; +}; + +void mm32_pin_write(rt_device_t dev, rt_base_t pin, rt_uint8_t value) +{ + const struct pin_index *index; + + index = get_pin(pin); + if (index == RT_NULL) + { + return; + } + if (value == PIN_LOW) + { + GPIO_ResetBits(index->gpio, index->pin); + } + else + { + GPIO_SetBits(index->gpio, index->pin); + } +} + +rt_ssize_t mm32_pin_read(rt_device_t dev, rt_base_t pin) +{ + rt_ssize_t value; + const struct pin_index *index; + + value = PIN_LOW; + index = get_pin(pin); + if (index == RT_NULL) + { + return -RT_EINVAL; + } + if (GPIO_ReadInputDataBit(index->gpio, index->pin) == Bit_RESET) + { + value = PIN_LOW; + } + else + { + value = PIN_HIGH; + } + return value; +} + +void mm32_pin_mode(rt_device_t dev, rt_base_t pin, rt_uint8_t mode) +{ + const struct pin_index *index; + GPIO_InitTypeDef GPIO_InitStructure; + + index = get_pin(pin); + if (index == RT_NULL) + { + return; + } + /* GPIO Periph clock enable */ + RCC_APB2PeriphClockCmd(index->rcc, ENABLE); + /* Configure GPIO_InitStructure */ + GPIO_InitStructure.GPIO_Pin = index->pin; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + if (mode == PIN_MODE_OUTPUT) + { + /* output setting */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; + } + else if (mode == PIN_MODE_OUTPUT_OD) + { + /* output setting: od. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; + } + else if (mode == PIN_MODE_INPUT) + { + /* input setting: not pull. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; + } + else if (mode == PIN_MODE_INPUT_PULLUP) + { + /* input setting: pull up. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + } + else + { + /* input setting:default. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; + } + GPIO_Init( index->gpio, &GPIO_InitStructure); +} +rt_inline rt_int32_t bit2bitno(rt_uint32_t bit) +{ + int i; + for (i = 0; i < 32; i++) + { + if ((0x01 << i) == bit) + { + return i; + } + } + return -1; +} +rt_inline const struct pin_irq_map *get_pin_irq_map(uint32_t pinbit) +{ + rt_int32_t mapindex = bit2bitno(pinbit); + if (mapindex < 0 || mapindex >= ITEM_NUM(mm32_pin_irq_map)) + { + return RT_NULL; + } + return &mm32_pin_irq_map[mapindex]; +}; +rt_err_t mm32_pin_attach_irq(struct rt_device *device, rt_base_t pin, + rt_uint8_t mode, void (*hdr)(void *args), void *args) +{ + const struct pin_index *index; + rt_base_t level; + rt_int32_t irqindex = -1; + + index = get_pin(pin); + if (index == RT_NULL) + { + return -RT_ENOSYS; + } + irqindex = bit2bitno(index->pin); + if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + if (mm32_pin_irq_hdr_tab[irqindex].pin == pin && + mm32_pin_irq_hdr_tab[irqindex].hdr == hdr && + mm32_pin_irq_hdr_tab[irqindex].mode == mode && + mm32_pin_irq_hdr_tab[irqindex].args == args + ) + { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + if (mm32_pin_irq_hdr_tab[irqindex].pin != -1) + { + rt_hw_interrupt_enable(level); + return -RT_EBUSY; + } + mm32_pin_irq_hdr_tab[irqindex].pin = pin; + mm32_pin_irq_hdr_tab[irqindex].hdr = hdr; + mm32_pin_irq_hdr_tab[irqindex].mode = mode; + mm32_pin_irq_hdr_tab[irqindex].args = args; + rt_hw_interrupt_enable(level); + + return RT_EOK; +} +rt_err_t mm32_pin_detach_irq(struct rt_device *device, rt_base_t pin) +{ + const struct pin_index *index; + rt_base_t level; + rt_int32_t irqindex = -1; + + index = get_pin(pin); + if (index == RT_NULL) + { + return -RT_ENOSYS; + } + irqindex = bit2bitno(index->pin); + if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) + { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + mm32_pin_irq_hdr_tab[irqindex].pin = -1; + mm32_pin_irq_hdr_tab[irqindex].hdr = RT_NULL; + mm32_pin_irq_hdr_tab[irqindex].mode = 0; + mm32_pin_irq_hdr_tab[irqindex].args = RT_NULL; + rt_hw_interrupt_enable(level); + + return RT_EOK; +} +rt_err_t mm32_pin_irq_enable(struct rt_device *device, rt_base_t pin, + rt_uint8_t enabled) +{ + const struct pin_index *index; + const struct pin_irq_map *irqmap; + rt_base_t level; + rt_int32_t irqindex = -1; + GPIO_InitTypeDef GPIO_InitStructure; + NVIC_InitTypeDef NVIC_InitStructure; + EXTI_InitTypeDef EXTI_InitStructure; + + index = get_pin(pin); + if (index == RT_NULL) + { + return -RT_ENOSYS; + } + if (enabled == PIN_IRQ_ENABLE) + { + irqindex = bit2bitno(index->pin); + if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) + { + return -RT_ENOSYS; + } + level = rt_hw_interrupt_disable(); + if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) + { + rt_hw_interrupt_enable(level); + return -RT_ENOSYS; + } + irqmap = &mm32_pin_irq_map[irqindex]; + /* GPIO Periph clock enable */ + RCC_APB2PeriphClockCmd(index->rcc, ENABLE); + /* Configure GPIO_InitStructure */ + GPIO_InitStructure.GPIO_Pin = index->pin; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(index->gpio, &GPIO_InitStructure); + + NVIC_InitStructure.NVIC_IRQChannel = irqmap->irqno; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init(&NVIC_InitStructure); + + GPIO_EXTILineConfig(index->port_source, index->pin_source); + EXTI_InitStructure.EXTI_Line = irqmap->irqbit; + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + switch (mm32_pin_irq_hdr_tab[irqindex].mode) + { + case PIN_IRQ_MODE_RISING: + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + break; + case PIN_IRQ_MODE_FALLING: + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; + break; + case PIN_IRQ_MODE_RISING_FALLING: + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; + break; + } + EXTI_InitStructure.EXTI_LineCmd = ENABLE; + EXTI_Init(&EXTI_InitStructure); + rt_hw_interrupt_enable(level); + } + else if (enabled == PIN_IRQ_DISABLE) + { + irqmap = get_pin_irq_map(index->pin); + if (irqmap == RT_NULL) + { + return -RT_ENOSYS; + } + EXTI_InitStructure.EXTI_Line = irqmap->irqbit; + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + EXTI_InitStructure.EXTI_LineCmd = DISABLE; + EXTI_Init(&EXTI_InitStructure); + } + else + { + return -RT_ENOSYS; + } + + return RT_EOK; +} +const static struct rt_pin_ops _mm32_pin_ops = +{ + mm32_pin_mode, + mm32_pin_write, + mm32_pin_read, + mm32_pin_attach_irq, + mm32_pin_detach_irq, + mm32_pin_irq_enable, + RT_NULL, +}; + +int rt_hw_pin_init(void) +{ + int result; + + result = rt_device_pin_register("pin", &_mm32_pin_ops, RT_NULL); + return result; +} +INIT_BOARD_EXPORT(rt_hw_pin_init); + +rt_inline void pin_irq_hdr(int irqno) +{ + EXTI_ClearITPendingBit(mm32_pin_irq_map[irqno].irqbit); + if (mm32_pin_irq_hdr_tab[irqno].hdr) + { + mm32_pin_irq_hdr_tab[irqno].hdr(mm32_pin_irq_hdr_tab[irqno].args); + } +} +void EXTI0_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(0); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI1_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(1); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI2_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(2); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI3_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(3); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI4_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(4); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI9_5_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + if (EXTI_GetITStatus(EXTI_Line5) != RESET) + { + pin_irq_hdr(5); + } + if (EXTI_GetITStatus(EXTI_Line6) != RESET) + { + pin_irq_hdr(6); + } + if (EXTI_GetITStatus(EXTI_Line7) != RESET) + { + pin_irq_hdr(7); + } + if (EXTI_GetITStatus(EXTI_Line8) != RESET) + { + pin_irq_hdr(8); + } + if (EXTI_GetITStatus(EXTI_Line9) != RESET) + { + pin_irq_hdr(9); + } + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI15_10_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + if (EXTI_GetITStatus(EXTI_Line10) != RESET) + { + pin_irq_hdr(10); + } + if (EXTI_GetITStatus(EXTI_Line11) != RESET) + { + pin_irq_hdr(11); + } + if (EXTI_GetITStatus(EXTI_Line12) != RESET) + { + pin_irq_hdr(12); + } + if (EXTI_GetITStatus(EXTI_Line13) != RESET) + { + pin_irq_hdr(13); + } + if (EXTI_GetITStatus(EXTI_Line14) != RESET) + { + pin_irq_hdr(14); + } + if (EXTI_GetITStatus(EXTI_Line15) != RESET) + { + pin_irq_hdr(15); + } + /* leave interrupt */ + rt_interrupt_leave(); +} + +#elif defined(SOC_SERIES_MM32L3) +/* MM32L3 */ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2019-04-02 henryhuang the first version + */ +#include +#include +#include +#include + +#define MM32_PIN(index, rcc, gpio, gpio_index) { 0, RCC_##rcc##Periph_GPIO##gpio, GPIO##gpio, GPIO_Pin_##gpio_index, GPIO_PortSourceGPIO##gpio, GPIO_PinSource##gpio_index} +#define MM32_PIN_DEFAULT {-1, 0, 0, 0, 0, 0} +/* MM32 GPIO driver */ +struct pin_index +{ + int index; + uint32_t rcc; + GPIO_TypeDef *gpio; + uint32_t pin; + uint8_t port_source; + uint8_t pin_source; +}; +static const struct pin_index mm32_pin_map[] = +{ + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, + MM32_PIN(2, APB2, C, 13), + MM32_PIN(3, APB2, C, 14), + MM32_PIN(4, APB2, C, 15), + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, + MM32_PIN(10, APB2, A, 0), + MM32_PIN(11, APB2, A, 1), + MM32_PIN(12, APB2, A, 2), + MM32_PIN(13, APB2, A, 3), + MM32_PIN(14, APB2, A, 4), + MM32_PIN(15, APB2, A, 5), + MM32_PIN(16, APB2, A, 6), + MM32_PIN(17, APB2, A, 7), + MM32_PIN(18, APB2, B, 0), + MM32_PIN(19, APB2, B, 1), + MM32_PIN(20, APB2, B, 2), + MM32_PIN(21, APB2, B, 10), + MM32_PIN(22, APB2, B, 11), + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, + MM32_PIN(25, APB2, B, 12), + MM32_PIN(26, APB2, B, 13), + MM32_PIN(27, APB2, B, 14), + MM32_PIN(28, APB2, B, 15), + MM32_PIN(29, APB2, A, 8), + MM32_PIN(30, APB2, A, 9), + MM32_PIN(31, APB2, A, 10), + MM32_PIN(32, APB2, A, 11), + MM32_PIN(33, APB2, A, 12), + MM32_PIN(34, APB2, A, 13), + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, + MM32_PIN(37, APB2, A, 14), + MM32_PIN(38, APB2, A, 15), + MM32_PIN(39, APB2, B, 3), + MM32_PIN(40, APB2, B, 4), + MM32_PIN(41, APB2, B, 5), + MM32_PIN(42, APB2, B, 6), + MM32_PIN(43, APB2, B, 7), + MM32_PIN_DEFAULT, + MM32_PIN(45, APB2, B, 8), + MM32_PIN(46, APB2, B, 9), + MM32_PIN_DEFAULT, + MM32_PIN_DEFAULT, +}; + +struct pin_irq_map +{ + rt_uint16_t pinbit; + rt_uint32_t irqbit; + enum IRQn irqno; +}; +const struct pin_irq_map mm32_pin_irq_map[] = +{ + {GPIO_Pin_0, EXTI_Line0, EXTI0_IRQn }, + {GPIO_Pin_1, EXTI_Line1, EXTI1_IRQn }, + {GPIO_Pin_2, EXTI_Line2, EXTI2_IRQn }, + {GPIO_Pin_3, EXTI_Line3, EXTI3_IRQn }, + {GPIO_Pin_4, EXTI_Line4, EXTI4_IRQn }, + {GPIO_Pin_5, EXTI_Line5, EXTI9_5_IRQn }, + {GPIO_Pin_6, EXTI_Line6, EXTI9_5_IRQn }, + {GPIO_Pin_7, EXTI_Line7, EXTI9_5_IRQn }, + {GPIO_Pin_8, EXTI_Line8, EXTI9_5_IRQn }, + {GPIO_Pin_9, EXTI_Line9, EXTI9_5_IRQn }, + {GPIO_Pin_10, EXTI_Line10, EXTI15_10_IRQn}, + {GPIO_Pin_11, EXTI_Line11, EXTI15_10_IRQn}, + {GPIO_Pin_12, EXTI_Line12, EXTI15_10_IRQn}, + {GPIO_Pin_13, EXTI_Line13, EXTI15_10_IRQn}, + {GPIO_Pin_14, EXTI_Line14, EXTI15_10_IRQn}, + {GPIO_Pin_15, EXTI_Line15, EXTI15_10_IRQn}, +}; +struct rt_pin_irq_hdr mm32_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}, + {-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}, + {-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}, + {-1, 0, RT_NULL, RT_NULL}, +}; +#define ITEM_NUM(items) sizeof(items) / sizeof(items[0]) +const struct pin_index *get_pin(uint8_t pin) +{ + const struct pin_index *index; + + if (pin < ITEM_NUM(mm32_pin_map)) + { + index = &mm32_pin_map[pin]; + if (index->gpio == 0) + index = RT_NULL; + } + else + { + index = RT_NULL; + } + + return index; +}; + +void mm32_pin_write(rt_device_t dev, rt_base_t pin, rt_uint8_t value) +{ + const struct pin_index *index; + + index = get_pin(pin); + if (index == RT_NULL) + { + return; + } + if (value == PIN_LOW) + { + GPIO_ResetBits(index->gpio, index->pin); + } + else + { + + GPIO_SetBits(index->gpio, index->pin); + } +} + +rt_ssize_t mm32_pin_read(rt_device_t dev, rt_base_t pin) +{ + rt_ssize_t value; + const struct pin_index *index; + + value = PIN_LOW; + index = get_pin(pin); + if (index == RT_NULL) + { + return -RT_EINVAL; + } + if (GPIO_ReadInputDataBit(index->gpio, index->pin) == Bit_RESET) + { + value = PIN_LOW; + } + else + { + value = PIN_HIGH; + } + return value; +} + +void mm32_pin_mode(rt_device_t dev, rt_base_t pin, rt_uint8_t mode) +{ + const struct pin_index *index; + GPIO_InitTypeDef GPIO_InitStructure; + + index = get_pin(pin); + if (index == RT_NULL) + { + return; + } + /* GPIO Periph clock enable */ + RCC_APB2PeriphClockCmd(index->rcc, ENABLE); + /* Configure GPIO_InitStructure */ + GPIO_InitStructure.GPIO_Pin = index->pin; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + if (mode == PIN_MODE_OUTPUT) + { + /* output setting */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; + } + else if (mode == PIN_MODE_OUTPUT_OD) + { + /* output setting: od. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; + } + else if (mode == PIN_MODE_INPUT) + { + /* input setting: not pull. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; + } + else if (mode == PIN_MODE_INPUT_PULLUP) + { + /* input setting: pull up. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + } + else + { + /* input setting:default. */ + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; + } + GPIO_Init( index->gpio, &GPIO_InitStructure); +} +rt_inline rt_int32_t bit2bitno(rt_uint32_t bit) +{ + int i; + for (i = 0; i < 32; i++) + { + if ((0x01 << i) == bit) + { + return i; + } + } + return -1; +} +rt_inline const struct pin_irq_map *get_pin_irq_map(uint32_t pinbit) +{ + rt_int32_t mapindex = bit2bitno(pinbit); + if (mapindex < 0 || mapindex >= ITEM_NUM(mm32_pin_irq_map)) + { + return RT_NULL; + } + return &mm32_pin_irq_map[mapindex]; +}; +rt_err_t mm32_pin_attach_irq(struct rt_device *device, rt_base_t pin, + rt_uint8_t mode, void (*hdr)(void *args), void *args) +{ + const struct pin_index *index; + rt_base_t level; + rt_int32_t irqindex = -1; + + index = get_pin(pin); + if (index == RT_NULL) + { + return -RT_ENOSYS; + } + irqindex = bit2bitno(index->pin); + if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + if (mm32_pin_irq_hdr_tab[irqindex].pin == pin && + mm32_pin_irq_hdr_tab[irqindex].hdr == hdr && + mm32_pin_irq_hdr_tab[irqindex].mode == mode && + mm32_pin_irq_hdr_tab[irqindex].args == args + ) + { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + if (mm32_pin_irq_hdr_tab[irqindex].pin != -1) + { + rt_hw_interrupt_enable(level); + return -RT_EBUSY; + } + mm32_pin_irq_hdr_tab[irqindex].pin = pin; + mm32_pin_irq_hdr_tab[irqindex].hdr = hdr; + mm32_pin_irq_hdr_tab[irqindex].mode = mode; + mm32_pin_irq_hdr_tab[irqindex].args = args; + rt_hw_interrupt_enable(level); + + return RT_EOK; +} +rt_err_t mm32_pin_detach_irq(struct rt_device *device, rt_base_t pin) +{ + const struct pin_index *index; + rt_base_t level; + rt_int32_t irqindex = -1; + + index = get_pin(pin); + if (index == RT_NULL) + { + return -RT_ENOSYS; + } + irqindex = bit2bitno(index->pin); + if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) + { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + mm32_pin_irq_hdr_tab[irqindex].pin = -1; + mm32_pin_irq_hdr_tab[irqindex].hdr = RT_NULL; + mm32_pin_irq_hdr_tab[irqindex].mode = 0; + mm32_pin_irq_hdr_tab[irqindex].args = RT_NULL; + rt_hw_interrupt_enable(level); + + return RT_EOK; +} +rt_err_t mm32_pin_irq_enable(struct rt_device *device, rt_base_t pin, + rt_uint8_t enabled) +{ + const struct pin_index *index; + const struct pin_irq_map *irqmap; + rt_base_t level; + rt_int32_t irqindex = -1; + GPIO_InitTypeDef GPIO_InitStructure; + NVIC_InitTypeDef NVIC_InitStructure; + EXTI_InitTypeDef EXTI_InitStructure; + + index = get_pin(pin); + if (index == RT_NULL) + { + return -RT_ENOSYS; + } + if (enabled == PIN_IRQ_ENABLE) + { + irqindex = bit2bitno(index->pin); + if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) + { + return -RT_ENOSYS; + } + level = rt_hw_interrupt_disable(); + if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) + { + rt_hw_interrupt_enable(level); + return -RT_ENOSYS; + } + irqmap = &mm32_pin_irq_map[irqindex]; + /* GPIO Periph clock enable */ + RCC_APB2PeriphClockCmd(index->rcc, ENABLE); + /* Configure GPIO_InitStructure */ + GPIO_InitStructure.GPIO_Pin = index->pin; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_Init(index->gpio, &GPIO_InitStructure); + + NVIC_InitStructure.NVIC_IRQChannel = irqmap->irqno; + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init(&NVIC_InitStructure); + + GPIO_EXTILineConfig(index->port_source, index->pin_source); + EXTI_InitStructure.EXTI_Line = irqmap->irqbit; + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + switch (mm32_pin_irq_hdr_tab[irqindex].mode) + { + case PIN_IRQ_MODE_RISING: + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + break; + case PIN_IRQ_MODE_FALLING: + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; + break; + case PIN_IRQ_MODE_RISING_FALLING: + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; + break; + } + EXTI_InitStructure.EXTI_LineCmd = ENABLE; + EXTI_Init(&EXTI_InitStructure); + rt_hw_interrupt_enable(level); + } + else if (enabled == PIN_IRQ_DISABLE) + { + irqmap = get_pin_irq_map(index->pin); + if (irqmap == RT_NULL) + { + return -RT_ENOSYS; + } + EXTI_InitStructure.EXTI_Line = irqmap->irqbit; + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; + EXTI_InitStructure.EXTI_LineCmd = DISABLE; + EXTI_Init(&EXTI_InitStructure); + } + else + { + return -RT_ENOSYS; + } + + return RT_EOK; +} +const static struct rt_pin_ops _mm32_pin_ops = +{ + mm32_pin_mode, + mm32_pin_write, + mm32_pin_read, + mm32_pin_attach_irq, + mm32_pin_detach_irq, + mm32_pin_irq_enable, + RT_NULL, +}; + +int rt_hw_pin_init(void) +{ + int result; + + result = rt_device_pin_register("pin", &_mm32_pin_ops, RT_NULL); + return result; +} +INIT_BOARD_EXPORT(rt_hw_pin_init); + +rt_inline void pin_irq_hdr(int irqno) +{ + EXTI_ClearITPendingBit(mm32_pin_irq_map[irqno].irqbit); + if (mm32_pin_irq_hdr_tab[irqno].hdr) + { + mm32_pin_irq_hdr_tab[irqno].hdr(mm32_pin_irq_hdr_tab[irqno].args); + } +} +void EXTI0_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(0); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI1_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(1); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI2_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(2); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI3_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(3); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI4_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + pin_irq_hdr(4); + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI9_5_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + if (EXTI_GetITStatus(EXTI_Line5) != RESET) + { + pin_irq_hdr(5); + } + if (EXTI_GetITStatus(EXTI_Line6) != RESET) + { + pin_irq_hdr(6); + } + if (EXTI_GetITStatus(EXTI_Line7) != RESET) + { + pin_irq_hdr(7); + } + if (EXTI_GetITStatus(EXTI_Line8) != RESET) + { + pin_irq_hdr(8); + } + if (EXTI_GetITStatus(EXTI_Line9) != RESET) + { + pin_irq_hdr(9); + } + /* leave interrupt */ + rt_interrupt_leave(); +} +void EXTI15_10_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + if (EXTI_GetITStatus(EXTI_Line10) != RESET) + { + pin_irq_hdr(10); + } + if (EXTI_GetITStatus(EXTI_Line11) != RESET) + { + pin_irq_hdr(11); + } + if (EXTI_GetITStatus(EXTI_Line12) != RESET) + { + pin_irq_hdr(12); + } + if (EXTI_GetITStatus(EXTI_Line13) != RESET) + { + pin_irq_hdr(13); + } + if (EXTI_GetITStatus(EXTI_Line14) != RESET) + { + pin_irq_hdr(14); + } + if (EXTI_GetITStatus(EXTI_Line15) != RESET) + { + pin_irq_hdr(15); + } + /* leave interrupt */ + rt_interrupt_leave(); +} + +#endif diff --git a/bsp/mm32/libraries/HAL_Drivers/drivers/drv_gpio.h b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_gpio.h new file mode 100644 index 00000000000..01182592f12 --- /dev/null +++ b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_gpio.h @@ -0,0 +1,119 @@ +/* + * Merged MM32 shared driver file. + * Series-specific branches preserve the original BSP driver implementations. + */ + +#if defined(SOC_SERIES_MM32F3277) +/* MM32F3277 */ +/* + * Copyright (c) 2020-2022, CQ 100ask Development Team + * + * Change Logs: + * Date Author Notes + * 2022-05-29 Alen first version + */ + +#ifndef __DRV_GPIO_H__ +#define __DRV_GPIO_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define __MM32_PORT(port) GPIO##port##_BASE + +#define GET_PIN(PORTx,PIN) (rt_base_t)((16 * ( ((rt_base_t)__MM32_PORT(PORTx) - (rt_base_t)GPIOA_BASE)/(0x0400UL) )) + PIN) + +struct pin_irq_map +{ + rt_uint16_t pinbit; + IRQn_Type irqno; + rt_uint32_t extiline; + SYSCFG_EXTILine_Type syscfg_extiline; +}; + +int rt_hw_pin_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __DRV_GPIO_H__ */ + +#elif defined(SOC_SERIES_MM32F526) +/* MM32F526 */ +/* + * Copyright (c) 2022-2025, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2025-01-22 chasel first version + */ + +#ifndef __DRV_GPIO_H__ +#define __DRV_GPIO_H__ + +int rt_hw_pin_init(void); + +#endif + +#elif defined(SOC_SERIES_MM32F327) +/* MM32F327 */ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-05 mazhiyuan first version + */ + +#ifndef __DRV_GPIO_H__ +#define __DRV_GPIO_H__ + +int rt_hw_pin_init(void); + +#endif + +#elif defined(SOC_SERIES_MM32F103) +/* MM32F103 */ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2019-04-02 henryhuang the first version + */ +#ifndef DRV_GPIO_H__ +#define DRV_GPIO_H__ + +int rt_hw_pin_init(void); + +#endif + +#elif defined(SOC_SERIES_MM32L3) +/* MM32L3 */ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2019-04-02 henryhuang the first version + */ +#ifndef DRV_GPIO_H__ +#define DRV_GPIO_H__ + +int rt_hw_pin_init(void); + +#endif + +#endif diff --git a/bsp/mm32/libraries/HAL_Drivers/drivers/drv_uart.c b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_uart.c new file mode 100644 index 00000000000..bc4d62b58fe --- /dev/null +++ b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_uart.c @@ -0,0 +1,1684 @@ +/* + * Merged MM32 shared driver file. + * Series-specific branches preserve the original BSP driver implementations. + */ + +#if defined(SOC_SERIES_MM32F3277) +/* MM32F3277 */ +/* + * Copyright (c) 2020-2022, CQ 100ask Development Team + * + * Change Logs: + * Date Author Notes + * 2022-05-29 Alen first version + */ + +#include "board.h" +#include "drv_uart.h" +#include "drv_config.h" + +#ifdef RT_USING_SERIAL + +//#define DRV_DEBUG +#define LOG_TAG "drv.usart" + +#if !defined(BSP_USING_UART1) && !defined(BSP_USING_UART2) && !defined(BSP_USING_UART3) && \ + !defined(BSP_USING_UART4) && !defined(BSP_USING_UART5) && !defined(BSP_USING_UART6) && \ + !defined(BSP_USING_UART7) && !defined(BSP_USING_UART8) +#error "Please define at least one BSP_USING_UARTx" +/* this driver can be disabled at menuconfig -> RT-Thread Components -> Device Drivers */ +#endif + +#define __HAL_UART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->CSR & (__FLAG__)) == (__FLAG__)) +#define __HAL_UART_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->CSR = ~(__FLAG__)) +#define __HAL_UART_GET_INT_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->ISR & (__FLAG__)) == (__FLAG__)) +#define __HAL_UART_CLEAR_INT_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->ICR &= (__FLAG__)) + +enum +{ +#ifdef BSP_USING_UART1 + UART1_INDEX, +#endif +#ifdef BSP_USING_UART2 + UART2_INDEX, +#endif +#ifdef BSP_USING_UART3 + UART3_INDEX, +#endif +#ifdef BSP_USING_UART4 + UART4_INDEX, +#endif +#ifdef BSP_USING_UART5 + UART5_INDEX, +#endif +#ifdef BSP_USING_UART6 + UART6_INDEX, +#endif +#ifdef BSP_USING_UART7 + UART7_INDEX, +#endif +#ifdef BSP_USING_UART8 + UART8_INDEX, +#endif +#ifdef BSP_USING_LPUART1 + LPUART1_INDEX, +#endif +}; + +static struct mm32_uart_config uart_config[] = +{ +#ifdef BSP_USING_UART1 + UART1_CONFIG, +#endif +#ifdef BSP_USING_UART2 + UART2_CONFIG, +#endif +#ifdef BSP_USING_UART3 + UART3_CONFIG, +#endif +#ifdef BSP_USING_UART4 + UART4_CONFIG, +#endif +#ifdef BSP_USING_UART5 + UART5_CONFIG, +#endif +#ifdef BSP_USING_UART6 + UART6_CONFIG, +#endif +#ifdef BSP_USING_UART7 + UART7_CONFIG, +#endif +#ifdef BSP_USING_UART8 + UART8_CONFIG, +#endif +#ifdef BSP_USING_LPUART1 + LPUART1_CONFIG, +#endif +}; + +static struct mm32_uart uart_obj[sizeof(uart_config) / sizeof(uart_config[0])] = {0}; + +static rt_err_t mm32_configure(struct rt_serial_device *serial, struct serial_configure *cfg) +{ + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + RT_ASSERT(cfg != RT_NULL); + + uart = rt_container_of(serial, struct mm32_uart, serial); + uart->handle.ClockFreqHz = HAL_Get_APB2_Clock(); + uart->handle.BaudRate = cfg->baud_rate; + uart->handle.XferMode = UART_XferMode_RxTx; + + switch (cfg->flowcontrol) + { + case RT_SERIAL_FLOWCONTROL_NONE: + uart->handle.HwFlowControl = UART_HwFlowControl_None; + break; + case RT_SERIAL_FLOWCONTROL_CTSRTS: + uart->handle.HwFlowControl = UART_HwFlowControl_RTS_CTS; + break; + default: + uart->handle.HwFlowControl = UART_HwFlowControl_None; + break; + } + + switch (cfg->data_bits) + { + case DATA_BITS_5: + uart->handle.WordLength = UART_WordLength_5b; + break; + case DATA_BITS_6: + uart->handle.WordLength = UART_WordLength_6b; + break; + case DATA_BITS_7: + uart->handle.WordLength = UART_WordLength_7b; + break; + case DATA_BITS_8: + uart->handle.WordLength = UART_WordLength_8b; + break; + default: + uart->handle.WordLength = UART_WordLength_8b; + break; + } + + switch (cfg->stop_bits) + { + case STOP_BITS_1: + uart->handle.StopBits = UART_StopBits_1; + break; + case STOP_BITS_2: + uart->handle.StopBits = UART_StopBits_2; + break; + default: + uart->handle.StopBits = UART_StopBits_1; + break; + } + + switch (cfg->parity) + { + case PARITY_NONE: + uart->handle.Parity = UART_Parity_None; + break; + case PARITY_ODD: + uart->handle.Parity = UART_Parity_Odd; + break; + case PARITY_EVEN: + uart->handle.Parity = UART_Parity_Even; + break; + default: + uart->handle.Parity = UART_Parity_None; + break; + } + +#ifdef RT_SERIAL_USING_DMA + if (!(serial->parent.open_flag & RT_DEVICE_OFLAG_OPEN)) { + uart->dma_rx.last_index = 0; + } +#endif + extern void UART_MspInit(UART_Type *muart); + UART_MspInit(uart->config->Instance); + UART_Init(uart->config->Instance, &uart->handle); + UART_Enable(uart->config->Instance, true); + + return RT_EOK; +} + +static rt_err_t mm32_control(struct rt_serial_device *serial, int cmd, void *arg) +{ + struct mm32_uart *uart; + rt_uint32_t prioritygroup = 0x00U; +#ifdef RT_SERIAL_USING_DMA + rt_ubase_t ctrl_arg = (rt_ubase_t)arg; +#endif + + RT_ASSERT(serial != RT_NULL); + uart = rt_container_of(serial, struct mm32_uart, serial); + + switch (cmd) + { + /* disable interrupt */ + case RT_DEVICE_CTRL_CLR_INT: + /* disable rx irq */ + NVIC_DisableIRQ(uart->config->irq_type); + +#ifdef RT_SERIAL_USING_DMA + /* disable DMA */ + if (ctrl_arg == RT_DEVICE_FLAG_DMA_RX) + { + + } + else if(ctrl_arg == RT_DEVICE_FLAG_DMA_TX) + { + + } +#endif + break; + + /* enable interrupt */ + case RT_DEVICE_CTRL_SET_INT: + /* enable rx irq */ + UART_EnableInterrupts(uart->config->Instance, UART_INT_RX_DONE, true); + prioritygroup = NVIC_GetPriorityGrouping(); + NVIC_SetPriority(SysTick_IRQn, NVIC_EncodePriority(prioritygroup, 1, 0)); + NVIC_EnableIRQ(uart->config->irq_type); + break; + +#ifdef RT_SERIAL_USING_DMA + case RT_DEVICE_CTRL_CONFIG: + + break; +#endif + + case RT_DEVICE_CTRL_CLOSE: + + break; + + } + return RT_EOK; +} + +rt_uint32_t mm32_uart_get_mask(rt_uint32_t word_length, rt_uint32_t parity) +{ + rt_uint32_t mask; + if (word_length == UART_WordLength_8b) + { + if (parity == UART_Parity_None) + { + mask = 0x00FFU ; + } + else + { + mask = 0x007FU ; + } + } + +#ifdef UART_WORDLENGTH_7B + else if (word_length == UART_WordLength_7b) + { + if (parity == UART_Parity_None) + { + mask = 0x007FU ; + } + else + { + mask = 0x003FU ; + } + } + else + { + mask = 0x0000U; + } +#endif + return mask; +} + +static int mm32_putc(struct rt_serial_device *serial, char c) +{ + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + + uart = rt_container_of(serial, struct mm32_uart, serial); + + uart->config->Instance->TDR = c; + + while ( 0u == (UART_STATUS_TX_EMPTY & UART_GetStatus(uart->config->Instance)) ) + {} + return 1; +} + +static int mm32_getc(struct rt_serial_device *serial) +{ + int ch; + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = rt_container_of(serial, struct mm32_uart, serial); + + ch = -1; + if ((UART_STATUS_RX_DONE & UART_GetStatus(uart->config->Instance)) != 0) + { + + ch = uart->config->Instance->RDR & mm32_uart_get_mask(uart->handle.WordLength, uart->handle.Parity); + } + return ch; +} + +/** + * Uart common interrupt process. This need add to uart ISR. + * + * @param serial serial device + */ +static void uart_isr(struct rt_serial_device *serial) +{ + struct mm32_uart *uart; +#ifdef RT_SERIAL_USING_DMA + rt_size_t recv_total_index, recv_len; + rt_base_t level; +#endif + + RT_ASSERT(serial != RT_NULL); + uart = rt_container_of(serial, struct mm32_uart, serial); + + /* UART in mode Receiver -------------------------------------------------*/ + if ( (0u != __HAL_UART_GET_INT_FLAG(uart->config->Instance, UART_INT_RX_DONE)) + && (0u != __HAL_UART_GET_FLAG(uart->config->Instance, UART_STATUS_RX_DONE)) ) + { + rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND); + } +#ifdef RT_SERIAL_USING_DMA + +#endif + else + { + if (__HAL_UART_GET_FLAG(uart->config->Instance, UART_STATUS_RX_DONE) != 0) + { + __HAL_UART_CLEAR_FLAG(uart->config->Instance, UART_STATUS_RX_DONE); + } + if (__HAL_UART_GET_FLAG(uart->config->Instance, UART_STATUS_TX_DONE) != 0) + { + __HAL_UART_CLEAR_FLAG(uart->config->Instance, UART_STATUS_TX_DONE); + } + if (__HAL_UART_GET_FLAG(uart->config->Instance, UART_STATUS_TX_FULL) != 0) + { + __HAL_UART_CLEAR_FLAG(uart->config->Instance, UART_STATUS_TX_FULL); + } + if (__HAL_UART_GET_FLAG(uart->config->Instance, UART_STATUS_TX_EMPTY) != 0) + { + __HAL_UART_CLEAR_FLAG(uart->config->Instance, UART_STATUS_TX_EMPTY); + } + + if (__HAL_UART_GET_INT_FLAG(uart->config->Instance, UART_INT_RX_DONE) != 0) + { + __HAL_UART_CLEAR_INT_FLAG(uart->config->Instance, UART_INT_RX_DONE); + } + if (__HAL_UART_GET_INT_FLAG(uart->config->Instance, UART_INT_TX_DONE) != 0) + { + __HAL_UART_CLEAR_INT_FLAG(uart->config->Instance, UART_INT_TX_DONE); + } + if (__HAL_UART_GET_INT_FLAG(uart->config->Instance, UART_INT_TX_EMPTY) != 0) + { + __HAL_UART_CLEAR_INT_FLAG(uart->config->Instance, UART_INT_TX_EMPTY); + } + } +} + +#if defined(BSP_USING_UART1) +void UART1_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + uart_isr(&(uart_obj[UART1_INDEX].serial)); + + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif + + +#if defined(BSP_USING_UART2) +void UART2_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + uart_isr(&(uart_obj[UART2_INDEX].serial)); + + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif + +#if defined(BSP_USING_UART3) +void UART3_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + uart_isr(&(uart_obj[UART3_INDEX].serial)); + + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif + +static const struct rt_uart_ops mm32_uart_ops = +{ + .configure = mm32_configure, + .control = mm32_control, + .putc = mm32_putc, + .getc = mm32_getc, + .dma_transmit = RT_NULL +}; + +int rt_hw_uart_init(void) +{ + rt_size_t obj_num = sizeof(uart_obj) / sizeof(struct mm32_uart); + struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; + rt_err_t result = 0; + + for (int i = 0; i < obj_num; i++) + { + /* init UART object */ + uart_obj[i].config = &uart_config[i]; + uart_obj[i].serial.ops = &mm32_uart_ops; + uart_obj[i].serial.config = config; + + /* register UART device */ + result = rt_hw_serial_register(&uart_obj[i].serial, uart_obj[i].config->name, + RT_DEVICE_FLAG_RDWR + | RT_DEVICE_FLAG_INT_RX + | RT_DEVICE_FLAG_INT_TX + | uart_obj[i].uart_dma_flag + , NULL); + RT_ASSERT(result == RT_EOK); + } + + return result; +} + +#endif /* RT_USING_SERIAL */ + +#elif defined(SOC_SERIES_MM32F526) +/* MM32F526 */ +/* + * Copyright (c) 2022-2025, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2025-01-22 chasel first version + */ +#include "board.h" +#include +#include +#include "drv_uart.h" +#include +#include +#include +#include + +/* uart driver */ +struct mm32_uart +{ + UART_TypeDef *uart; + IRQn_Type irq; +}; + +static rt_err_t mm32_uart_configure(struct rt_serial_device *serial, struct serial_configure *cfg) +{ + struct mm32_uart *uart; + UART_InitTypeDef UART_InitStructure; + RT_ASSERT(serial != RT_NULL); + RT_ASSERT(cfg != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + UART_InitStructure.BaudRate = cfg->baud_rate; + if (cfg->data_bits == DATA_BITS_8) + UART_InitStructure.WordLength = UART_WordLength_8b; + if (cfg->stop_bits == STOP_BITS_1) + UART_InitStructure.StopBits = UART_StopBits_1; + else if (cfg->stop_bits == STOP_BITS_2) + UART_InitStructure.StopBits = UART_StopBits_2; + UART_InitStructure.Parity = UART_Parity_No; + UART_InitStructure.HWFlowControl = UART_HWFlowControl_None; + UART_InitStructure.Mode = UART_Mode_Rx | UART_Mode_Tx; + UART_Init(uart->uart, &UART_InitStructure); + + /* Enable UART */ + UART_Cmd(uart->uart, ENABLE); + + return RT_EOK; +} + +static rt_err_t mm32_uart_control(struct rt_serial_device *serial, int cmd, void *arg) +{ + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + switch (cmd) + { + case RT_DEVICE_CTRL_CLR_INT: + /* disable rx irq */ + NVIC_DisableIRQ(uart->irq); + UART_ITConfig(uart->uart, UART_IT_RX, DISABLE); + break; + case RT_DEVICE_CTRL_SET_INT: + /* enable rx irq */ + NVIC_EnableIRQ(uart->irq); + /* enable interrupt */ + UART_ITConfig(uart->uart, UART_IT_RX, ENABLE); + break; + } + return RT_EOK; +} + +static int mm32_uart_putc(struct rt_serial_device *serial, char c) +{ + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + while ((uart->uart->CSR & UART_CSR_TXC_Msk) == 0) + ; + uart->uart->TDR = c; + return 1; +} + +static int mm32_uart_getc(struct rt_serial_device *serial) +{ + int ch; + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + ch = -1; + if (uart->uart->CSR & UART_FLAG_RXAVL) + { + ch = uart->uart->RDR & 0xff; + } + return ch; +} + +static const struct rt_uart_ops mm32_uart_ops = +{ + mm32_uart_configure, + mm32_uart_control, + mm32_uart_putc, + mm32_uart_getc, +}; + +#if defined(BSP_USING_UART1) +/* UART1 device driver structure */ +static struct mm32_uart uart1; +struct rt_serial_device serial1; +void UART1_IRQHandler(void) +{ + struct mm32_uart *uart; + uart = &uart1; + /* enter interrupt */ + rt_interrupt_enter(); + if (UART_GetITStatus(uart->uart, UART_IT_RX) != RESET) + { + UART_ClearITPendingBit(uart->uart, UART_IT_RX); + rt_hw_serial_isr(&serial1, RT_SERIAL_EVENT_RX_IND); + } + if (UART_GetITStatus(uart->uart, UART_IT_TX) != RESET) + { + /* clear interrupt */ + UART_ClearITPendingBit(uart->uart, UART_IT_TX); + } + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif /* BSP_USING_UART1 */ + +#if defined(BSP_USING_UART2) +/* UART2 device driver structure */ +static struct mm32_uart uart2; +struct rt_serial_device serial2; +void UART2_IRQHandler(void) +{ + struct mm32_uart *uart; + uart = &uart2; + /* enter interrupt */ + rt_interrupt_enter(); + if (UART_GetITStatus(uart->uart, UART_IT_RX) != RESET) + { + UART_ClearITPendingBit(uart->uart, UART_IT_RX); + rt_hw_serial_isr(&serial2, RT_SERIAL_EVENT_RX_IND); + } + if (UART_GetITStatus(uart->uart, UART_IT_TX) != RESET) + { + /* clear interrupt */ + UART_ClearITPendingBit(uart->uart, UART_IT_TX); + } + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif /* BSP_USING_UART2 */ + +#if defined(BSP_USING_UART3) +/* UART3 device driver structure */ +static struct mm32_uart uart3; +struct rt_serial_device serial3; +void UART3_IRQHandler(void) +{ + struct mm32_uart *uart; + uart = &uart3; + /* enter interrupt */ + rt_interrupt_enter(); + if (UART_GetITStatus(uart->uart, UART_IT_RX) != RESET) + { + UART_ClearITPendingBit(uart->uart, UART_IT_RX); + rt_hw_serial_isr(&serial3, RT_SERIAL_EVENT_RX_IND); + } + if (UART_GetITStatus(uart->uart, UART_IT_TX) != RESET) + { + /* clear interrupt */ + UART_ClearITPendingBit(uart->uart, UART_IT_TX); + } + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif /* BSP_USING_UART3 */ + +int rt_hw_uart_init(void) +{ + struct mm32_uart *uart; + struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; +#ifdef BSP_USING_UART1 + mm32_msp_uart_init((void *)UART1); + + uart = &uart1; + uart->uart = UART1; + uart->irq = UART1_IRQn; + config.baud_rate = BAUD_RATE_115200; + serial1.ops = &mm32_uart_ops; + serial1.config = config; + /* register UART1 device */ + rt_hw_serial_register(&serial1, "uart1", + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, + uart); +#endif /* BSP_USING_UART1 */ + +#ifdef BSP_USING_UART2 + mm32_msp_uart_init((void *)UART2); + + uart = &uart2; + uart->uart = UART2; + uart->irq = UART2_IRQn; + config.baud_rate = BAUD_RATE_115200; + serial2.ops = &mm32_uart_ops; + serial2.config = config; + /* register UART2 device */ + rt_hw_serial_register(&serial2, "uart2", + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, + uart); +#endif /* BSP_USING_UART2 */ + +#ifdef BSP_USING_UART3 + mm32_msp_uart_init((void *)UART3); + + uart = &uart3; + uart->uart = UART3; + uart->irq = UART3_IRQn; + config.baud_rate = BAUD_RATE_115200; + serial3.ops = &mm32_uart_ops; + serial3.config = config; + /* register UART2 device */ + rt_hw_serial_register(&serial3, "uart3", + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, + uart); +#endif /* BSP_USING_UART3 */ + + return 0; +} + +#elif defined(SOC_SERIES_MM32F327) +/* MM32F327 */ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-05 mazhiyuan first version + */ +#include +#include +#include "drv_uart.h" +#include +#include +#include +#include + +/* UART1 */ +#define UART1_GPIO_TX GPIO_Pin_9 +#define UART1_GPIO_TX_SOURCE GPIO_PinSource9 +#define UART1_GPIO_RX GPIO_Pin_10 +#define UART1_GPIO_RX_SOURCE GPIO_PinSource10 +#define UART1_GPIO_AF GPIO_AF_1 +#define UART1_GPIO GPIOA + +/* UART2 */ +#define UART2_GPIO_TX GPIO_Pin_2 +#define UART2_GPIO_TX_SOURCE GPIO_PinSource2 +#define UART2_GPIO_RX GPIO_Pin_3 +#define UART2_GPIO_RX_SOURCE GPIO_PinSource3 +#define UART2_GPIO_AF GPIO_AF_1 +#define UART2_GPIO GPIOA + +/* uart driver */ +struct mm32_uart +{ + UART_TypeDef *uart; + IRQn_Type irq; +}; + +static rt_err_t mm32_uart_configure(struct rt_serial_device *serial, struct serial_configure *cfg) +{ + struct mm32_uart *uart; + UART_InitTypeDef UART_InitStructure; + RT_ASSERT(serial != RT_NULL); + RT_ASSERT(cfg != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + UART_InitStructure.UART_BaudRate = cfg->baud_rate; + if (cfg->data_bits == DATA_BITS_8) + UART_InitStructure.UART_WordLength = UART_WordLength_8b; + if (cfg->stop_bits == STOP_BITS_1) + UART_InitStructure.UART_StopBits = UART_StopBits_1; + else if (cfg->stop_bits == STOP_BITS_2) + UART_InitStructure.UART_StopBits = UART_StopBits_2; + UART_InitStructure.UART_Parity = UART_Parity_No; + UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None; + UART_InitStructure.UART_Mode = UART_Mode_Rx | UART_Mode_Tx; + UART_Init(uart->uart, &UART_InitStructure); + /* Enable UART */ + UART_Cmd(uart->uart, ENABLE); + + return RT_EOK; +} + +static rt_err_t mm32_uart_control(struct rt_serial_device *serial, int cmd, void *arg) +{ + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + switch (cmd) + { + case RT_DEVICE_CTRL_CLR_INT: + /* disable rx irq */ + NVIC_DisableIRQ(uart->irq); + UART_ITConfig(uart->uart, UART_IT_RXIEN, DISABLE); + break; + case RT_DEVICE_CTRL_SET_INT: + /* enable rx irq */ + NVIC_EnableIRQ(uart->irq); + /* enable interrupt */ + UART_ITConfig(uart->uart, UART_IT_RXIEN, ENABLE); + break; + } + return RT_EOK; +} + +static int mm32_uart_putc(struct rt_serial_device *serial, char c) +{ + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + while ((uart->uart->CSR & UART_CSR_TXC) == 0) + ; + uart->uart->TDR = c; + return 1; +} + +static int mm32_uart_getc(struct rt_serial_device *serial) +{ + int ch; + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + ch = -1; + if (uart->uart->CSR & UART_FLAG_RXAVL) + { + ch = uart->uart->RDR & 0xff; + } + return ch; +} + +static const struct rt_uart_ops mm32_uart_ops = +{ + mm32_uart_configure, + mm32_uart_control, + mm32_uart_putc, + mm32_uart_getc, +}; + +#if defined(BSP_USING_UART1) +/* UART1 device driver structure */ +static struct mm32_uart uart1; +struct rt_serial_device serial1; +void UART1_IRQHandler(void) +{ + struct mm32_uart *uart; + uart = &uart1; + /* enter interrupt */ + rt_interrupt_enter(); + if (UART_GetITStatus(uart->uart, UART_IT_RXIEN) != RESET) + { + UART_ClearITPendingBit(uart->uart, UART_IT_RXIEN); + rt_hw_serial_isr(&serial1, RT_SERIAL_EVENT_RX_IND); + } + if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) + { + /* clear interrupt */ + UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); + } + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif /* BSP_USING_UART1 */ + +#if defined(BSP_USING_UART2) +/* UART2 device driver structure */ +static struct mm32_uart uart2; +struct rt_serial_device serial2; +void UART2_IRQHandler(void) +{ + struct mm32_uart *uart; + uart = &uart2; + /* enter interrupt */ + rt_interrupt_enter(); + if (UART_GetITStatus(uart->uart, UART_IT_RXIEN) != RESET) + { + UART_ClearITPendingBit(uart->uart, UART_IT_RXIEN); + rt_hw_serial_isr(&serial2, RT_SERIAL_EVENT_RX_IND); + } + if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) + { + /* clear interrupt */ + UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); + } + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif /* BSP_USING_UART2 */ + +#ifdef BSP_USING_UART1 +static void UART1PINconfigStepA(void) +{ + /* Enable UART clock */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE); + RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); +} + +static void UART1PINconfigStepB(void) +{ + + GPIO_InitTypeDef GPIO_InitStructure; + /* Configure USART Rx/tx PIN */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOA, &GPIO_InitStructure); + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + GPIO_Init(GPIOA, &GPIO_InitStructure); + GPIO_PinAFConfig(GPIOA, 9, GPIO_AF_7); + GPIO_PinAFConfig(GPIOA, 10, GPIO_AF_7); +} +#endif + +#ifdef BSP_USING_UART2 +static void UART2PINconfigStepA(void) +{ + /* Enable UART clock */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART2, ENABLE); + RCC_AHB2PeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); +} + +static void UART2PINconfigStepB(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + /* Configure USART Rx/tx PIN */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOA, &GPIO_InitStructure); + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_Init(GPIOA, &GPIO_InitStructure); + GPIO_PinAFConfig(GPIOA, 2, GPIO_AF_7); + GPIO_PinAFConfig(GPIOA, 3, GPIO_AF_7); +} +#endif + +int rt_hw_uart_init(void) +{ + struct mm32_uart *uart; + struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; +#ifdef BSP_USING_UART1 + UART1PINconfigStepA(); + uart = &uart1; + uart->uart = UART1; + uart->irq = UART1_IRQn; + config.baud_rate = BAUD_RATE_115200; + serial1.ops = &mm32_uart_ops; + serial1.config = config; + /* register UART1 device */ + rt_hw_serial_register(&serial1, "uart1", + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, + uart); + UART1PINconfigStepB(); +#endif /* BSP_USING_UART1 */ + +#ifdef BSP_USING_UART2 + UART2PINconfigStepA(); + uart = &uart2; + uart->uart = UART2; + uart->irq = UART2_IRQn; + config.baud_rate = BAUD_RATE_115200; + serial2.ops = &mm32_uart_ops; + serial2.config = config; + /* register UART2 device */ + rt_hw_serial_register(&serial2, "uart2", + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, + uart); + UART2PINconfigStepB(); +#endif /* BSP_USING_UART2 */ + return 0; +} +INIT_BOARD_EXPORT(rt_hw_uart_init); + +#elif defined(SOC_SERIES_MM32F103) +/* MM32F103 */ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-04 stackRyan first version + */ +#include +#include +#include "drv_uart.h" + +/* UART1 */ +#define UART1_GPIO_TX GPIO_Pin_9 +#define UART1_GPIO_TX_SOURCE GPIO_PinSource9 +#define UART1_GPIO_RX GPIO_Pin_10 +#define UART1_GPIO_RX_SOURCE GPIO_PinSource10 +#define UART1_GPIO_AF GPIO_AF_1 +#define UART1_GPIO GPIOA + +/* UART2 */ +#define UART2_GPIO_TX GPIO_Pin_2 +#define UART2_GPIO_TX_SOURCE GPIO_PinSource2 +#define UART2_GPIO_RX GPIO_Pin_3 +#define UART2_GPIO_RX_SOURCE GPIO_PinSource3 +#define UART2_GPIO_AF GPIO_AF_1 +#define UART2_GPIO GPIOA + +/* uart driver */ +struct mm32_uart +{ + UART_TypeDef *uart; + IRQn_Type irq; +}; + +static rt_err_t mm32_uart_configure(struct rt_serial_device *serial, struct serial_configure *cfg) +{ + struct mm32_uart *uart; + UART_InitTypeDef UART_InitStructure; + RT_ASSERT(serial != RT_NULL); + RT_ASSERT(cfg != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + UART_InitStructure.UART_BaudRate = cfg->baud_rate; + if (cfg->data_bits == DATA_BITS_8) + UART_InitStructure.UART_WordLength = UART_WordLength_8b; + if (cfg->stop_bits == STOP_BITS_1) + UART_InitStructure.UART_StopBits = UART_StopBits_1; + else if (cfg->stop_bits == STOP_BITS_2) + UART_InitStructure.UART_StopBits = UART_StopBits_2; + UART_InitStructure.UART_Parity = UART_Parity_No; + UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None; + UART_InitStructure.UART_Mode = UART_Mode_Rx | UART_Mode_Tx; + UART_Init(uart->uart, &UART_InitStructure); + /* Enable UART */ + UART_Cmd(uart->uart, ENABLE); + return RT_EOK; +} + +static rt_err_t mm32_uart_control(struct rt_serial_device *serial, int cmd, void *arg) +{ + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + switch (cmd) + { + case RT_DEVICE_CTRL_CLR_INT: + /* disable rx irq */ + NVIC_DisableIRQ(uart->irq); + UART_ITConfig(uart->uart, UART_IT_RXIEN, DISABLE); + break; + case RT_DEVICE_CTRL_SET_INT: + /* enable rx irq */ + NVIC_EnableIRQ(uart->irq); + /* enable interrupt */ + UART_ITConfig(uart->uart, UART_IT_RXIEN, ENABLE); + break; + } + return RT_EOK; +} + +static int mm32_uart_putc(struct rt_serial_device *serial, char c) +{ + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + while ((uart->uart->CSR & UART_IT_TXIEN) == 0); + uart->uart->TDR = (c & (uint16_t)0x00FF); + return 1; +} + +static int mm32_uart_getc(struct rt_serial_device *serial) +{ + int ch; + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + ch = -1; + if (uart->uart->CSR & UART_FLAG_RXAVL) + { + ch = uart->uart->RDR & 0xff; + } + return ch; +} + +static const struct rt_uart_ops mm32_uart_ops = +{ + mm32_uart_configure, + mm32_uart_control, + mm32_uart_putc, + mm32_uart_getc, +}; + +#if defined(BSP_USING_UART1) +/* UART1 device driver structure */ +static struct mm32_uart uart1; +struct rt_serial_device serial1; +void UART1_IRQHandler(void) +{ + struct mm32_uart *uart; + uart = &uart1; + /* enter interrupt */ + rt_interrupt_enter(); + if (UART_GetITStatus(uart->uart, UART_IT_RXIEN) != RESET) + { + UART_ClearITPendingBit(uart->uart, UART_IT_RXIEN); + rt_hw_serial_isr(&serial1, RT_SERIAL_EVENT_RX_IND); + } + if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) + { + /* clear interrupt */ + UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); + } + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif /* BSP_USING_UART1 */ + +#if defined(BSP_USING_UART2) +/* UART2 device driver structure */ +static struct mm32_uart uart2; +struct rt_serial_device serial2; +void UART2_IRQHandler(void) +{ + struct mm32_uart *uart; + uart = &uart2; + /* enter interrupt */ + rt_interrupt_enter(); + if (UART_GetITStatus(uart->uart, UART_IT_RXIEN) != RESET) + { + UART_ClearITPendingBit(uart->uart, UART_IT_RXIEN); + rt_hw_serial_isr(&serial2, RT_SERIAL_EVENT_RX_IND); + } + if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) + { + /* clear interrupt */ + UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); + } + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif /* BSP_USING_UART2 */ + +#ifdef BSP_USING_UART1 +static void UART1PINconfigStepA(void) +{ + /* Enable UART clock */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1 | RCC_APB2Periph_GPIOA, ENABLE); +} + +static void UART1PINconfigStepB(void) +{ + + GPIO_InitTypeDef GPIO_InitStructure; + /* Configure USART Rx/tx PIN */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOA, &GPIO_InitStructure); + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_Init(GPIOA, &GPIO_InitStructure); + +} +#endif + +#ifdef BSP_USING_UART2 +static void UART2PINconfigStepA(void) +{ + /* Enable UART clock */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART2, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); +} + +static void UART2PINconfigStepB(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + /* Configure USART Rx/tx PIN */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOA, &GPIO_InitStructure); + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_Init(GPIOA, &GPIO_InitStructure); + +} +#endif + +int rt_hw_uart_init(void) +{ + struct mm32_uart *uart; + struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; +#ifdef BSP_USING_UART1 + UART1PINconfigStepA(); + uart = &uart1; + uart->uart = UART1; + uart->irq = UART1_IRQn; + config.baud_rate = BAUD_RATE_115200; + serial1.ops = &mm32_uart_ops; + serial1.config = config; + /* register UART1 device */ + rt_hw_serial_register(&serial1, "uart1", + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, + uart); + UART1PINconfigStepB(); +#endif /* BSP_USING_UART1 */ + +#ifdef BSP_USING_UART2 + UART2PINconfigStepA(); + uart = &uart2; + uart->uart = UART2; + uart->irq = UART2_IRQn; + config.baud_rate = BAUD_RATE_115200; + serial2.ops = &mm32_uart_ops; + serial2.config = config; + /* register UART2 device */ + rt_hw_serial_register(&serial2, "uart2", + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, + uart); + UART2PINconfigStepB(); +#endif /* BSP_USING_UART2 */ + return 0; +} +//INIT_BOARD_EXPORT(rt_hw_uart_init); +//attention: uart init hardware problems occure on mm32f103 +//recommand manually initialize uart in rt_hw_board_init() +//see in rt_hw_board_init() learn more on rt_hw_uart_init() detials. + +#elif defined(SOC_SERIES_MM32L0) +/* MM32L0 */ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2013-11-15 bright the first version + */ + +#include +#include +#include "drv_uart.h" + +/* UART1 */ +#define UART1_GPIO_TX GPIO_Pin_9 +#define UART1_GPIO_TX_SOURCE GPIO_PinSource9 +#define UART1_GPIO_RX GPIO_Pin_10 +#define UART1_GPIO_RX_SOURCE GPIO_PinSource10 +#define UART1_GPIO_AF GPIO_AF_1 +#define UART1_GPIO GPIOA + +/* UART2 */ +#define UART2_GPIO_TX GPIO_Pin_2 +#define UART2_GPIO_TX_SOURCE GPIO_PinSource2 +#define UART2_GPIO_RX GPIO_Pin_3 +#define UART2_GPIO_RX_SOURCE GPIO_PinSource3 +#define UART2_GPIO_AF GPIO_AF_1 +#define UART2_GPIO GPIOA + +/* uart driver */ +struct mm32_uart +{ + UART_TypeDef *uart; + IRQn_Type irq; +}; + +static rt_err_t mm32_uart_configure(struct rt_serial_device *serial, + struct serial_configure *cfg) +{ + struct mm32_uart *uart; + UART_InitTypeDef UART_InitStructure; + RT_ASSERT(serial != RT_NULL); + RT_ASSERT(cfg != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + UART_InitStructure.UART_BaudRate = cfg->baud_rate; + if (cfg->data_bits == DATA_BITS_8) + UART_InitStructure.UART_WordLength = UART_WordLength_8b; + if (cfg->stop_bits == STOP_BITS_1) + UART_InitStructure.UART_StopBits = UART_StopBits_1; + else if (cfg->stop_bits == STOP_BITS_2) + UART_InitStructure.UART_StopBits = UART_StopBits_2; + UART_InitStructure.UART_Parity = UART_Parity_No; + UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None; + UART_InitStructure.UART_Mode = UART_Mode_Rx | UART_Mode_Tx; + UART_Init(uart->uart, &UART_InitStructure); + /* Enable UART */ + UART_Cmd(uart->uart, ENABLE); + return RT_EOK; +} + +static rt_err_t mm32_uart_control(struct rt_serial_device *serial, + int cmd, void *arg) +{ + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + switch (cmd) + { + case RT_DEVICE_CTRL_CLR_INT: + /* disable rx irq */ + NVIC_DisableIRQ(uart->irq); + UART_ITConfig(uart->uart, UART_IT_RXIEN, DISABLE); + break; + case RT_DEVICE_CTRL_SET_INT: + /* enable rx irq */ + NVIC_EnableIRQ(uart->irq); + /* enable interrupt */ + UART_ITConfig(uart->uart, UART_IT_RXIEN, ENABLE); + break; + } + return RT_EOK; +} + +static int mm32_uart_putc(struct rt_serial_device *serial, char c) +{ + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + while ((uart->uart->CSR & UART_CSR_TXC) == 0); + uart->uart->TDR = c; + return 1; +} + +static int mm32_uart_getc(struct rt_serial_device *serial) +{ + int ch; + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + ch = -1; + if (uart->uart->CSR & UART_FLAG_RXAVL) + { + ch = uart->uart->RDR & 0xff; + } + return ch; +} + +static const struct rt_uart_ops mm32_uart_ops = +{ + mm32_uart_configure, + mm32_uart_control, + mm32_uart_putc, + mm32_uart_getc, +}; + +#if defined(BSP_USING_UART1) +/* UART1 device driver structure */ +static struct mm32_uart uart1; +struct rt_serial_device serial1; +void UART1_IRQHandler(void) +{ + struct mm32_uart *uart; + uart = &uart1; + /* enter interrupt */ + rt_interrupt_enter(); + if (UART_GetITStatus(uart->uart, UART_IT_RXIEN) != RESET) + { + UART_ClearITPendingBit(uart->uart, UART_IT_RXIEN); + rt_hw_serial_isr(&serial1, RT_SERIAL_EVENT_RX_IND); + } + if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) + { + /* clear interrupt */ + UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); + } + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif /* BSP_USING_UART1 */ +#if defined(BSP_USING_UART2) +/* UART2 device driver structure */ +static struct mm32_uart uart2; +struct rt_serial_device serial2; +void UART2_IRQHandler(void) +{ + struct mm32_uart *uart; + uart = &uart2; + /* enter interrupt */ + rt_interrupt_enter(); + if (UART_GetITStatus(uart->uart_device, UART_IT_RXIEN) != RESET) + { + UART_ClearITPendingBit(uart->uart_device, UART_IT_RXIEN); + rt_hw_serial_isr(&serial2, RT_SERIAL_EVENT_RX_IND); + } + if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) + { + /* clear interrupt */ + UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); + } + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif /* BSP_USING_UART2 */ + +#ifdef BSP_USING_UART1 +static void UART1PINconfigStepA(void) +{ + /* Enable UART clock */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE); + RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); + GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1); + GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1); +} +static void UART1PINconfigStepB(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + /* Configure USART Rx/tx PIN */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOA, &GPIO_InitStructure); + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_Init(GPIOA, &GPIO_InitStructure); +} +#endif +#ifdef BSP_USING_UART2 +static void UART2PINconfigStepA(void) +{ + /* Enable UART clock */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART2, ENABLE); + RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); + GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_1); + GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_1); +} +static void UART2PINconfigStepB(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + /* Configure USART Rx/tx PIN */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOA, &GPIO_InitStructure); + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_Init(GPIOA, &GPIO_InitStructure); +} +#endif + +int rt_hw_uart_init(void) +{ + struct mm32_uart *uart; + struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; +#ifdef BSP_USING_UART1 + UART1PINconfigStepA(); + uart = &uart1; + uart->uart = UART1; + uart->irq = UART1_IRQn; + config.baud_rate = BAUD_RATE_115200; + serial1.ops = &mm32_uart_ops; + serial1.config = config; + /* register UART1 device */ + rt_hw_serial_register(&serial1, "uart1", + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, + uart); + UART1PINconfigStepB(); +#endif /* BSP_USING_UART1 */ +#ifdef BSP_USING_UART2 + UART2PINconfigStepA(); + uart = &uart2; + uart->uart = UART2; + uart->irq = UART2_IRQn; + config.baud_rate = BAUD_RATE_115200; + serial2.ops = &mm32_uart_ops; + serial2.config = config; + /* register UART1 device */ + rt_hw_serial_register(&serial2, "uart2", + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, + uart); + UART2PINconfigStepB(); +#endif /* BSP_USING_UART2 */ + return 0; +} +INIT_BOARD_EXPORT(rt_hw_uart_init); + +#elif defined(SOC_SERIES_MM32L3) +/* MM32L3 */ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2019-04-02 henryhuang the first version + */ +#include +#include +#include "drv_uart.h" + +/* UART1 */ +#define UART1_GPIO_TX GPIO_Pin_9 +#define UART1_GPIO_TX_SOURCE GPIO_PinSource9 +#define UART1_GPIO_RX GPIO_Pin_10 +#define UART1_GPIO_RX_SOURCE GPIO_PinSource10 +#define UART1_GPIO_AF GPIO_AF_1 +#define UART1_GPIO GPIOA + +/* UART2 */ +#define UART2_GPIO_TX GPIO_Pin_2 +#define UART2_GPIO_TX_SOURCE GPIO_PinSource2 +#define UART2_GPIO_RX GPIO_Pin_3 +#define UART2_GPIO_RX_SOURCE GPIO_PinSource3 +#define UART2_GPIO_AF GPIO_AF_1 +#define UART2_GPIO GPIOA + +/* uart driver */ +struct mm32_uart +{ + UART_TypeDef *uart; + IRQn_Type irq; +}; + +static rt_err_t mm32_uart_configure(struct rt_serial_device *serial, struct serial_configure *cfg) +{ + struct mm32_uart *uart; + UART_InitTypeDef UART_InitStructure; + RT_ASSERT(serial != RT_NULL); + RT_ASSERT(cfg != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + UART_InitStructure.UART_BaudRate = cfg->baud_rate; + if (cfg->data_bits == DATA_BITS_8) + UART_InitStructure.UART_WordLength = UART_WordLength_8b; + if (cfg->stop_bits == STOP_BITS_1) + UART_InitStructure.UART_StopBits = UART_StopBits_1; + else if (cfg->stop_bits == STOP_BITS_2) + UART_InitStructure.UART_StopBits = UART_StopBits_2; + UART_InitStructure.UART_Parity = UART_Parity_No; + UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None; + UART_InitStructure.UART_Mode = UART_Mode_Rx | UART_Mode_Tx; + UART_Init(uart->uart, &UART_InitStructure); + /* Enable UART */ + UART_Cmd(uart->uart, ENABLE); + return RT_EOK; +} + +static rt_err_t mm32_uart_control(struct rt_serial_device *serial, int cmd, void *arg) +{ + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + switch (cmd) + { + case RT_DEVICE_CTRL_CLR_INT: + /* disable rx irq */ + NVIC_DisableIRQ(uart->irq); + UART_ITConfig(uart->uart, UART_IT_RXIEN, DISABLE); + break; + case RT_DEVICE_CTRL_SET_INT: + /* enable rx irq */ + NVIC_EnableIRQ(uart->irq); + /* enable interrupt */ + UART_ITConfig(uart->uart, UART_IT_RXIEN, ENABLE); + break; + } + return RT_EOK; +} + +static int mm32_uart_putc(struct rt_serial_device *serial, char c) +{ + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + while ((uart->uart->CSR & UART_CSR_TXC) == 0); + uart->uart->TDR = c; + return 1; +} + +static int mm32_uart_getc(struct rt_serial_device *serial) +{ + int ch; + struct mm32_uart *uart; + RT_ASSERT(serial != RT_NULL); + uart = (struct mm32_uart *)serial->parent.user_data; + ch = -1; + if (uart->uart->CSR & UART_FLAG_RXAVL) + { + ch = uart->uart->RDR & 0xff; + } + return ch; +} + +static const struct rt_uart_ops mm32_uart_ops = +{ + mm32_uart_configure, + mm32_uart_control, + mm32_uart_putc, + mm32_uart_getc, +}; + +#if defined(BSP_USING_UART1) +/* UART1 device driver structure */ +static struct mm32_uart uart1; +struct rt_serial_device serial1; +void UART1_IRQHandler(void) +{ + struct mm32_uart *uart; + uart = &uart1; + /* enter interrupt */ + rt_interrupt_enter(); + if (UART_GetITStatus(uart->uart, UART_IT_RXIEN) != RESET) + { + UART_ClearITPendingBit(uart->uart, UART_IT_RXIEN); + rt_hw_serial_isr(&serial1, RT_SERIAL_EVENT_RX_IND); + } + if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) + { + /* clear interrupt */ + UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); + } + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif /* BSP_USING_UART1 */ + +#if defined(BSP_USING_UART2) +/* UART2 device driver structure */ +static struct mm32_uart uart2; +struct rt_serial_device serial2; +void UART2_IRQHandler(void) +{ + struct mm32_uart *uart; + uart = &uart2; + /* enter interrupt */ + rt_interrupt_enter(); + if (UART_GetITStatus(uart->uart, UART_IT_RXIEN) != RESET) + { + UART_ClearITPendingBit(uart->uart, UART_IT_RXIEN); + rt_hw_serial_isr(&serial2, RT_SERIAL_EVENT_RX_IND); + } + if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) + { + /* clear interrupt */ + UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); + } + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif /* BSP_USING_UART2 */ + +#ifdef BSP_USING_UART1 +static void UART1PINconfigStepA(void) +{ + /* Enable UART clock */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); + GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); +} + +static void UART1PINconfigStepB(void) +{ + + GPIO_InitTypeDef GPIO_InitStructure; + /* Configure USART Rx/tx PIN */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOA, &GPIO_InitStructure); + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_Init(GPIOA, &GPIO_InitStructure); + +} +#endif + +#ifdef BSP_USING_UART2 +static void UART2PINconfigStepA(void) +{ + /* Enable UART clock */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART2, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); + GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); +} + +static void UART2PINconfigStepB(void) +{ + GPIO_InitTypeDef GPIO_InitStructure; + /* Configure USART Rx/tx PIN */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOA, &GPIO_InitStructure); + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_Init(GPIOA, &GPIO_InitStructure); + +} +#endif + +int rt_hw_uart_init(void) +{ + struct mm32_uart *uart; + struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; +#ifdef BSP_USING_UART1 + UART1PINconfigStepA(); + uart = &uart1; + uart->uart = UART1; + uart->irq = UART1_IRQn; + config.baud_rate = BAUD_RATE_115200; + serial1.ops = &mm32_uart_ops; + serial1.config = config; + /* register UART1 device */ + rt_hw_serial_register(&serial1, "uart1", + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, + uart); + UART1PINconfigStepB(); +#endif /* BSP_USING_UART1 */ + +#ifdef BSP_USING_UART2 + UART2PINconfigStepA(); + uart = &uart2; + uart->uart = UART2; + uart->irq = UART2_IRQn; + config.baud_rate = BAUD_RATE_115200; + serial2.ops = &mm32_uart_ops; + serial2.config = config; + /* register UART2 device */ + rt_hw_serial_register(&serial2, "uart2", + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, + uart); + UART2PINconfigStepB(); +#endif /* BSP_USING_UART2 */ + return 0; +} +INIT_BOARD_EXPORT(rt_hw_uart_init); + +#endif diff --git a/bsp/mm32/libraries/HAL_Drivers/drivers/drv_uart.h b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_uart.h new file mode 100644 index 00000000000..eda76ab631b --- /dev/null +++ b/bsp/mm32/libraries/HAL_Drivers/drivers/drv_uart.h @@ -0,0 +1,155 @@ +/* + * Merged MM32 shared driver file. + * Series-specific branches preserve the original BSP driver implementations. + */ + +#if defined(SOC_SERIES_MM32F3277) +/* MM32F3277 */ +/* + * Copyright (c) 2020-2022, CQ 100ask Development Team + * + * Change Logs: + * Date Author Notes + * 2022-05-29 Alen first version + */ + +#ifndef __DRV_USART_H__ +#define __DRV_USART_H__ + +#include +#include "rtdevice.h" +#include +#include + +int rt_hw_uart_init(void); + +#define DMA_INSTANCE_TYPE MA_Channel_TypeDef + +#define UART_INSTANCE_CLEAR_FUNCTION __HAL_UART_CLEAR_FLAG + + +/* mm32 config class */ +struct mm32_uart_config +{ + const char *name; + UART_Type *Instance; + IRQn_Type irq_type; + struct dma_config *dma_rx; + struct dma_config *dma_tx; +}; + +/* mm32 uart dirver class */ +struct mm32_uart +{ + UART_Init_Type handle; + struct mm32_uart_config *config; + +#ifdef RT_SERIAL_USING_DMA + struct + { + DMA_Type handle; + rt_size_t last_index; + } dma_rx; +#endif + rt_uint16_t uart_dma_flag; + struct rt_serial_device serial; +}; + +#endif /* __DRV_USART_H__ */ + +#elif defined(SOC_SERIES_MM32F526) +/* MM32F526 */ +/* + * Copyright (c) 2022-2025, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2025-01-22 chasel first version + */ + +#ifndef __DRV_UART_H__ +#define __DRV_UART_H__ + +int rt_hw_uart_init(void); + +#endif + +#elif defined(SOC_SERIES_MM32F327) +/* MM32F327 */ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-05 mazhiyuan first version + */ + +#ifndef __DRV_UART_H__ +#define __DRV_UART_H__ + +int rt_hw_uart_init(void); + +#endif + +#elif defined(SOC_SERIES_MM32F103) +/* MM32F103 */ +/* + * Copyright (c) 2017-2019, MindMotion AE Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2019-03-13 henryhuang first version + */ + +#ifndef DRV_UART_H__ +#define DRV_UART_H__ + +int rt_hw_uart_init(void); + +#endif + +#elif defined(SOC_SERIES_MM32L0) +/* MM32L0 */ +/* + * Copyright (c) 2017-2019, MindMotion AE Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2019-03-13 henryhuang first version + */ + +#ifndef DRV_UART_H__ +#define DRV_UART_H__ + +int rt_hw_uart_init(void); + +#endif + +#elif defined(SOC_SERIES_MM32L3) +/* MM32L3 */ +/* + * Copyright (c) 2017-2019, MindMotion AE Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2019-03-13 henryhuang first version + */ + +#ifndef DRV_UART_H__ +#define DRV_UART_H__ + +int rt_hw_uart_init(void); + +#endif + +#endif diff --git a/bsp/mm32/libraries/HAL_Drivers/drivers/fal_cfg.h b/bsp/mm32/libraries/HAL_Drivers/drivers/fal_cfg.h new file mode 100644 index 00000000000..089947d93e9 --- /dev/null +++ b/bsp/mm32/libraries/HAL_Drivers/drivers/fal_cfg.h @@ -0,0 +1,86 @@ +/* + * Merged MM32 shared driver file. + * Series-specific branches preserve the original BSP driver implementations. + */ + +#if defined(SOC_SERIES_MM32F526) +/* MM32F526 */ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-05 mazhiyuan first version + */ + +#ifndef _FAL_CFG_H_ +#define _FAL_CFG_H_ + +#include +#include + + +/* ===================== Flash device Configuration ========================= */ +extern const struct fal_flash_dev mm32_onchip_flash; +extern struct fal_flash_dev nor_flash0; + +/* flash device table */ +#define FAL_FLASH_DEV_TABLE \ +{ \ + &mm32_onchip_flash, \ +} +/* ====================== Partition Configuration ========================== */ +#ifdef FAL_PART_HAS_TABLE_CFG +/* partition table */ +#define FAL_PART_TABLE \ +{ \ + {FAL_PART_MAGIC_WORD, "bl", "mm32_onchip", 0, 128*1024, 0}, \ + {FAL_PART_MAGIC_WORD, "filesystem", "mm32_onchip", 128*1024, 255*1024, 0}, \ +} +#endif /* FAL_PART_HAS_TABLE_CFG */ + +#endif /* _FAL_CFG_H_ */ + +#elif defined(SOC_SERIES_MM32F327) +/* MM32F327 */ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-05 mazhiyuan first version + */ + +#ifndef _FAL_CFG_H_ +#define _FAL_CFG_H_ + +#include +#include + + +/* ===================== Flash device Configuration ========================= */ +extern const struct fal_flash_dev mm32_onchip_flash; +extern struct fal_flash_dev nor_flash0; + +/* flash device table */ +#define FAL_FLASH_DEV_TABLE \ +{ \ + &mm32_onchip_flash, \ +} +/* ====================== Partition Configuration ========================== */ +#ifdef FAL_PART_HAS_TABLE_CFG +/* partition table */ +#define FAL_PART_TABLE \ +{ \ + {FAL_PART_MAGIC_WORD, "bl", "mm32_onchip", 0, 128*1024, 0}, \ + {FAL_PART_MAGIC_WORD, "filesystem", "mm32_onchip", 128*1024, 255*1024, 0}, \ +} +#endif /* FAL_PART_HAS_TABLE_CFG */ + +#endif /* _FAL_CFG_H_ */ + +#endif diff --git a/bsp/mm32/libraries/HAL_Drivers/drv_gpio.c b/bsp/mm32/libraries/HAL_Drivers/drv_gpio.c deleted file mode 100644 index 311a51f6e08..00000000000 --- a/bsp/mm32/libraries/HAL_Drivers/drv_gpio.c +++ /dev/null @@ -1,520 +0,0 @@ -/* - * Copyright (c) 2020-2022, CQ 100ask Development Team - * - * Change Logs: - * Date Author Notes - * 2022-05-29 Alen first version - */ - -#include "drv_gpio.h" - -#ifdef RT_USING_PIN - -#define PIN_NUM(port, no) (((((port) & 0xFu) << 4) | ((no) & 0xFu))) -#define PIN_PORT(pin) ((uint8_t)(((pin) >> 4) & 0xFu)) -#define PIN_NO(pin) ((uint8_t)((pin) & 0xFu)) - -#define PIN_STPORT(pin) ((GPIO_Type *)(GPIOA_BASE + (0x400u * PIN_PORT(pin)))) - -#define PIN_STPIN(pin) ((uint16_t)(1u << PIN_NO(pin))) - - -#if defined(GPIOF) -#define __MM32_PORT_MAX 6u -#elif defined(GPIOE) -#define __MM32_PORT_MAX 5u -#elif defined(GPIOD) -#define __MM32_PORT_MAX 4u -#elif defined(GPIOC) -#define __MM32_PORT_MAX 3u -#elif defined(GPIOB) -#define __MM32_PORT_MAX 2u -#elif defined(GPIOA) -#define __MM32_PORT_MAX 1u -#else -#define __MM32_PORT_MAX 0u -#error Unsupported MM32 GPIO peripheral. -#endif - -#define PIN_STPORT_MAX __MM32_PORT_MAX - -#define GET_EXTI_PORT(PORT) - -static const struct pin_irq_map pin_irq_map[] = -{ - {GPIO_PIN_0, EXTI0_IRQn, EXTI_LINE_0, SYSCFG_EXTILine_0}, - {GPIO_PIN_1, EXTI1_IRQn, EXTI_LINE_1, SYSCFG_EXTILine_1}, - {GPIO_PIN_2, EXTI2_IRQn, EXTI_LINE_2, SYSCFG_EXTILine_2}, - {GPIO_PIN_3, EXTI3_IRQn, EXTI_LINE_3, SYSCFG_EXTILine_3}, - {GPIO_PIN_4, EXTI4_IRQn, EXTI_LINE_4, SYSCFG_EXTILine_4}, - {GPIO_PIN_5, EXTI9_5_IRQn, EXTI_LINE_5,SYSCFG_EXTILine_5}, - {GPIO_PIN_6, EXTI9_5_IRQn, EXTI_LINE_6, SYSCFG_EXTILine_6}, - {GPIO_PIN_7, EXTI9_5_IRQn, EXTI_LINE_7, SYSCFG_EXTILine_7}, - {GPIO_PIN_8, EXTI9_5_IRQn, EXTI_LINE_8, SYSCFG_EXTILine_8}, - {GPIO_PIN_9, EXTI9_5_IRQn, EXTI_LINE_9, SYSCFG_EXTILine_9}, - {GPIO_PIN_10, EXTI15_10_IRQn, EXTI_LINE_10, SYSCFG_EXTILine_10}, - {GPIO_PIN_11, EXTI15_10_IRQn, EXTI_LINE_11, SYSCFG_EXTILine_11}, - {GPIO_PIN_12, EXTI15_10_IRQn, EXTI_LINE_12, SYSCFG_EXTILine_12}, - {GPIO_PIN_13, EXTI15_10_IRQn, EXTI_LINE_13, SYSCFG_EXTILine_13}, - {GPIO_PIN_14, EXTI15_10_IRQn, EXTI_LINE_14, SYSCFG_EXTILine_14}, - {GPIO_PIN_15, EXTI15_10_IRQn, EXTI_LINE_15, SYSCFG_EXTILine_15}, -}; - -static 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}, - {-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}, - {-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}, - {-1, 0, RT_NULL, RT_NULL}, -}; -static uint32_t pin_irq_enable_mask = 0; - -#define ITEM_NUM(items) sizeof(items) / sizeof(items[0]) - -static rt_base_t mm32_pin_get(const char *name) -{ - rt_base_t pin = 0; - int hw_port_num, hw_pin_num = 0; - int i, name_len; - - name_len = rt_strlen(name); - - if ((name_len < 4) || (name_len >= 6)) - { - return -RT_EINVAL; - } - if ((name[0] != 'P') || (name[2] != '.')) - { - return -RT_EINVAL; - } - - if ((name[1] >= 'A') && (name[1] <= 'F')) - { - hw_port_num = (int)(name[1] - 'A'); - } - else - { - return -RT_EINVAL; - } - - for (i = 3; i < name_len; i++) - { - hw_pin_num *= 10; - hw_pin_num += name[i] - '0'; - } - - pin = PIN_NUM(hw_port_num, hw_pin_num); - - return pin; -} - -static void mm32_pin_write(rt_device_t dev, rt_base_t pin, rt_uint8_t value) -{ - GPIO_Type *gpio_port; - uint16_t gpio_pin; - - if (PIN_PORT(pin) < PIN_STPORT_MAX) - { - gpio_port = PIN_STPORT(pin); - gpio_pin = PIN_STPIN(pin); - - GPIO_WriteBit(gpio_port, gpio_pin, (rt_uint16_t)value); - } -} - -static rt_ssize_t mm32_pin_read(rt_device_t dev, rt_base_t pin) -{ - GPIO_Type *gpio_port; - uint16_t gpio_pin; - rt_ssize_t value = PIN_LOW; - - if (PIN_PORT(pin) < PIN_STPORT_MAX) - { - gpio_port = PIN_STPORT(pin); - gpio_pin = PIN_STPIN(pin); - value = GPIO_ReadInDataBit(gpio_port, gpio_pin); - } - else - { - return -RT_EINVAL; - } - - return value; -} - -static void mm32_pin_mode(rt_device_t dev, rt_base_t pin, rt_uint8_t mode) -{ - GPIO_Init_Type GPIO_InitStruct; - - if (PIN_PORT(pin) >= PIN_STPORT_MAX) - { - return; - } - - /* Configure GPIO_InitStructure */ - GPIO_InitStruct.Pins = PIN_STPIN(pin); - GPIO_InitStruct.PinMode = GPIO_PinMode_Out_PushPull; - GPIO_InitStruct.Speed = GPIO_Speed_50MHz; - - if (mode == PIN_MODE_OUTPUT) - { - /* output setting */ - GPIO_InitStruct.PinMode = GPIO_PinMode_Out_PushPull; - } - else if (mode == PIN_MODE_INPUT) - { - /* input setting: not pull. */ - GPIO_InitStruct.PinMode = GPIO_PinMode_In_Floating; - } - else if (mode == PIN_MODE_INPUT_PULLUP) - { - /* input setting: pull up. */ - GPIO_InitStruct.PinMode = GPIO_PinMode_In_PullUp; - } - else if (mode == PIN_MODE_INPUT_PULLDOWN) - { - /* input setting: pull down. */ - GPIO_InitStruct.PinMode = GPIO_PinMode_In_PullDown; - } - else if (mode == PIN_MODE_OUTPUT_OD) - { - /* output setting: od. */ - GPIO_InitStruct.PinMode = GPIO_PinMode_Out_OpenDrain; - } - - GPIO_Init(PIN_STPORT(pin), &GPIO_InitStruct); -} - -rt_inline rt_int32_t bit2bitno(rt_uint32_t bit) -{ - rt_uint8_t i; - for (i = 0; i < 32; i++) - { - if ((0x01 << i) == bit) - { - return i; - } - } - return -1; -} - -rt_inline const struct pin_irq_map *get_pin_irq_map(uint32_t pinbit) -{ - rt_int32_t mapindex = bit2bitno(pinbit); - if (mapindex < 0 || mapindex >= ITEM_NUM(pin_irq_map)) - { - return RT_NULL; - } - return &pin_irq_map[mapindex]; -}; - -static rt_err_t mm32_pin_attach_irq(struct rt_device *device, rt_base_t pin, - rt_uint8_t mode, void (*hdr)(void *args), void *args) -{ - rt_base_t level; - rt_int32_t irqindex = -1; - - if (PIN_PORT(pin) >= PIN_STPORT_MAX) - { - return -RT_ENOSYS; - } - - irqindex = bit2bitno(PIN_STPIN(pin)); - if (irqindex < 0 || irqindex >= ITEM_NUM(pin_irq_map)) - { - return -RT_ENOSYS; - } - - level = rt_hw_interrupt_disable(); - if (pin_irq_hdr_tab[irqindex].pin == pin && - pin_irq_hdr_tab[irqindex].hdr == hdr && - pin_irq_hdr_tab[irqindex].mode == mode && - pin_irq_hdr_tab[irqindex].args == args) - { - rt_hw_interrupt_enable(level); - return RT_EOK; - } - if (pin_irq_hdr_tab[irqindex].pin != -1) - { - rt_hw_interrupt_enable(level); - return -RT_EBUSY; - } - pin_irq_hdr_tab[irqindex].pin = pin; - pin_irq_hdr_tab[irqindex].hdr = hdr; - pin_irq_hdr_tab[irqindex].mode = mode; - pin_irq_hdr_tab[irqindex].args = args; - rt_hw_interrupt_enable(level); - - return RT_EOK; -} - -static rt_err_t mm32_pin_dettach_irq(struct rt_device *device, rt_base_t pin) -{ - rt_base_t level; - rt_int32_t irqindex = -1; - - if (PIN_PORT(pin) >= PIN_STPORT_MAX) - { - return -RT_ENOSYS; - } - - irqindex = bit2bitno(PIN_STPIN(pin)); - if (irqindex < 0 || irqindex >= ITEM_NUM(pin_irq_map)) - { - return -RT_ENOSYS; - } - - level = rt_hw_interrupt_disable(); - if (pin_irq_hdr_tab[irqindex].pin == -1) - { - rt_hw_interrupt_enable(level); - return RT_EOK; - } - pin_irq_hdr_tab[irqindex].pin = -1; - pin_irq_hdr_tab[irqindex].hdr = RT_NULL; - pin_irq_hdr_tab[irqindex].mode = 0; - pin_irq_hdr_tab[irqindex].args = RT_NULL; - rt_hw_interrupt_enable(level); - - return RT_EOK; -} - -static rt_err_t mm32_pin_irq_enable(struct rt_device *device, rt_base_t pin, - rt_uint8_t enabled) -{ - const struct pin_irq_map *irqmap; - rt_base_t level; - rt_int32_t irqindex = -1; - GPIO_Init_Type GPIO_InitStruct; - - if (PIN_PORT(pin) >= PIN_STPORT_MAX) - { - return -RT_ENOSYS; - } - - if (enabled == PIN_IRQ_ENABLE) - { - irqindex = bit2bitno(PIN_STPIN(pin)); - if (irqindex < 0 || irqindex >= ITEM_NUM(pin_irq_map)) - { - return -RT_ENOSYS; - } - - level = rt_hw_interrupt_disable(); - - if (pin_irq_hdr_tab[irqindex].pin == -1) - { - rt_hw_interrupt_enable(level); - return -RT_ENOSYS; - } - - irqmap = &pin_irq_map[irqindex]; - - /* Configure GPIO_InitStructure */ - GPIO_InitStruct.Pins = PIN_STPIN(pin); - GPIO_InitStruct.Speed = GPIO_Speed_50MHz; - GPIO_InitStruct.PinMode = GPIO_PinMode_In_PullUp; - GPIO_Init(PIN_STPORT(pin), &GPIO_InitStruct); - - SYSCFG_SetExtIntMux(SYSCFG_EXTIPort_GPIOA + (0 == (rt_uint32_t)PIN_PORT(pin)?0: PIN_PORT(pin)/GPIOB_BASE), irqmap->syscfg_extiline); - switch (pin_irq_hdr_tab[irqindex].mode) - { - case PIN_IRQ_MODE_RISING: - EXTI_SetTriggerIn(EXTI, irqmap->extiline, EXTI_TriggerIn_RisingEdge); - break; - case PIN_IRQ_MODE_FALLING: - EXTI_SetTriggerIn(EXTI, irqmap->extiline, EXTI_TriggerIn_FallingEdge); - break; - case PIN_IRQ_MODE_RISING_FALLING: - EXTI_SetTriggerIn(EXTI, irqmap->extiline, EXTI_TriggerIn_BothEdges); - break; - } - EXTI_EnableLineInterrupt(EXTI, irqmap->extiline, true); - - NVIC_SetPriority(irqmap->irqno, NVIC_EncodePriority(4, 5, 0)); - NVIC_EnableIRQ(irqmap->irqno); - pin_irq_enable_mask |= irqmap->pinbit; - - rt_hw_interrupt_enable(level); - } - else if (enabled == PIN_IRQ_DISABLE) - { - irqmap = get_pin_irq_map(PIN_STPIN(pin)); - if (irqmap == RT_NULL) - { - return -RT_ENOSYS; - } - - level = rt_hw_interrupt_disable(); - - pin_irq_enable_mask &= ~irqmap->pinbit; - - if ((irqmap->pinbit >= GPIO_PIN_5) && (irqmap->pinbit <= GPIO_PIN_9)) - { - if (!(pin_irq_enable_mask & (GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9))) - { - NVIC_DisableIRQ(irqmap->irqno); - } - } - else if ((irqmap->pinbit >= GPIO_PIN_10) && (irqmap->pinbit <= GPIO_PIN_15)) - { - if (!(pin_irq_enable_mask & (GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15))) - { - NVIC_DisableIRQ(irqmap->irqno); - } - } - else - { - NVIC_DisableIRQ(irqmap->irqno); - } - - rt_hw_interrupt_enable(level); - } - else - { - return -RT_ENOSYS; - } - - return RT_EOK; -} -const static struct rt_pin_ops _mm32_pin_ops = -{ - mm32_pin_mode, - mm32_pin_write, - mm32_pin_read, - mm32_pin_attach_irq, - mm32_pin_dettach_irq, - mm32_pin_irq_enable, - mm32_pin_get, -}; - -rt_inline void pin_irq_hdr(int irqno) -{ - if (pin_irq_hdr_tab[irqno].hdr) - { - pin_irq_hdr_tab[irqno].hdr(pin_irq_hdr_tab[irqno].args); - } -} - -void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) -{ - pin_irq_hdr(bit2bitno(GPIO_Pin)); -} - -#define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__)) -#define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__)) - -void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) -{ - /* EXTI line interrupt detected */ - if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != 0x00u) - { - __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); - HAL_GPIO_EXTI_Callback(GPIO_Pin); - } -} - -void EXTI0_IRQHandler(void) -{ - rt_interrupt_enter(); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); - rt_interrupt_leave(); -} - -void EXTI1_IRQHandler(void) -{ - rt_interrupt_enter(); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1); - rt_interrupt_leave(); -} - -void EXTI2_IRQHandler(void) -{ - rt_interrupt_enter(); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2); - rt_interrupt_leave(); -} - -void EXTI3_IRQHandler(void) -{ - rt_interrupt_enter(); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3); - rt_interrupt_leave(); -} - -void EXTI4_IRQHandler(void) -{ - rt_interrupt_enter(); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4); - rt_interrupt_leave(); -} - -void EXTI9_5_IRQHandler(void) -{ - rt_interrupt_enter(); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_5); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_6); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_7); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9); - rt_interrupt_leave(); -} - -void EXTI15_10_IRQHandler(void) -{ - rt_interrupt_enter(); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_10); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_14); - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_15); - rt_interrupt_leave(); -} - -int rt_hw_pin_init(void) -{ -#if defined(RCC_AHB1_PERIPH_GPIOA) - RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOA, true); -#endif - -#if defined(RCC_AHB1_PERIPH_GPIOB) - RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOB, true); -#endif - -#if defined(RCC_AHB1_PERIPH_GPIOC) - RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOC, true); -#endif - -#if defined(RCC_AHB1_PERIPH_GPIOD) - RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOD, true); -#endif - -#if defined(RCC_AHB1_PERIPH_GPIOE) - RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOE, true); -#endif - -#if defined(RCC_AHB1_PERIPH_GPIOF) - RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOF, true); -#endif - -#if defined(RCC_APB2_PERIPH_SYSCFG) - RCC_EnableAPB2Periphs(RCC_APB2_PERIPH_SYSCFG, true); -#endif - - return rt_device_pin_register("pin", &_mm32_pin_ops, RT_NULL); -} - -#endif /* RT_USING_PIN */ diff --git a/bsp/mm32/libraries/HAL_Drivers/drv_gpio.h b/bsp/mm32/libraries/HAL_Drivers/drv_gpio.h deleted file mode 100644 index 50ee149737c..00000000000 --- a/bsp/mm32/libraries/HAL_Drivers/drv_gpio.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2020-2022, CQ 100ask Development Team - * - * Change Logs: - * Date Author Notes - * 2022-05-29 Alen first version - */ - -#ifndef __DRV_GPIO_H__ -#define __DRV_GPIO_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define __MM32_PORT(port) GPIO##port##_BASE - -#define GET_PIN(PORTx,PIN) (rt_base_t)((16 * ( ((rt_base_t)__MM32_PORT(PORTx) - (rt_base_t)GPIOA_BASE)/(0x0400UL) )) + PIN) - -struct pin_irq_map -{ - rt_uint16_t pinbit; - IRQn_Type irqno; - rt_uint32_t extiline; - SYSCFG_EXTILine_Type syscfg_extiline; -}; - -int rt_hw_pin_init(void); - -#ifdef __cplusplus -} -#endif - -#endif /* __DRV_GPIO_H__ */ - diff --git a/bsp/mm32/libraries/HAL_Drivers/drv_uart.c b/bsp/mm32/libraries/HAL_Drivers/drv_uart.c deleted file mode 100644 index 13d0e42eee2..00000000000 --- a/bsp/mm32/libraries/HAL_Drivers/drv_uart.c +++ /dev/null @@ -1,432 +0,0 @@ -/* - * Copyright (c) 2020-2022, CQ 100ask Development Team - * - * Change Logs: - * Date Author Notes - * 2022-05-29 Alen first version - */ - -#include "board.h" -#include "drv_uart.h" -#include "drv_config.h" - -#ifdef RT_USING_SERIAL - -//#define DRV_DEBUG -#define LOG_TAG "drv.usart" - -#if !defined(BSP_USING_UART1) && !defined(BSP_USING_UART2) && !defined(BSP_USING_UART3) && \ - !defined(BSP_USING_UART4) && !defined(BSP_USING_UART5) && !defined(BSP_USING_UART6) && \ - !defined(BSP_USING_UART7) && !defined(BSP_USING_UART8) -#error "Please define at least one BSP_USING_UARTx" -/* this driver can be disabled at menuconfig -> RT-Thread Components -> Device Drivers */ -#endif - -#define __HAL_UART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->CSR & (__FLAG__)) == (__FLAG__)) -#define __HAL_UART_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->CSR = ~(__FLAG__)) -#define __HAL_UART_GET_INT_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->ISR & (__FLAG__)) == (__FLAG__)) -#define __HAL_UART_CLEAR_INT_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->ICR &= (__FLAG__)) - -enum -{ -#ifdef BSP_USING_UART1 - UART1_INDEX, -#endif -#ifdef BSP_USING_UART2 - UART2_INDEX, -#endif -#ifdef BSP_USING_UART3 - UART3_INDEX, -#endif -#ifdef BSP_USING_UART4 - UART4_INDEX, -#endif -#ifdef BSP_USING_UART5 - UART5_INDEX, -#endif -#ifdef BSP_USING_UART6 - UART6_INDEX, -#endif -#ifdef BSP_USING_UART7 - UART7_INDEX, -#endif -#ifdef BSP_USING_UART8 - UART8_INDEX, -#endif -#ifdef BSP_USING_LPUART1 - LPUART1_INDEX, -#endif -}; - -static struct mm32_uart_config uart_config[] = -{ -#ifdef BSP_USING_UART1 - UART1_CONFIG, -#endif -#ifdef BSP_USING_UART2 - UART2_CONFIG, -#endif -#ifdef BSP_USING_UART3 - UART3_CONFIG, -#endif -#ifdef BSP_USING_UART4 - UART4_CONFIG, -#endif -#ifdef BSP_USING_UART5 - UART5_CONFIG, -#endif -#ifdef BSP_USING_UART6 - UART6_CONFIG, -#endif -#ifdef BSP_USING_UART7 - UART7_CONFIG, -#endif -#ifdef BSP_USING_UART8 - UART8_CONFIG, -#endif -#ifdef BSP_USING_LPUART1 - LPUART1_CONFIG, -#endif -}; - -static struct mm32_uart uart_obj[sizeof(uart_config) / sizeof(uart_config[0])] = {0}; - -static rt_err_t mm32_configure(struct rt_serial_device *serial, struct serial_configure *cfg) -{ - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - RT_ASSERT(cfg != RT_NULL); - - uart = rt_container_of(serial, struct mm32_uart, serial); - uart->handle.ClockFreqHz = HAL_Get_APB2_Clock(); - uart->handle.BaudRate = cfg->baud_rate; - uart->handle.XferMode = UART_XferMode_RxTx; - - switch (cfg->flowcontrol) - { - case RT_SERIAL_FLOWCONTROL_NONE: - uart->handle.HwFlowControl = UART_HwFlowControl_None; - break; - case RT_SERIAL_FLOWCONTROL_CTSRTS: - uart->handle.HwFlowControl = UART_HwFlowControl_RTS_CTS; - break; - default: - uart->handle.HwFlowControl = UART_HwFlowControl_None; - break; - } - - switch (cfg->data_bits) - { - case DATA_BITS_5: - uart->handle.WordLength = UART_WordLength_5b; - break; - case DATA_BITS_6: - uart->handle.WordLength = UART_WordLength_6b; - break; - case DATA_BITS_7: - uart->handle.WordLength = UART_WordLength_7b; - break; - case DATA_BITS_8: - uart->handle.WordLength = UART_WordLength_8b; - break; - default: - uart->handle.WordLength = UART_WordLength_8b; - break; - } - - switch (cfg->stop_bits) - { - case STOP_BITS_1: - uart->handle.StopBits = UART_StopBits_1; - break; - case STOP_BITS_2: - uart->handle.StopBits = UART_StopBits_2; - break; - default: - uart->handle.StopBits = UART_StopBits_1; - break; - } - - switch (cfg->parity) - { - case PARITY_NONE: - uart->handle.Parity = UART_Parity_None; - break; - case PARITY_ODD: - uart->handle.Parity = UART_Parity_Odd; - break; - case PARITY_EVEN: - uart->handle.Parity = UART_Parity_Even; - break; - default: - uart->handle.Parity = UART_Parity_None; - break; - } - -#ifdef RT_SERIAL_USING_DMA - if (!(serial->parent.open_flag & RT_DEVICE_OFLAG_OPEN)) { - uart->dma_rx.last_index = 0; - } -#endif - extern void UART_MspInit(UART_Type *muart); - UART_MspInit(uart->config->Instance); - UART_Init(uart->config->Instance, &uart->handle); - UART_Enable(uart->config->Instance, true); - - return RT_EOK; -} - -static rt_err_t mm32_control(struct rt_serial_device *serial, int cmd, void *arg) -{ - struct mm32_uart *uart; - rt_uint32_t prioritygroup = 0x00U; -#ifdef RT_SERIAL_USING_DMA - rt_ubase_t ctrl_arg = (rt_ubase_t)arg; -#endif - - RT_ASSERT(serial != RT_NULL); - uart = rt_container_of(serial, struct mm32_uart, serial); - - switch (cmd) - { - /* disable interrupt */ - case RT_DEVICE_CTRL_CLR_INT: - /* disable rx irq */ - NVIC_DisableIRQ(uart->config->irq_type); - -#ifdef RT_SERIAL_USING_DMA - /* disable DMA */ - if (ctrl_arg == RT_DEVICE_FLAG_DMA_RX) - { - - } - else if(ctrl_arg == RT_DEVICE_FLAG_DMA_TX) - { - - } -#endif - break; - - /* enable interrupt */ - case RT_DEVICE_CTRL_SET_INT: - /* enable rx irq */ - UART_EnableInterrupts(uart->config->Instance, UART_INT_RX_DONE, true); - prioritygroup = NVIC_GetPriorityGrouping(); - NVIC_SetPriority(SysTick_IRQn, NVIC_EncodePriority(prioritygroup, 1, 0)); - NVIC_EnableIRQ(uart->config->irq_type); - break; - -#ifdef RT_SERIAL_USING_DMA - case RT_DEVICE_CTRL_CONFIG: - - break; -#endif - - case RT_DEVICE_CTRL_CLOSE: - - break; - - } - return RT_EOK; -} - -rt_uint32_t mm32_uart_get_mask(rt_uint32_t word_length, rt_uint32_t parity) -{ - rt_uint32_t mask; - if (word_length == UART_WordLength_8b) - { - if (parity == UART_Parity_None) - { - mask = 0x00FFU ; - } - else - { - mask = 0x007FU ; - } - } - -#ifdef UART_WORDLENGTH_7B - else if (word_length == UART_WordLength_7b) - { - if (parity == UART_Parity_None) - { - mask = 0x007FU ; - } - else - { - mask = 0x003FU ; - } - } - else - { - mask = 0x0000U; - } -#endif - return mask; -} - -static int mm32_putc(struct rt_serial_device *serial, char c) -{ - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - - uart = rt_container_of(serial, struct mm32_uart, serial); - - uart->config->Instance->TDR = c; - - while ( 0u == (UART_STATUS_TX_EMPTY & UART_GetStatus(uart->config->Instance)) ) - {} - return 1; -} - -static int mm32_getc(struct rt_serial_device *serial) -{ - int ch; - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = rt_container_of(serial, struct mm32_uart, serial); - - ch = -1; - if ((UART_STATUS_RX_DONE & UART_GetStatus(uart->config->Instance)) != 0) - { - - ch = uart->config->Instance->RDR & mm32_uart_get_mask(uart->handle.WordLength, uart->handle.Parity); - } - return ch; -} - -/** - * Uart common interrupt process. This need add to uart ISR. - * - * @param serial serial device - */ -static void uart_isr(struct rt_serial_device *serial) -{ - struct mm32_uart *uart; -#ifdef RT_SERIAL_USING_DMA - rt_size_t recv_total_index, recv_len; - rt_base_t level; -#endif - - RT_ASSERT(serial != RT_NULL); - uart = rt_container_of(serial, struct mm32_uart, serial); - - /* UART in mode Receiver -------------------------------------------------*/ - if ( (0u != __HAL_UART_GET_INT_FLAG(uart->config->Instance, UART_INT_RX_DONE)) - && (0u != __HAL_UART_GET_FLAG(uart->config->Instance, UART_STATUS_RX_DONE)) ) - { - rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND); - } -#ifdef RT_SERIAL_USING_DMA - -#endif - else - { - if (__HAL_UART_GET_FLAG(uart->config->Instance, UART_STATUS_RX_DONE) != 0) - { - __HAL_UART_CLEAR_FLAG(uart->config->Instance, UART_STATUS_RX_DONE); - } - if (__HAL_UART_GET_FLAG(uart->config->Instance, UART_STATUS_TX_DONE) != 0) - { - __HAL_UART_CLEAR_FLAG(uart->config->Instance, UART_STATUS_TX_DONE); - } - if (__HAL_UART_GET_FLAG(uart->config->Instance, UART_STATUS_TX_FULL) != 0) - { - __HAL_UART_CLEAR_FLAG(uart->config->Instance, UART_STATUS_TX_FULL); - } - if (__HAL_UART_GET_FLAG(uart->config->Instance, UART_STATUS_TX_EMPTY) != 0) - { - __HAL_UART_CLEAR_FLAG(uart->config->Instance, UART_STATUS_TX_EMPTY); - } - - if (__HAL_UART_GET_INT_FLAG(uart->config->Instance, UART_INT_RX_DONE) != 0) - { - __HAL_UART_CLEAR_INT_FLAG(uart->config->Instance, UART_INT_RX_DONE); - } - if (__HAL_UART_GET_INT_FLAG(uart->config->Instance, UART_INT_TX_DONE) != 0) - { - __HAL_UART_CLEAR_INT_FLAG(uart->config->Instance, UART_INT_TX_DONE); - } - if (__HAL_UART_GET_INT_FLAG(uart->config->Instance, UART_INT_TX_EMPTY) != 0) - { - __HAL_UART_CLEAR_INT_FLAG(uart->config->Instance, UART_INT_TX_EMPTY); - } - } -} - -#if defined(BSP_USING_UART1) -void UART1_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - - uart_isr(&(uart_obj[UART1_INDEX].serial)); - - /* leave interrupt */ - rt_interrupt_leave(); -} -#endif - - -#if defined(BSP_USING_UART2) -void UART2_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - - uart_isr(&(uart_obj[UART2_INDEX].serial)); - - /* leave interrupt */ - rt_interrupt_leave(); -} -#endif - -#if defined(BSP_USING_UART3) -void UART3_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - - uart_isr(&(uart_obj[UART3_INDEX].serial)); - - /* leave interrupt */ - rt_interrupt_leave(); -} -#endif - -static const struct rt_uart_ops mm32_uart_ops = -{ - .configure = mm32_configure, - .control = mm32_control, - .putc = mm32_putc, - .getc = mm32_getc, - .dma_transmit = RT_NULL -}; - -int rt_hw_uart_init(void) -{ - rt_size_t obj_num = sizeof(uart_obj) / sizeof(struct mm32_uart); - struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; - rt_err_t result = 0; - - for (int i = 0; i < obj_num; i++) - { - /* init UART object */ - uart_obj[i].config = &uart_config[i]; - uart_obj[i].serial.ops = &mm32_uart_ops; - uart_obj[i].serial.config = config; - - /* register UART device */ - result = rt_hw_serial_register(&uart_obj[i].serial, uart_obj[i].config->name, - RT_DEVICE_FLAG_RDWR - | RT_DEVICE_FLAG_INT_RX - | RT_DEVICE_FLAG_INT_TX - | uart_obj[i].uart_dma_flag - , NULL); - RT_ASSERT(result == RT_EOK); - } - - return result; -} - -#endif /* RT_USING_SERIAL */ diff --git a/bsp/mm32/libraries/HAL_Drivers/drv_uart.h b/bsp/mm32/libraries/HAL_Drivers/drv_uart.h deleted file mode 100644 index 1547997d099..00000000000 --- a/bsp/mm32/libraries/HAL_Drivers/drv_uart.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2020-2022, CQ 100ask Development Team - * - * Change Logs: - * Date Author Notes - * 2022-05-29 Alen first version - */ - -#ifndef __DRV_USART_H__ -#define __DRV_USART_H__ - -#include -#include "rtdevice.h" -#include -#include - -int rt_hw_uart_init(void); - -#define DMA_INSTANCE_TYPE MA_Channel_TypeDef - -#define UART_INSTANCE_CLEAR_FUNCTION __HAL_UART_CLEAR_FLAG - - -/* mm32 config class */ -struct mm32_uart_config -{ - const char *name; - UART_Type *Instance; - IRQn_Type irq_type; - struct dma_config *dma_rx; - struct dma_config *dma_tx; -}; - -/* mm32 uart dirver class */ -struct mm32_uart -{ - UART_Init_Type handle; - struct mm32_uart_config *config; - -#ifdef RT_SERIAL_USING_DMA - struct - { - DMA_Type handle; - rt_size_t last_index; - } dma_rx; -#endif - rt_uint16_t uart_dma_flag; - struct rt_serial_device serial; -}; - -#endif /* __DRV_USART_H__ */ diff --git a/bsp/mm32/libraries/Kconfig b/bsp/mm32/libraries/Kconfig index 7bb3e917868..7349e7265b0 100644 --- a/bsp/mm32/libraries/Kconfig +++ b/bsp/mm32/libraries/Kconfig @@ -1,7 +1,32 @@ config SOC_FAMILY_MM32 bool +config SOC_SERIES_MM32F103 + bool + select ARCH_ARM_CORTEX_M3 + select SOC_FAMILY_MM32 + +config SOC_SERIES_MM32F327 + bool + select ARCH_ARM_CORTEX_M3 + select SOC_FAMILY_MM32 + config SOC_SERIES_MM32F3277 bool select ARCH_ARM_CORTEX_M3 select SOC_FAMILY_MM32 + +config SOC_SERIES_MM32F526 + bool + select ARCH_ARM_CORTEX_M33 + select SOC_FAMILY_MM32 + +config SOC_SERIES_MM32L0 + bool + select ARCH_ARM_CORTEX_M0 + select SOC_FAMILY_MM32 + +config SOC_SERIES_MM32L3 + bool + select ARCH_ARM_CORTEX_M3 + select SOC_FAMILY_MM32 diff --git a/bsp/mm32f103x/.clang-format-ignore b/bsp/mm32/mm32f103x/.clang-format-ignore similarity index 100% rename from bsp/mm32f103x/.clang-format-ignore rename to bsp/mm32/mm32f103x/.clang-format-ignore diff --git a/bsp/mm32l3xx/.config b/bsp/mm32/mm32f103x/.config similarity index 99% rename from bsp/mm32l3xx/.config rename to bsp/mm32/mm32f103x/.config index f942db7733b..c3cfed4544f 100644 --- a/bsp/mm32l3xx/.config +++ b/bsp/mm32/mm32f103x/.config @@ -1442,4 +1442,6 @@ CONFIG_BSP_USING_UART1=y # end of On-chip Peripheral Drivers # end of Hardware Drivers Config +CONFIG_SOC_FAMILY_MM32=y +CONFIG_SOC_SERIES_MM32F103=y CONFIG_SOC_MM32L373=y diff --git a/bsp/mm32l3xx/Kconfig b/bsp/mm32/mm32f103x/Kconfig similarity index 69% rename from bsp/mm32l3xx/Kconfig rename to bsp/mm32/mm32f103x/Kconfig index b06e35082f5..d7c5cfe4305 100644 --- a/bsp/mm32l3xx/Kconfig +++ b/bsp/mm32/mm32f103x/Kconfig @@ -2,16 +2,18 @@ mainmenu "RT-Thread Configuration" BSP_DIR := . -RTT_DIR := ../.. +RTT_DIR := ../../.. PKGS_DIR := packages -source "$(RTT_DIR)/Kconfig" -osource "$PKGS_DIR/Kconfig" -rsource "drivers/Kconfig" - config SOC_MM32L373 bool + select SOC_SERIES_MM32F103 select RT_USING_COMPONENTS_INIT select RT_USING_USER_MAIN default y + +source "$(RTT_DIR)/Kconfig" +osource "$PKGS_DIR/Kconfig" +rsource "../libraries/Kconfig" +rsource "board/Kconfig" diff --git a/bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/arm_common_tables.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/arm_common_tables.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/arm_common_tables.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/arm_common_tables.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/arm_const_structs.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/arm_const_structs.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/arm_const_structs.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/arm_const_structs.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/arm_math.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/arm_math.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/arm_math.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/arm_math.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm0.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm0.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm0.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm0.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm0plus.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm0plus.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm0plus.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm0plus.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm3.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm3.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm3.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm3.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm4.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm4.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm4.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm4.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm7.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm7.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm7.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cm7.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cmFunc.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cmFunc.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cmFunc.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cmFunc.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cmInstr.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cmInstr.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cmInstr.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cmInstr.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cmSimd.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cmSimd.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cmSimd.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_cmSimd.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_sc000.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_sc000.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_sc000.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_sc000.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_sc300.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_sc300.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/IAR_CORE/core_sc300.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/IAR_CORE/core_sc300.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/arm_common_tables.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/arm_common_tables.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/arm_common_tables.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/arm_common_tables.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/arm_const_structs.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/arm_const_structs.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/arm_const_structs.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/arm_const_structs.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/arm_math.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/arm_math.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/arm_math.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/arm_math.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm0.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm0.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm0.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm0.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm0plus.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm0plus.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm0plus.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm0plus.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm3.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm3.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm3.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm3.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm4.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm4.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm4.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm4.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm4_simd.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm4_simd.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm4_simd.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cm4_simd.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cmFunc.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cmFunc.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cmFunc.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cmFunc.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cmInstr.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cmInstr.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cmInstr.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_cmInstr.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_sc000.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_sc000.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_sc000.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_sc000.h diff --git a/bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_sc300.h b/bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_sc300.h similarity index 100% rename from bsp/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_sc300.h rename to bsp/mm32/mm32f103x/Libraries/CMSIS/KEIL_CORE/core_sc300.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_adc.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_adc.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_adc.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_adc.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_bkp.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_bkp.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_bkp.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_bkp.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_can.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_can.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_can.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_can.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_conf.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_conf.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_conf.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_conf.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_crc.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_crc.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_crc.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_crc.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_dma.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_dma.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_dma.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_dma.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_exti.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_exti.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_exti.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_exti.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_flash.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_flash.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_flash.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_flash.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_gpio.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_gpio.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_gpio.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_gpio.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_i2c.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_i2c.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_i2c.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_i2c.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_iwdg.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_iwdg.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_iwdg.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_iwdg.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_misc.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_misc.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_misc.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_misc.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_pwr.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_pwr.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_pwr.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_pwr.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_rcc.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_rcc.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_rcc.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_rcc.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_rtc.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_rtc.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_rtc.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_rtc.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_spi.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_spi.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_spi.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_spi.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_tim.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_tim.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_tim.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_tim.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_uart.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_uart.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_uart.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_uart.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_wwdg.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_wwdg.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_wwdg.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/inc/HAL_wwdg.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_adc.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_adc.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_adc.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_adc.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_bkp.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_bkp.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_bkp.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_bkp.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_can.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_can.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_can.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_can.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_crc.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_crc.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_crc.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_crc.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_dma.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_dma.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_dma.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_dma.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_exti.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_exti.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_exti.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_exti.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_flash.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_flash.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_flash.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_flash.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_gpio.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_gpio.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_gpio.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_gpio.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_i2c.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_i2c.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_i2c.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_i2c.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_iwdg.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_iwdg.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_iwdg.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_iwdg.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_misc.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_misc.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_misc.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_misc.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_pwr.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_pwr.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_pwr.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_pwr.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_rcc.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_rcc.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_rcc.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_rcc.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_rtc.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_rtc.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_rtc.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_rtc.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_spi.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_spi.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_spi.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_spi.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_tim.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_tim.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_tim.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_tim.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_uart.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_uart.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_uart.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_uart.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_wwdg.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_wwdg.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_wwdg.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/HAL_lib/src/HAL_wwdg.c diff --git a/bsp/mm32f103x/Libraries/MM32F103/Include/HAL_device.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/Include/HAL_device.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/Include/HAL_device.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/Include/HAL_device.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/Include/MM32F103.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/Include/MM32F103.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/Include/MM32F103.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/Include/MM32F103.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/Include/SYSTEM_MM32F103.h b/bsp/mm32/mm32f103x/Libraries/MM32F103/Include/SYSTEM_MM32F103.h similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/Include/SYSTEM_MM32F103.h rename to bsp/mm32/mm32f103x/Libraries/MM32F103/Include/SYSTEM_MM32F103.h diff --git a/bsp/mm32f103x/Libraries/MM32F103/Source/IAR_StartAsm/startup_MM32F103.s b/bsp/mm32/mm32f103x/Libraries/MM32F103/Source/IAR_StartAsm/startup_MM32F103.s similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/Source/IAR_StartAsm/startup_MM32F103.s rename to bsp/mm32/mm32f103x/Libraries/MM32F103/Source/IAR_StartAsm/startup_MM32F103.s diff --git a/bsp/mm32f103x/Libraries/MM32F103/Source/KEIL_StartAsm/startup_MM32F103.s b/bsp/mm32/mm32f103x/Libraries/MM32F103/Source/KEIL_StartAsm/startup_MM32F103.s similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/Source/KEIL_StartAsm/startup_MM32F103.s rename to bsp/mm32/mm32f103x/Libraries/MM32F103/Source/KEIL_StartAsm/startup_MM32F103.s diff --git a/bsp/mm32f103x/Libraries/MM32F103/Source/system_MM32F103.c b/bsp/mm32/mm32f103x/Libraries/MM32F103/Source/system_MM32F103.c similarity index 100% rename from bsp/mm32f103x/Libraries/MM32F103/Source/system_MM32F103.c rename to bsp/mm32/mm32f103x/Libraries/MM32F103/Source/system_MM32F103.c diff --git a/bsp/mm32f103x/Libraries/SConscript b/bsp/mm32/mm32f103x/Libraries/SConscript similarity index 100% rename from bsp/mm32f103x/Libraries/SConscript rename to bsp/mm32/mm32f103x/Libraries/SConscript diff --git a/bsp/mm32f103x/README.md b/bsp/mm32/mm32f103x/README.md similarity index 98% rename from bsp/mm32f103x/README.md rename to bsp/mm32/mm32f103x/README.md index 6049b5089c9..6bb19e53073 100644 --- a/bsp/mm32f103x/README.md +++ b/bsp/mm32/mm32f103x/README.md @@ -53,7 +53,7 @@ MM32F103RB 是上海灵动微电子股份有限公司的一款面向电机驱动 > 工程默认配置使用 Jlink 仿真器下载程序,在通过 Jlink 连接开发板到 PC 的基础上,点击下载按钮即可下载程序到开发板 -推荐熟悉 RT_Thread 的用户使用[env工具](https://www.rt-thread.org/download.html#download-rt-thread-env-tool),可以在console下进入到 `bsp/mm32f103` 目录中,运行以下命令: +推荐熟悉 RT_Thread 的用户使用[env工具](https://www.rt-thread.org/download.html#download-rt-thread-env-tool),可以在console下进入到 `bsp/mm32/mm32f103x` 目录中,运行以下命令: `scons` diff --git a/bsp/mm32f103x/SConscript b/bsp/mm32/mm32f103x/SConscript similarity index 100% rename from bsp/mm32f103x/SConscript rename to bsp/mm32/mm32f103x/SConscript diff --git a/bsp/mm32f526x/SConstruct b/bsp/mm32/mm32f103x/SConstruct similarity index 77% rename from bsp/mm32f526x/SConstruct rename to bsp/mm32/mm32f103x/SConstruct index f80eba527f5..b2ebc5187e5 100644 --- a/bsp/mm32f526x/SConstruct +++ b/bsp/mm32/mm32f103x/SConstruct @@ -5,7 +5,7 @@ import rtconfig if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT') else: - RTT_ROOT = os.path.normpath(os.getcwd() + '/../..') + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] try: @@ -34,15 +34,14 @@ Export('RTT_ROOT') Export('rtconfig') SDK_ROOT = os.path.abspath('./') - -if os.path.exists(SDK_ROOT + '/libraries'): - libraries_path_prefix = SDK_ROOT + '/libraries' -else: - libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' - +libraries_path_prefix = os.path.join(os.path.dirname(SDK_ROOT), 'libraries') # prepare building environment objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'), + variant_dir='build/libraries/HAL_Drivers', duplicate=0)) + # make a building DoBuilding(TARGET, objs) diff --git a/bsp/mm32f103x/applications/SConscript b/bsp/mm32/mm32f103x/applications/SConscript similarity index 100% rename from bsp/mm32f103x/applications/SConscript rename to bsp/mm32/mm32f103x/applications/SConscript diff --git a/bsp/mm32f103x/drivers/Kconfig b/bsp/mm32/mm32f103x/board/Kconfig similarity index 89% rename from bsp/mm32f103x/drivers/Kconfig rename to bsp/mm32/mm32f103x/board/Kconfig index fda41de573e..c5e74f0857b 100644 --- a/bsp/mm32f103x/drivers/Kconfig +++ b/bsp/mm32/mm32f103x/board/Kconfig @@ -18,6 +18,8 @@ menu "Hardware Drivers Config" select RT_USING_SERIAL default y endmenu + + source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu endmenu diff --git a/bsp/mm32/mm32f103x/board/SConscript b/bsp/mm32/mm32f103x/board/SConscript new file mode 100644 index 00000000000..a3c45aa781e --- /dev/null +++ b/bsp/mm32/mm32f103x/board/SConscript @@ -0,0 +1,11 @@ +from building import * + +cwd = GetCurrentDir() + +src = ['board.c'] + +CPPPATH = [cwd] + +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/mm32f103x/drivers/board.c b/bsp/mm32/mm32f103x/board/board.c similarity index 100% rename from bsp/mm32f103x/drivers/board.c rename to bsp/mm32/mm32f103x/board/board.c diff --git a/bsp/mm32f103x/drivers/board.h b/bsp/mm32/mm32f103x/board/board.h similarity index 100% rename from bsp/mm32f103x/drivers/board.h rename to bsp/mm32/mm32f103x/board/board.h diff --git a/bsp/mm32f103x/drivers/linker_scripts/link.icf b/bsp/mm32/mm32f103x/board/linker_scripts/link.icf similarity index 100% rename from bsp/mm32f103x/drivers/linker_scripts/link.icf rename to bsp/mm32/mm32f103x/board/linker_scripts/link.icf diff --git a/bsp/mm32f103x/drivers/linker_scripts/link.lds b/bsp/mm32/mm32f103x/board/linker_scripts/link.lds similarity index 100% rename from bsp/mm32f103x/drivers/linker_scripts/link.lds rename to bsp/mm32/mm32f103x/board/linker_scripts/link.lds diff --git a/bsp/mm32f103x/drivers/linker_scripts/link.sct b/bsp/mm32/mm32f103x/board/linker_scripts/link.sct similarity index 100% rename from bsp/mm32f103x/drivers/linker_scripts/link.sct rename to bsp/mm32/mm32f103x/board/linker_scripts/link.sct diff --git a/bsp/mm32f103x/figures/MM32 MiniBoard Rev.D2_1.jpg b/bsp/mm32/mm32f103x/figures/MM32 MiniBoard Rev.D2_1.jpg similarity index 100% rename from bsp/mm32f103x/figures/MM32 MiniBoard Rev.D2_1.jpg rename to bsp/mm32/mm32f103x/figures/MM32 MiniBoard Rev.D2_1.jpg diff --git a/bsp/mm32f103x/figures/MM32 MiniBoard Rev.D2_2.jpg b/bsp/mm32/mm32f103x/figures/MM32 MiniBoard Rev.D2_2.jpg similarity index 100% rename from bsp/mm32f103x/figures/MM32 MiniBoard Rev.D2_2.jpg rename to bsp/mm32/mm32f103x/figures/MM32 MiniBoard Rev.D2_2.jpg diff --git a/bsp/mm32f103x/project.ewd b/bsp/mm32/mm32f103x/project.ewd similarity index 100% rename from bsp/mm32f103x/project.ewd rename to bsp/mm32/mm32f103x/project.ewd diff --git a/bsp/mm32f103x/project.ewp b/bsp/mm32/mm32f103x/project.ewp similarity index 87% rename from bsp/mm32f103x/project.ewp rename to bsp/mm32/mm32f103x/project.ewp index b9c93aeff7f..aa2ecf2db97 100644 --- a/bsp/mm32f103x/project.ewp +++ b/bsp/mm32/mm32f103x/project.ewp @@ -1,2432 +1,2434 @@ - - 3 - - rt-thread - - ARM - - 1 - - General - 3 - - 31 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 35 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 23 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Release - - ARM - - 0 - - General - 3 - - 31 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 35 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 23 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - BILINK - 0 - - - - - Applications - - - CPU - - $PROJ_DIR$\..\..\libcpu\arm\common\div0.c - - - $PROJ_DIR$\..\..\libcpu\arm\common\showmem.c - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m3\context_iar.S - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m3\cpuport.c - - - - DeviceDrivers - - $PROJ_DIR$\..\..\components\drivers\core\device.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\completion_comm.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\completion_up.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\condvar.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\dataqueue.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\pipe.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\ringblk_buf.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\ringbuffer.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\waitqueue.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\workqueue.c - - - $PROJ_DIR$\..\..\components\drivers\pin\dev_pin.c - - - $PROJ_DIR$\..\..\components\drivers\serial\dev_serial.c - - - - Drivers - - $PROJ_DIR$\drivers\board.c - - - $PROJ_DIR$\drivers\drv_uart.c - - - $PROJ_DIR$\drivers\drv_gpio.c - - - - Finsh - - $PROJ_DIR$\..\..\components\finsh\shell.c - - - $PROJ_DIR$\..\..\components\finsh\msh.c - - - $PROJ_DIR$\..\..\components\finsh\msh_parse.c - - - $PROJ_DIR$\..\..\components\finsh\cmd.c - - - - Kernel - - $PROJ_DIR$\..\..\src\clock.c - - - $PROJ_DIR$\..\..\src\components.c - - - $PROJ_DIR$\..\..\src\cpu_up.c - - - $PROJ_DIR$\..\..\src\defunct.c - - - $PROJ_DIR$\..\..\src\idle.c - - - $PROJ_DIR$\..\..\src\ipc.c - - - $PROJ_DIR$\..\..\src\irq.c - - - $PROJ_DIR$\..\..\src\kservice.c - - - $PROJ_DIR$\..\..\src\mem.c - - - $PROJ_DIR$\..\..\src\memheap.c - - - $PROJ_DIR$\..\..\src\mempool.c - - - $PROJ_DIR$\..\..\src\object.c - - - $PROJ_DIR$\..\..\src\scheduler_comm.c - - - $PROJ_DIR$\..\..\src\scheduler_up.c - - - $PROJ_DIR$\..\..\src\thread.c - - - $PROJ_DIR$\..\..\src\timer.c - - - - Libc - - $PROJ_DIR$\..\..\components\libc\compilers\common\cctype.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cstdlib.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cstring.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\ctime.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cunistd.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cwchar.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\environ.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_close.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_lseek.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_mem.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_open.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_read.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_remove.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_write.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscalls.c - - - $PROJ_DIR$\..\..\src\klibc\kerrno.c - - - $PROJ_DIR$\..\..\src\klibc\kstdio.c - - - $PROJ_DIR$\..\..\src\klibc\kstring.c - - - $PROJ_DIR$\..\..\src\klibc\rt_vsnprintf_tiny.c - - - $PROJ_DIR$\..\..\src\klibc\rt_vsscanf.c - - - - Libraries - - $PROJ_DIR$\Libraries\MM32F103\Source\system_MM32F103.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_adc.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_bkp.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_can.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_crc.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_dma.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_exti.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_flash.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_gpio.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_i2c.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_iwdg.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_misc.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_pwr.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_rcc.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_rtc.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_spi.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_tim.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_uart.c - - - $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_wwdg.c - - - $PROJ_DIR$\Libraries\MM32F103\Source\IAR_StartAsm\startup_MM32F103.s - - - - utc_UTest - - - utestcases - - + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 35 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 23 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 35 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 23 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Applications + + + CPU + + $PROJ_DIR$\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\showmem.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m3\context_iar.S + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m3\cpuport.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\components\drivers\core\device.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_comm.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_up.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\condvar.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\workqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\pin\dev_pin.c + + + $PROJ_DIR$\..\..\..\components\drivers\serial\dev_serial.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drivers\drv_uart.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drivers\drv_gpio.c + + + + Finsh + + $PROJ_DIR$\..\..\..\components\finsh\shell.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh_parse.c + + + $PROJ_DIR$\..\..\..\components\finsh\cmd.c + + + + Kernel + + $PROJ_DIR$\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\src\cpu_up.c + + + $PROJ_DIR$\..\..\..\src\defunct.c + + + $PROJ_DIR$\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\src\memheap.c + + + $PROJ_DIR$\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\src\scheduler_comm.c + + + $PROJ_DIR$\..\..\..\src\scheduler_up.c + + + $PROJ_DIR$\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\src\timer.c + + + + Libc + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cctype.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstdlib.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstring.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\ctime.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cunistd.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cwchar.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\src\klibc\kerrno.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstdio.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstring.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsnprintf_tiny.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsscanf.c + + + + Libraries + + $PROJ_DIR$\Libraries\MM32F103\Source\system_MM32F103.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_adc.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_bkp.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_can.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_crc.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_dma.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_exti.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_flash.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_gpio.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_i2c.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_iwdg.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_misc.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_pwr.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_rcc.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_rtc.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_spi.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_tim.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_uart.c + + + $PROJ_DIR$\Libraries\MM32F103\HAL_lib\src\HAL_wwdg.c + + + $PROJ_DIR$\Libraries\MM32F103\Source\IAR_StartAsm\startup_MM32F103.s + + + + utc_UTest + + + utestcases + + diff --git a/bsp/mm32f103x/project.eww b/bsp/mm32/mm32f103x/project.eww similarity index 100% rename from bsp/mm32f103x/project.eww rename to bsp/mm32/mm32f103x/project.eww diff --git a/bsp/mm32f103x/project.uvoptx b/bsp/mm32/mm32f103x/project.uvoptx similarity index 100% rename from bsp/mm32f103x/project.uvoptx rename to bsp/mm32/mm32f103x/project.uvoptx diff --git a/bsp/mm32f103x/project.uvprojx b/bsp/mm32/mm32f103x/project.uvprojx similarity index 89% rename from bsp/mm32f103x/project.uvprojx rename to bsp/mm32/mm32f103x/project.uvprojx index b5faae8e098..4b82f92c81a 100644 --- a/bsp/mm32f103x/project.uvprojx +++ b/bsp/mm32/mm32f103x/project.uvprojx @@ -336,7 +336,7 @@ RT_USING_ARMLIBC, __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, USE_STDPERIPH_DRIVER, RT_USING_LIBC, __STDC_LIMIT_MACROS - ..\..\components\libc\posix\io\epoll;..\..\components\drivers\include;drivers;..\..\components\libc\compilers\common\extension;..\..\components\drivers\phy;..\..\include;Libraries\CMSIS\KEIL_CORE;..\..\components\drivers\include;Libraries\MM32F103\HAL_lib\inc;..\..\components\libc\compilers\common\include;..\..\components\libc\posix\io\poll;.;..\..\components\drivers\include;..\..\components\libc\posix\io\eventfd;..\..\components\net\utest;..\..\components\finsh;..\..\components\drivers\smp_call;Libraries\MM32F103\Source;..\..\components\drivers\include;Libraries\MM32F103\Include;..\..\libcpu\arm\cortex-m3;..\..\components\libc\posix\ipc;..\..\components\drivers\include;applications;..\..\libcpu\arm\common;..\..\components\drivers\include;..\..\components\libc\compilers\common\extension\fcntl\octal + ..\..\..\components\libc\posix\io\epoll;..\..\..\components\drivers\include;board;..\libraries\HAL_Drivers\drivers;..\..\..\components\libc\compilers\common\extension;..\..\..\components\drivers\phy;..\..\..\include;Libraries\CMSIS\KEIL_CORE;..\..\..\components\drivers\include;Libraries\MM32F103\HAL_lib\inc;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\posix\io\poll;.;..\..\..\components\drivers\include;..\..\..\components\libc\posix\io\eventfd;..\..\..\components\net\utest;..\..\..\components\finsh;..\..\..\components\drivers\smp_call;Libraries\MM32F103\Source;..\..\..\components\drivers\include;Libraries\MM32F103\Include;..\..\..\libcpu\arm\cortex-m3;..\..\..\components\libc\posix\ipc;..\..\..\components\drivers\include;applications;..\..\..\libcpu\arm\common;..\..\..\components\drivers\include;..\..\..\components\libc\compilers\common\extension\fcntl\octal @@ -367,7 +367,7 @@ 0x00000000 0x20000000 - .\drivers\linker_scripts\link.sct + .\board\linker_scripts\link.sct @@ -383,28 +383,28 @@ div0.c 1 - ..\..\libcpu\arm\common\div0.c + ..\..\..\libcpu\arm\common\div0.c showmem.c 1 - ..\..\libcpu\arm\common\showmem.c + ..\..\..\libcpu\arm\common\showmem.c context_rvds.S 2 - ..\..\libcpu\arm\cortex-m3\context_rvds.S + ..\..\..\libcpu\arm\cortex-m3\context_rvds.S cpuport.c 1 - ..\..\libcpu\arm\cortex-m3\cpuport.c + ..\..\..\libcpu\arm\cortex-m3\cpuport.c @@ -414,7 +414,7 @@ device.c 1 - ..\..\components\drivers\core\device.c + ..\..\..\components\drivers\core\device.c @@ -433,7 +433,7 @@ completion_comm.c 1 - ..\..\components\drivers\ipc\completion_comm.c + ..\..\..\components\drivers\ipc\completion_comm.c @@ -452,7 +452,7 @@ completion_up.c 1 - ..\..\components\drivers\ipc\completion_up.c + ..\..\..\components\drivers\ipc\completion_up.c @@ -471,7 +471,7 @@ condvar.c 1 - ..\..\components\drivers\ipc\condvar.c + ..\..\..\components\drivers\ipc\condvar.c @@ -490,7 +490,7 @@ dataqueue.c 1 - ..\..\components\drivers\ipc\dataqueue.c + ..\..\..\components\drivers\ipc\dataqueue.c @@ -509,7 +509,7 @@ pipe.c 1 - ..\..\components\drivers\ipc\pipe.c + ..\..\..\components\drivers\ipc\pipe.c @@ -528,7 +528,7 @@ ringblk_buf.c 1 - ..\..\components\drivers\ipc\ringblk_buf.c + ..\..\..\components\drivers\ipc\ringblk_buf.c @@ -547,7 +547,7 @@ ringbuffer.c 1 - ..\..\components\drivers\ipc\ringbuffer.c + ..\..\..\components\drivers\ipc\ringbuffer.c @@ -566,7 +566,7 @@ waitqueue.c 1 - ..\..\components\drivers\ipc\waitqueue.c + ..\..\..\components\drivers\ipc\waitqueue.c @@ -585,7 +585,7 @@ workqueue.c 1 - ..\..\components\drivers\ipc\workqueue.c + ..\..\..\components\drivers\ipc\workqueue.c @@ -604,7 +604,7 @@ dev_pin.c 1 - ..\..\components\drivers\pin\dev_pin.c + ..\..\..\components\drivers\pin\dev_pin.c @@ -623,7 +623,7 @@ dev_serial.c 1 - ..\..\components\drivers\serial\dev_serial.c + ..\..\..\components\drivers\serial\dev_serial.c @@ -645,21 +645,21 @@ board.c 1 - drivers\board.c + board\board.c drv_uart.c 1 - drivers\drv_uart.c + ..\libraries\HAL_Drivers\drivers\drv_uart.c drv_gpio.c 1 - drivers\drv_gpio.c + ..\libraries\HAL_Drivers\drivers\drv_gpio.c @@ -669,28 +669,28 @@ shell.c 1 - ..\..\components\finsh\shell.c + ..\..\..\components\finsh\shell.c msh.c 1 - ..\..\components\finsh\msh.c + ..\..\..\components\finsh\msh.c msh_parse.c 1 - ..\..\components\finsh\msh_parse.c + ..\..\..\components\finsh\msh_parse.c cmd.c 1 - ..\..\components\finsh\cmd.c + ..\..\..\components\finsh\cmd.c @@ -700,7 +700,7 @@ clock.c 1 - ..\..\src\clock.c + ..\..\..\src\clock.c @@ -719,7 +719,7 @@ components.c 1 - ..\..\src\components.c + ..\..\..\src\components.c @@ -738,7 +738,7 @@ cpu_up.c 1 - ..\..\src\cpu_up.c + ..\..\..\src\cpu_up.c @@ -757,7 +757,7 @@ defunct.c 1 - ..\..\src\defunct.c + ..\..\..\src\defunct.c @@ -776,7 +776,7 @@ idle.c 1 - ..\..\src\idle.c + ..\..\..\src\idle.c @@ -795,7 +795,7 @@ ipc.c 1 - ..\..\src\ipc.c + ..\..\..\src\ipc.c @@ -814,7 +814,7 @@ irq.c 1 - ..\..\src\irq.c + ..\..\..\src\irq.c @@ -833,7 +833,7 @@ kservice.c 1 - ..\..\src\kservice.c + ..\..\..\src\kservice.c @@ -852,7 +852,7 @@ mem.c 1 - ..\..\src\mem.c + ..\..\..\src\mem.c @@ -871,7 +871,7 @@ memheap.c 1 - ..\..\src\memheap.c + ..\..\..\src\memheap.c @@ -890,7 +890,7 @@ mempool.c 1 - ..\..\src\mempool.c + ..\..\..\src\mempool.c @@ -909,7 +909,7 @@ object.c 1 - ..\..\src\object.c + ..\..\..\src\object.c @@ -928,7 +928,7 @@ scheduler_comm.c 1 - ..\..\src\scheduler_comm.c + ..\..\..\src\scheduler_comm.c @@ -947,7 +947,7 @@ scheduler_up.c 1 - ..\..\src\scheduler_up.c + ..\..\..\src\scheduler_up.c @@ -966,7 +966,7 @@ thread.c 1 - ..\..\src\thread.c + ..\..\..\src\thread.c @@ -985,7 +985,7 @@ timer.c 1 - ..\..\src\timer.c + ..\..\..\src\timer.c @@ -1007,91 +1007,91 @@ syscall_mem.c 1 - ..\..\components\libc\compilers\armlibc\syscall_mem.c + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c syscalls.c 1 - ..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\components\libc\compilers\armlibc\syscalls.c cctype.c 1 - ..\..\components\libc\compilers\common\cctype.c + ..\..\..\components\libc\compilers\common\cctype.c cstdlib.c 1 - ..\..\components\libc\compilers\common\cstdlib.c + ..\..\..\components\libc\compilers\common\cstdlib.c cstring.c 1 - ..\..\components\libc\compilers\common\cstring.c + ..\..\..\components\libc\compilers\common\cstring.c ctime.c 1 - ..\..\components\libc\compilers\common\ctime.c + ..\..\..\components\libc\compilers\common\ctime.c cunistd.c 1 - ..\..\components\libc\compilers\common\cunistd.c + ..\..\..\components\libc\compilers\common\cunistd.c cwchar.c 1 - ..\..\components\libc\compilers\common\cwchar.c + ..\..\..\components\libc\compilers\common\cwchar.c kerrno.c 1 - ..\..\src\klibc\kerrno.c + ..\..\..\src\klibc\kerrno.c kstdio.c 1 - ..\..\src\klibc\kstdio.c + ..\..\..\src\klibc\kstdio.c kstring.c 1 - ..\..\src\klibc\kstring.c + ..\..\..\src\klibc\kstring.c rt_vsnprintf_tiny.c 1 - ..\..\src\klibc\rt_vsnprintf_tiny.c + ..\..\..\src\klibc\rt_vsnprintf_tiny.c rt_vsscanf.c 1 - ..\..\src\klibc\rt_vsscanf.c + ..\..\..\src\klibc\rt_vsscanf.c diff --git a/bsp/mm32f103x/rtconfig.h b/bsp/mm32/mm32f103x/rtconfig.h similarity index 99% rename from bsp/mm32f103x/rtconfig.h rename to bsp/mm32/mm32f103x/rtconfig.h index 6d4a2bdedd8..60bca8f3d15 100644 --- a/bsp/mm32f103x/rtconfig.h +++ b/bsp/mm32/mm32f103x/rtconfig.h @@ -414,6 +414,8 @@ /* end of UART Drivers */ /* end of On-chip Peripheral Drivers */ /* end of Hardware Drivers Config */ +#define SOC_FAMILY_MM32 +#define SOC_SERIES_MM32F103 #define SOC_MM32L373 #endif diff --git a/bsp/mm32f327x/rtconfig.py b/bsp/mm32/mm32f103x/rtconfig.py similarity index 92% rename from bsp/mm32f327x/rtconfig.py rename to bsp/mm32/mm32f103x/rtconfig.py index 78f52f55e96..16ca92fcedf 100644 --- a/bsp/mm32f327x/rtconfig.py +++ b/bsp/mm32/mm32f103x/rtconfig.py @@ -45,7 +45,7 @@ DEVICE = ' -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -Wall' CFLAGS = DEVICE + ' -std=c99' AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' - LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T drivers/linker_scripts/link.lds' + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T board/linker_scripts/link.lds' CPATH = '' LPATH = '' @@ -68,7 +68,7 @@ DEVICE = ' --cpu ' + CPU CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99' AFLAGS = DEVICE + ' --apcs=interwork ' - LFLAGS = DEVICE + ' --scatter "drivers/linker_scripts/link.sct" --info sizes --info totals --info unused --info veneers --list rtthread.map --strict' + LFLAGS = DEVICE + ' --scatter "board/linker_scripts/link.sct" --info sizes --info totals --info unused --info veneers --list rtthread.map --strict' CFLAGS += ' -I' + EXEC_PATH + '/ARM/ARMCC/INC' LFLAGS += ' --libpath ' + EXEC_PATH + '/ARM/ARMCC/LIB' @@ -127,7 +127,7 @@ else: CFLAGS += ' -Oh' - LFLAGS = ' --config "drivers/linker_scripts/link.icf"' + LFLAGS = ' --config "board/linker_scripts/link.icf"' LFLAGS += ' --entry __iar_program_start' #LFLAGS += ' --silent' diff --git a/bsp/mm32f103x/template.ewp b/bsp/mm32/mm32f103x/template.ewp similarity index 97% rename from bsp/mm32f103x/template.ewp rename to bsp/mm32/mm32f103x/template.ewp index a2d6a9d1d51..e2afae9e4a0 100644 --- a/bsp/mm32f103x/template.ewp +++ b/bsp/mm32/mm32f103x/template.ewp @@ -1,2106 +1,2106 @@ - - - 3 - - rt-thread - - ARM - - 1 - - General - 3 - - 31 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 35 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 23 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Release - - ARM - - 0 - - General - 3 - - 31 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 35 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 23 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - BILINK - 0 - - - - + + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 35 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 23 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 35 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 23 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + diff --git a/bsp/mm32f103x/template.eww b/bsp/mm32/mm32f103x/template.eww similarity index 100% rename from bsp/mm32f103x/template.eww rename to bsp/mm32/mm32f103x/template.eww diff --git a/bsp/mm32f103x/template.uvopt b/bsp/mm32/mm32f103x/template.uvopt similarity index 100% rename from bsp/mm32f103x/template.uvopt rename to bsp/mm32/mm32f103x/template.uvopt diff --git a/bsp/mm32f103x/template.uvoptx b/bsp/mm32/mm32f103x/template.uvoptx similarity index 100% rename from bsp/mm32f103x/template.uvoptx rename to bsp/mm32/mm32f103x/template.uvoptx diff --git a/bsp/mm32f103x/template.uvprojx b/bsp/mm32/mm32f103x/template.uvprojx similarity index 99% rename from bsp/mm32f103x/template.uvprojx rename to bsp/mm32/mm32f103x/template.uvprojx index 12e9ccd9612..206a8104377 100644 --- a/bsp/mm32f103x/template.uvprojx +++ b/bsp/mm32/mm32f103x/template.uvprojx @@ -370,7 +370,7 @@ 0x00000000 0x20000000 - .\drivers\linker_scripts\link.sct + .\board\linker_scripts\link.sct diff --git a/bsp/mm32/mm32f3270-100ask-pitaya/board/Kconfig b/bsp/mm32/mm32f3270-100ask-pitaya/board/Kconfig index 9fdc98647cd..9cad4b4575b 100644 --- a/bsp/mm32/mm32f3270-100ask-pitaya/board/Kconfig +++ b/bsp/mm32/mm32f3270-100ask-pitaya/board/Kconfig @@ -49,7 +49,7 @@ menu "On-chip Peripheral Drivers" default n endif - rsource "../../libraries/HAL_Drivers/Kconfig" + source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu diff --git a/bsp/mm32/mm32f3270-100ask-pitaya/project.ewp b/bsp/mm32/mm32f3270-100ask-pitaya/project.ewp index 31e405b0c30..6c404e18015 100644 --- a/bsp/mm32/mm32f3270-100ask-pitaya/project.ewp +++ b/bsp/mm32/mm32f3270-100ask-pitaya/project.ewp @@ -1,2409 +1,2411 @@ - - 3 - - Debug - - ARM - - 1 - - General - 3 - - 31 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 35 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 22 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Release - - ARM - - 0 - - General - 3 - - 31 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 35 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 22 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - BILINK - 0 - - - - - Applications - - $PROJ_DIR$\applications\main.c - - - - CPU - - $PROJ_DIR$\..\..\..\libcpu\arm\common\atomic_arm.c - - - $PROJ_DIR$\..\..\..\libcpu\arm\common\div0.c - - - $PROJ_DIR$\..\..\..\libcpu\arm\common\showmem.c - - - $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m3\context_iar.S - - - $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m3\cpuport.c - - - - DeviceDrivers - - $PROJ_DIR$\..\..\..\components\drivers\core\device.c - - - $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_comm.c - - - $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_up.c - - - $PROJ_DIR$\..\..\..\components\drivers\ipc\condvar.c - - - $PROJ_DIR$\..\..\..\components\drivers\ipc\dataqueue.c - - - $PROJ_DIR$\..\..\..\components\drivers\ipc\pipe.c - - - $PROJ_DIR$\..\..\..\components\drivers\ipc\ringblk_buf.c - - - $PROJ_DIR$\..\..\..\components\drivers\ipc\ringbuffer.c - - - $PROJ_DIR$\..\..\..\components\drivers\ipc\waitqueue.c - - - $PROJ_DIR$\..\..\..\components\drivers\ipc\workqueue.c - - - $PROJ_DIR$\..\..\..\components\drivers\pin\dev_pin.c - - - $PROJ_DIR$\..\..\..\components\drivers\serial\dev_serial.c - - - - Drivers - - $PROJ_DIR$\..\libraries\MM32F3270_HAL\CMSIS\Device\MM32\MM32F3277\Source\Templates\iar\startup_mm32f3270.s - - - $PROJ_DIR$\board\board.c - - - $PROJ_DIR$\board\mm32f3277g8p_msp.c - - - $PROJ_DIR$\board\ports\user_key.c - - - $PROJ_DIR$\..\libraries\HAL_Drivers\drv_common.c - - - $PROJ_DIR$\..\libraries\HAL_Drivers\drv_gpio.c - - - $PROJ_DIR$\..\libraries\HAL_Drivers\drv_uart.c - - - - Filesystem - - $PROJ_DIR$\..\..\..\components\dfs\dfs_v1\filesystems\devfs\devfs.c - - - $PROJ_DIR$\..\..\..\components\dfs\dfs_v1\src\dfs.c - - - $PROJ_DIR$\..\..\..\components\dfs\dfs_v1\src\dfs_file.c - - - $PROJ_DIR$\..\..\..\components\dfs\dfs_v1\src\dfs_fs.c - - - $PROJ_DIR$\..\..\..\components\dfs\dfs_v1\src\dfs_posix.c - - - - Finsh - - $PROJ_DIR$\..\..\..\components\finsh\shell.c - - - $PROJ_DIR$\..\..\..\components\finsh\msh.c - - - $PROJ_DIR$\..\..\..\components\finsh\msh_parse.c - - - $PROJ_DIR$\..\..\..\components\finsh\cmd.c - - - $PROJ_DIR$\..\..\..\components\finsh\msh_file.c - - - - Kernel - - $PROJ_DIR$\..\..\..\src\clock.c - - - $PROJ_DIR$\..\..\..\src\components.c - - - $PROJ_DIR$\..\..\..\src\cpu_up.c - - - $PROJ_DIR$\..\..\..\src\defunct.c - - - $PROJ_DIR$\..\..\..\src\idle.c - - - $PROJ_DIR$\..\..\..\src\ipc.c - - - $PROJ_DIR$\..\..\..\src\irq.c - - - $PROJ_DIR$\..\..\..\src\kservice.c - - - $PROJ_DIR$\..\..\..\src\mem.c - - - $PROJ_DIR$\..\..\..\src\mempool.c - - - $PROJ_DIR$\..\..\..\src\object.c - - - $PROJ_DIR$\..\..\..\src\scheduler_comm.c - - - $PROJ_DIR$\..\..\..\src\scheduler_up.c - - - $PROJ_DIR$\..\..\..\src\thread.c - - - $PROJ_DIR$\..\..\..\src\timer.c - - - - Libc - - $PROJ_DIR$\..\..\..\components\libc\compilers\common\cctype.c - - - $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstdlib.c - - - $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstring.c - - - $PROJ_DIR$\..\..\..\components\libc\compilers\common\ctime.c - - - $PROJ_DIR$\..\..\..\components\libc\compilers\common\cunistd.c - - - $PROJ_DIR$\..\..\..\components\libc\compilers\common\cwchar.c - - - $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\environ.c - - - $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_close.c - - - $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_lseek.c - - - $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_mem.c - - - $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_open.c - - - $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_read.c - - - $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_remove.c - - - $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_write.c - - - $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscalls.c - - - $PROJ_DIR$\..\..\..\src\klibc\kerrno.c - - - $PROJ_DIR$\..\..\..\src\klibc\kstdio.c - - - $PROJ_DIR$\..\..\..\src\klibc\kstring.c - - - $PROJ_DIR$\..\..\..\src\klibc\rt_vsnprintf_tiny.c - - - $PROJ_DIR$\..\..\..\src\klibc\rt_vsscanf.c - - - - Libraries - - $PROJ_DIR$\..\libraries\MM32F3270_HAL\CMSIS\Device\MM32\MM32F3277\Source\Templates\system_mm32f3277g.c - - - $PROJ_DIR$\..\libraries\MM32F3270_HAL\MM32F3270_HAL_Driver\Src\hal_rcc.c - - - $PROJ_DIR$\..\libraries\MM32F3270_HAL\MM32F3270_HAL_Driver\Src\hal_dma.c - - - $PROJ_DIR$\..\libraries\MM32F3270_HAL\MM32F3270_HAL_Driver\Src\hal_gpio.c - - - $PROJ_DIR$\..\libraries\MM32F3270_HAL\MM32F3270_HAL_Driver\Src\hal_exti.c - - - $PROJ_DIR$\..\libraries\MM32F3270_HAL\MM32F3270_HAL_Driver\Src\hal_syscfg.c - - - $PROJ_DIR$\..\libraries\MM32F3270_HAL\MM32F3270_HAL_Driver\Src\hal_uart.c - - - - utc_UTest - - - utestcases - - + + 3 + + Debug + + ARM + + 1 + + General + 3 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 35 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 35 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + CPU + + $PROJ_DIR$\..\..\..\libcpu\arm\common\atomic_arm.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\showmem.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m3\context_iar.S + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m3\cpuport.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\components\drivers\core\device.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_comm.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_up.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\condvar.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\workqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\pin\dev_pin.c + + + $PROJ_DIR$\..\..\..\components\drivers\serial\dev_serial.c + + + + Drivers + + $PROJ_DIR$\..\libraries\MM32F3270_HAL\CMSIS\Device\MM32\MM32F3277\Source\Templates\iar\startup_mm32f3270.s + + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\board\mm32f3277g8p_msp.c + + + $PROJ_DIR$\board\ports\user_key.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_common.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drivers\drv_uart.c + + + + Filesystem + + $PROJ_DIR$\..\..\..\components\dfs\dfs_v1\filesystems\devfs\devfs.c + + + $PROJ_DIR$\..\..\..\components\dfs\dfs_v1\src\dfs.c + + + $PROJ_DIR$\..\..\..\components\dfs\dfs_v1\src\dfs_file.c + + + $PROJ_DIR$\..\..\..\components\dfs\dfs_v1\src\dfs_fs.c + + + $PROJ_DIR$\..\..\..\components\dfs\dfs_v1\src\dfs_posix.c + + + + Finsh + + $PROJ_DIR$\..\..\..\components\finsh\shell.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh_parse.c + + + $PROJ_DIR$\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh_file.c + + + + Kernel + + $PROJ_DIR$\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\src\cpu_up.c + + + $PROJ_DIR$\..\..\..\src\defunct.c + + + $PROJ_DIR$\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\src\scheduler_comm.c + + + $PROJ_DIR$\..\..\..\src\scheduler_up.c + + + $PROJ_DIR$\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\src\timer.c + + + + Libc + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cctype.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstdlib.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstring.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\ctime.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cunistd.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cwchar.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\src\klibc\kerrno.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstdio.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstring.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsnprintf_tiny.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsscanf.c + + + + Libraries + + $PROJ_DIR$\..\libraries\MM32F3270_HAL\CMSIS\Device\MM32\MM32F3277\Source\Templates\system_mm32f3277g.c + + + $PROJ_DIR$\..\libraries\MM32F3270_HAL\MM32F3270_HAL_Driver\Src\hal_rcc.c + + + $PROJ_DIR$\..\libraries\MM32F3270_HAL\MM32F3270_HAL_Driver\Src\hal_dma.c + + + $PROJ_DIR$\..\libraries\MM32F3270_HAL\MM32F3270_HAL_Driver\Src\hal_gpio.c + + + $PROJ_DIR$\..\libraries\MM32F3270_HAL\MM32F3270_HAL_Driver\Src\hal_exti.c + + + $PROJ_DIR$\..\libraries\MM32F3270_HAL\MM32F3270_HAL_Driver\Src\hal_syscfg.c + + + $PROJ_DIR$\..\libraries\MM32F3270_HAL\MM32F3270_HAL_Driver\Src\hal_uart.c + + + + utc_UTest + + + utestcases + + diff --git a/bsp/mm32/mm32f3270-100ask-pitaya/project.uvprojx b/bsp/mm32/mm32f3270-100ask-pitaya/project.uvprojx index 5cb04fba46b..d435f939e4e 100644 --- a/bsp/mm32/mm32f3270-100ask-pitaya/project.uvprojx +++ b/bsp/mm32/mm32f3270-100ask-pitaya/project.uvprojx @@ -336,7 +336,7 @@ RT_USING_ARMLIBC, __CLK_TCK=RT_TICK_PER_SECOND, RT_USING_LIBC, MM32F3277G, __RTTHREAD__, USE_HAL_DRIVER, __STDC_LIMIT_MACROS - ..\..\..\components\net\utest;..\..\..\components\drivers\include;.;..\..\..\components\libc\compilers\common\extension;..\..\..\components\drivers\phy;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\libraries\HAL_Drivers\config;..\..\..\components\libc\posix\ipc;board;..\..\..\components\dfs\dfs_v1\include;..\..\..\components\finsh;..\..\..\components\libc\posix\io\epoll;..\libraries\MM32F3270_HAL\CMSIS\Include;..\..\..\components\drivers\smp_call;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\components\drivers\include;..\..\..\components\libc\compilers\common\include;..\..\..\components\drivers\include;board\ports;..\libraries\MM32F3270_HAL\CMSIS\Device\MM32\MM32F3277\Include;applications;..\libraries\HAL_Drivers;..\..\..\libcpu\arm\cortex-m3;..\..\..\components\dfs\dfs_v1\filesystems\devfs;..\..\..\include;..\..\..\libcpu\arm\common;..\libraries\MM32F3270_HAL\MM32F3270_HAL_Driver\Inc;..\..\..\components\libc\posix\io\eventfd;..\..\..\components\libc\posix\io\poll + ..\..\..\components\net\utest;..\..\..\components\drivers\include;.;..\..\..\components\libc\compilers\common\extension;..\..\..\components\drivers\phy;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\libraries\HAL_Drivers\drivers\config;..\..\..\components\libc\posix\ipc;board;..\..\..\components\dfs\dfs_v1\include;..\..\..\components\finsh;..\..\..\components\libc\posix\io\epoll;..\libraries\MM32F3270_HAL\CMSIS\Include;..\..\..\components\drivers\smp_call;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\components\drivers\include;..\..\..\components\libc\compilers\common\include;..\..\..\components\drivers\include;board\ports;..\libraries\MM32F3270_HAL\CMSIS\Device\MM32\MM32F3277\Include;applications;..\libraries\HAL_Drivers;..\libraries\HAL_Drivers\drivers;..\..\..\libcpu\arm\cortex-m3;..\..\..\components\dfs\dfs_v1\filesystems\devfs;..\..\..\include;..\..\..\libcpu\arm\common;..\libraries\MM32F3270_HAL\MM32F3270_HAL_Driver\Inc;..\..\..\components\libc\posix\io\eventfd;..\..\..\components\libc\posix\io\poll @@ -697,14 +697,14 @@ drv_gpio.c 1 - ..\libraries\HAL_Drivers\drv_gpio.c + ..\libraries\HAL_Drivers\drivers\drv_gpio.c drv_uart.c 1 - ..\libraries\HAL_Drivers\drv_uart.c + ..\libraries\HAL_Drivers\drivers\drv_uart.c diff --git a/bsp/mm32f327x/.clang-format-ignore b/bsp/mm32/mm32f327x/.clang-format-ignore similarity index 100% rename from bsp/mm32f327x/.clang-format-ignore rename to bsp/mm32/mm32f327x/.clang-format-ignore diff --git a/bsp/mm32f327x/.config b/bsp/mm32/mm32f327x/.config similarity index 99% rename from bsp/mm32f327x/.config rename to bsp/mm32/mm32f327x/.config index 3963af6aef9..07752b6aff5 100644 --- a/bsp/mm32f327x/.config +++ b/bsp/mm32/mm32f327x/.config @@ -1450,4 +1450,6 @@ CONFIG_BSP_USING_UART2=y # end of On-chip Peripheral Drivers # end of Hardware Drivers Config +CONFIG_SOC_FAMILY_MM32=y +CONFIG_SOC_SERIES_MM32F327=y CONFIG_SOC_MM32F373=y diff --git a/bsp/mm32f327x/Kconfig b/bsp/mm32/mm32f327x/Kconfig similarity index 69% rename from bsp/mm32f327x/Kconfig rename to bsp/mm32/mm32f327x/Kconfig index 2325aae3367..8f136498d79 100644 --- a/bsp/mm32f327x/Kconfig +++ b/bsp/mm32/mm32f327x/Kconfig @@ -2,16 +2,18 @@ mainmenu "RT-Thread Configuration" BSP_DIR := . -RTT_DIR := ../.. +RTT_DIR := ../../.. PKGS_DIR := packages -source "$(RTT_DIR)/Kconfig" -osource "$PKGS_DIR/Kconfig" -rsource "drivers/Kconfig" - config SOC_MM32F373 bool + select SOC_SERIES_MM32F327 select RT_USING_COMPONENTS_INIT select RT_USING_USER_MAIN default y + +source "$(RTT_DIR)/Kconfig" +osource "$PKGS_DIR/Kconfig" +rsource "../libraries/Kconfig" +rsource "board/Kconfig" diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/arm_common_tables.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/arm_common_tables.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/arm_common_tables.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/arm_common_tables.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/arm_const_structs.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/arm_const_structs.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/arm_const_structs.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/arm_const_structs.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/arm_math.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/arm_math.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/arm_math.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/arm_math.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_armcc.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_armcc.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_armcc.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_armcc.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_armclang.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_armclang.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_armclang.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_armclang.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_compiler.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_compiler.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_compiler.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_compiler.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_gcc.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_gcc.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_gcc.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/cmsis_gcc.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_armv8mbl.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_armv8mbl.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_armv8mbl.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_armv8mbl.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_armv8mml.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_armv8mml.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_armv8mml.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_armv8mml.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm0.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm0.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm0.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm0.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm0plus.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm0plus.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm0plus.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm0plus.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm23.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm23.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm23.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm23.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm3.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm3.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm3.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm3.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm33.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm33.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm33.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm33.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm4.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm4.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm4.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm4.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm7.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm7.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm7.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_cm7.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_sc000.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_sc000.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_sc000.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_sc000.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_sc300.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_sc300.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/core_sc300.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/core_sc300.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/IAR_Core/tz_context.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/tz_context.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/IAR_Core/tz_context.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/IAR_Core/tz_context.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/arm_common_tables.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/arm_common_tables.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/arm_common_tables.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/arm_common_tables.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/arm_const_structs.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/arm_const_structs.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/arm_const_structs.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/arm_const_structs.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/arm_math.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/arm_math.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/arm_math.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/arm_math.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_armcc.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_armcc.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_armcc.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_armcc.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_armclang.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_armclang.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_armclang.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_armclang.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_compiler.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_compiler.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_compiler.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_compiler.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_gcc.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_gcc.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_gcc.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/cmsis_gcc.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_armv8mbl.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_armv8mbl.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_armv8mbl.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_armv8mbl.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_armv8mml.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_armv8mml.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_armv8mml.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_armv8mml.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm0.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm0.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm0.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm0.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm0plus.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm0plus.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm0plus.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm0plus.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm23.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm23.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm23.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm23.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm3.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm3.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm3.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm3.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm33.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm33.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm33.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm33.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm4.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm4.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm4.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm4.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm7.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm7.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm7.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_cm7.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_sc000.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_sc000.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_sc000.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_sc000.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_sc300.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_sc300.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/core_sc300.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/core_sc300.h diff --git a/bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/tz_context.h b/bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/tz_context.h similarity index 100% rename from bsp/mm32f327x/Libraries/CMSIS/KEIL_Core/tz_context.h rename to bsp/mm32/mm32f327x/Libraries/CMSIS/KEIL_Core/tz_context.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/dtype.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/dtype.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/dtype.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/dtype.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_adc.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_adc.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_adc.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_adc.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_bkp.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_bkp.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_bkp.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_bkp.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_can.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_can.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_can.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_can.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_comp.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_comp.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_comp.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_comp.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_conf.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_conf.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_conf.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_conf.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_crc.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_crc.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_crc.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_crc.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_crs.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_crs.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_crs.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_crs.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_dac.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_dac.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_dac.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_dac.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_dbg.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_dbg.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_dbg.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_dbg.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_device.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_device.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_device.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_device.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_dma.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_dma.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_dma.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_dma.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_eth.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_eth.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_eth.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_eth.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_eth_conf.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_eth_conf.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_eth_conf.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_eth_conf.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_exti.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_exti.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_exti.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_exti.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_flash.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_flash.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_flash.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_flash.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_fsmc.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_fsmc.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_fsmc.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_fsmc.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_gpio.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_gpio.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_gpio.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_gpio.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_i2c.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_i2c.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_i2c.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_i2c.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_iwdg.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_iwdg.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_iwdg.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_iwdg.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_misc.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_misc.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_misc.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_misc.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_pwr.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_pwr.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_pwr.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_pwr.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_rcc.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_rcc.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_rcc.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_rcc.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_redefine.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_redefine.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_redefine.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_redefine.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_rtc.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_rtc.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_rtc.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_rtc.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_sdio.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_sdio.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_sdio.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_sdio.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_spi.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_spi.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_spi.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_spi.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_syscfg.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_syscfg.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_syscfg.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_syscfg.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_tim.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_tim.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_tim.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_tim.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_uart.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_uart.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_uart.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_uart.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_uid.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_uid.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_uid.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_uid.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_ver.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_ver.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_ver.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_ver.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_wwdg.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_wwdg.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_wwdg.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_wwdg.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_adc.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_adc.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_adc.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_adc.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_bkp.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_bkp.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_bkp.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_bkp.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_can.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_can.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_can.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_can.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_comp.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_comp.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_comp.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_comp.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_crc.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_crc.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_crc.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_crc.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_crs.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_crs.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_crs.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_crs.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_dac.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_dac.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_dac.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_dac.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_dbg.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_dbg.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_dbg.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_dbg.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_dma.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_dma.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_dma.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_dma.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_eth.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_eth.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_eth.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_eth.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_exti.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_exti.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_exti.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_exti.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_flash.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_flash.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_flash.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_flash.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_fsmc.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_fsmc.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_fsmc.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_fsmc.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_gpio.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_gpio.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_gpio.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_gpio.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_i2c.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_i2c.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_i2c.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_i2c.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_iwdg.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_iwdg.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_iwdg.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_iwdg.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_misc.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_misc.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_misc.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_misc.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_pwr.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_pwr.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_pwr.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_pwr.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_rcc.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_rcc.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_rcc.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_rcc.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_rtc.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_rtc.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_rtc.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_rtc.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_sdio.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_sdio.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_sdio.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_sdio.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_spi.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_spi.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_spi.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_spi.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_tim.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_tim.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_tim.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_tim.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_uart.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_uart.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_uart.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_uart.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_uid.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_uid.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_uid.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_uid.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_ver.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_ver.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_ver.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_ver.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_wwdg.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_wwdg.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_wwdg.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_wwdg.c diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/mm32_device.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/mm32_device.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/mm32_device.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/mm32_device.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/mm32_reg.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/mm32_reg.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/mm32_reg.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/mm32_reg.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/mm32_reg_redefine_v1.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/mm32_reg_redefine_v1.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/mm32_reg_redefine_v1.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/mm32_reg_redefine_v1.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_adc.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_adc.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_adc.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_adc.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_bkp.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_bkp.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_bkp.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_bkp.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_can.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_can.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_can.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_can.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_common.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_common.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_common.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_common.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_comp.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_comp.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_comp.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_comp.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_crc.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_crc.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_crc.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_crc.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_crs.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_crs.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_crs.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_crs.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_dac.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_dac.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_dac.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_dac.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_dbg.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_dbg.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_dbg.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_dbg.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_dma.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_dma.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_dma.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_dma.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_eth.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_eth.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_eth.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_eth.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_exti.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_exti.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_exti.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_exti.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_flash.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_flash.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_flash.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_flash.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_fsmc.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_fsmc.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_fsmc.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_fsmc.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_gpio.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_gpio.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_gpio.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_gpio.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_i2c.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_i2c.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_i2c.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_i2c.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_iwdg.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_iwdg.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_iwdg.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_iwdg.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_pwm.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_pwm.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_pwm.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_pwm.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_pwr.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_pwr.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_pwr.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_pwr.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_rcc.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_rcc.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_rcc.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_rcc.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_rtc.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_rtc.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_rtc.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_rtc.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_sdio.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_sdio.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_sdio.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_sdio.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_spi.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_spi.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_spi.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_spi.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_syscfg.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_syscfg.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_syscfg.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_syscfg.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_tim.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_tim.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_tim.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_tim.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_uart.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_uart.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_uart.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_uart.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_usb_otg_fs.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_usb_otg_fs.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_usb_otg_fs.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_usb_otg_fs.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/reg_wwdg.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_wwdg.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/reg_wwdg.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/reg_wwdg.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Include/types.h b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/types.h similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Include/types.h rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Include/types.h diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Source/IAR_StartAsm/startup_mm32f327x_iar.s b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Source/IAR_StartAsm/startup_mm32f327x_iar.s similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Source/IAR_StartAsm/startup_mm32f327x_iar.s rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Source/IAR_StartAsm/startup_mm32f327x_iar.s diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Source/KEIL_StartAsm/startup_mm32f327x_keil.s b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Source/KEIL_StartAsm/startup_mm32f327x_keil.s similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Source/KEIL_StartAsm/startup_mm32f327x_keil.s rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Source/KEIL_StartAsm/startup_mm32f327x_keil.s diff --git a/bsp/mm32f327x/Libraries/MM32F327x/Source/system_mm32f327x.c b/bsp/mm32/mm32f327x/Libraries/MM32F327x/Source/system_mm32f327x.c similarity index 100% rename from bsp/mm32f327x/Libraries/MM32F327x/Source/system_mm32f327x.c rename to bsp/mm32/mm32f327x/Libraries/MM32F327x/Source/system_mm32f327x.c diff --git a/bsp/mm32f327x/Libraries/SConscript b/bsp/mm32/mm32f327x/Libraries/SConscript similarity index 100% rename from bsp/mm32f327x/Libraries/SConscript rename to bsp/mm32/mm32f327x/Libraries/SConscript diff --git a/bsp/mm32f327x/README.md b/bsp/mm32/mm32f327x/README.md similarity index 97% rename from bsp/mm32f327x/README.md rename to bsp/mm32/mm32f327x/README.md index 7c47f731268..a9e517e2bbf 100644 --- a/bsp/mm32f327x/README.md +++ b/bsp/mm32/mm32f327x/README.md @@ -52,7 +52,7 @@ MM32F3270 EVB 开发板特性: 双击 project.uvprojx 文件,打开 MDK5 工程,编译并下载程序到开发板。 -推荐熟悉 RT_Thread 的用户使用[env工具](https://www.rt-thread.org/download.html#download-rt-thread-env-tool),可以在console下进入到 `bsp/mm32l37x` 目录中,运行以下命令: +推荐熟悉 RT_Thread 的用户使用[env工具](https://www.rt-thread.org/download.html#download-rt-thread-env-tool),可以在console下进入到 `bsp/mm32/mm32f327x` 目录中,运行以下命令: `scons` diff --git a/bsp/mm32f327x/SConscript b/bsp/mm32/mm32f327x/SConscript similarity index 100% rename from bsp/mm32f327x/SConscript rename to bsp/mm32/mm32f327x/SConscript diff --git a/bsp/mm32f103x/SConstruct b/bsp/mm32/mm32f327x/SConstruct similarity index 74% rename from bsp/mm32f103x/SConstruct rename to bsp/mm32/mm32f327x/SConstruct index 35a7f75de0e..b2ebc5187e5 100644 --- a/bsp/mm32f103x/SConstruct +++ b/bsp/mm32/mm32f327x/SConstruct @@ -5,7 +5,7 @@ import rtconfig if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT') else: - RTT_ROOT = os.path.normpath(os.getcwd() + '/../..') + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] try: @@ -33,8 +33,15 @@ if rtconfig.PLATFORM in ['iccarm']: Export('RTT_ROOT') Export('rtconfig') +SDK_ROOT = os.path.abspath('./') +libraries_path_prefix = os.path.join(os.path.dirname(SDK_ROOT), 'libraries') + # prepare building environment objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'), + variant_dir='build/libraries/HAL_Drivers', duplicate=0)) + # make a building DoBuilding(TARGET, objs) diff --git a/bsp/mm32f327x/applications/SConscript b/bsp/mm32/mm32f327x/applications/SConscript similarity index 100% rename from bsp/mm32f327x/applications/SConscript rename to bsp/mm32/mm32f327x/applications/SConscript diff --git a/bsp/mm32f327x/applications/main.c b/bsp/mm32/mm32f327x/applications/main.c similarity index 100% rename from bsp/mm32f327x/applications/main.c rename to bsp/mm32/mm32f327x/applications/main.c diff --git a/bsp/mm32f327x/drivers/Kconfig b/bsp/mm32/mm32f327x/board/Kconfig similarity index 95% rename from bsp/mm32f327x/drivers/Kconfig rename to bsp/mm32/mm32f327x/board/Kconfig index 0d22a9c319b..90d33438079 100644 --- a/bsp/mm32f327x/drivers/Kconfig +++ b/bsp/mm32/mm32f327x/board/Kconfig @@ -50,5 +50,7 @@ menu "Hardware Drivers Config" select PKG_USING_LITTLEFS default n endmenu + + source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu endmenu diff --git a/bsp/mm32/mm32f327x/board/SConscript b/bsp/mm32/mm32f327x/board/SConscript new file mode 100644 index 00000000000..a3c45aa781e --- /dev/null +++ b/bsp/mm32/mm32f327x/board/SConscript @@ -0,0 +1,11 @@ +from building import * + +cwd = GetCurrentDir() + +src = ['board.c'] + +CPPPATH = [cwd] + +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/mm32f327x/drivers/board.c b/bsp/mm32/mm32f327x/board/board.c similarity index 100% rename from bsp/mm32f327x/drivers/board.c rename to bsp/mm32/mm32f327x/board/board.c diff --git a/bsp/mm32f327x/drivers/board.h b/bsp/mm32/mm32f327x/board/board.h similarity index 100% rename from bsp/mm32f327x/drivers/board.h rename to bsp/mm32/mm32f327x/board/board.h diff --git a/bsp/mm32f327x/drivers/linker_scripts/link.icf b/bsp/mm32/mm32f327x/board/linker_scripts/link.icf similarity index 100% rename from bsp/mm32f327x/drivers/linker_scripts/link.icf rename to bsp/mm32/mm32f327x/board/linker_scripts/link.icf diff --git a/bsp/mm32f327x/drivers/linker_scripts/link.lds b/bsp/mm32/mm32f327x/board/linker_scripts/link.lds similarity index 100% rename from bsp/mm32f327x/drivers/linker_scripts/link.lds rename to bsp/mm32/mm32f327x/board/linker_scripts/link.lds diff --git a/bsp/mm32f327x/drivers/linker_scripts/link.sct b/bsp/mm32/mm32f327x/board/linker_scripts/link.sct similarity index 100% rename from bsp/mm32f327x/drivers/linker_scripts/link.sct rename to bsp/mm32/mm32f327x/board/linker_scripts/link.sct diff --git a/bsp/mm32f327x/figures/MM32EVB.jpg b/bsp/mm32/mm32f327x/figures/MM32EVB.jpg similarity index 100% rename from bsp/mm32f327x/figures/MM32EVB.jpg rename to bsp/mm32/mm32f327x/figures/MM32EVB.jpg diff --git a/bsp/mm32f327x/project.ewd b/bsp/mm32/mm32f327x/project.ewd similarity index 100% rename from bsp/mm32f327x/project.ewd rename to bsp/mm32/mm32f327x/project.ewd diff --git a/bsp/mm32f327x/project.ewp b/bsp/mm32/mm32f327x/project.ewp similarity index 87% rename from bsp/mm32f327x/project.ewp rename to bsp/mm32/mm32f327x/project.ewp index f9b55a6a3bf..1b3434ff7c8 100644 --- a/bsp/mm32f327x/project.ewp +++ b/bsp/mm32/mm32f327x/project.ewp @@ -1,2444 +1,2446 @@ - - 3 - - rt-thread - - ARM - - 1 - - General - 3 - - 33 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 37 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 11 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - inputOutputBased - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 25 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - - Release - - ARM - - 0 - - General - 3 - - 33 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 37 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 11 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - 0 - inputOutputBased - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 25 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - - Applications - - $PROJ_DIR$\applications\main.c - - - - CPU - - $PROJ_DIR$\..\..\libcpu\arm\common\div0.c - - - $PROJ_DIR$\..\..\libcpu\arm\common\showmem.c - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m3\context_iar.S - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m3\cpuport.c - - - - DeviceDrivers - - $PROJ_DIR$\..\..\components\drivers\core\device.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\completion_comm.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\completion_up.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\condvar.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\dataqueue.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\pipe.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\ringblk_buf.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\ringbuffer.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\waitqueue.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\workqueue.c - - - $PROJ_DIR$\..\..\components\drivers\pin\dev_pin.c - - - $PROJ_DIR$\..\..\components\drivers\serial\dev_serial.c - - - - Drivers - - $PROJ_DIR$\drivers\board.c - - - $PROJ_DIR$\drivers\drv_uart.c - - - $PROJ_DIR$\drivers\drv_gpio.c - - - - Finsh - - $PROJ_DIR$\..\..\components\finsh\shell.c - - - $PROJ_DIR$\..\..\components\finsh\msh.c - - - $PROJ_DIR$\..\..\components\finsh\msh_parse.c - - - $PROJ_DIR$\..\..\components\finsh\cmd.c - - - - Kernel - - $PROJ_DIR$\..\..\src\clock.c - - - $PROJ_DIR$\..\..\src\components.c - - - $PROJ_DIR$\..\..\src\cpu_up.c - - - $PROJ_DIR$\..\..\src\defunct.c - - - $PROJ_DIR$\..\..\src\idle.c - - - $PROJ_DIR$\..\..\src\ipc.c - - - $PROJ_DIR$\..\..\src\irq.c - - - $PROJ_DIR$\..\..\src\kservice.c - - - $PROJ_DIR$\..\..\src\mem.c - - - $PROJ_DIR$\..\..\src\memheap.c - - - $PROJ_DIR$\..\..\src\mempool.c - - - $PROJ_DIR$\..\..\src\object.c - - - $PROJ_DIR$\..\..\src\scheduler_comm.c - - - $PROJ_DIR$\..\..\src\scheduler_up.c - - - $PROJ_DIR$\..\..\src\thread.c - - - $PROJ_DIR$\..\..\src\timer.c - - - - Libc - - $PROJ_DIR$\..\..\components\libc\compilers\common\cctype.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cstdlib.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cstring.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\ctime.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cunistd.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cwchar.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\environ.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_close.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_lseek.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_mem.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_open.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_read.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_remove.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_write.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscalls.c - - - $PROJ_DIR$\..\..\src\klibc\kerrno.c - - - $PROJ_DIR$\..\..\src\klibc\kstdio.c - - - $PROJ_DIR$\..\..\src\klibc\kstring.c - - - $PROJ_DIR$\..\..\src\klibc\rt_vsnprintf_tiny.c - - - $PROJ_DIR$\..\..\src\klibc\rt_vsscanf.c - - - - Libraries - - $PROJ_DIR$\Libraries\MM32F327x\Source\system_mm32f327x.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_adc.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_bkp.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_can.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_comp.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_crc.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_crs.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_dac.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_dbg.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_dma.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_eth.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_exti.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_flash.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_fsmc.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_gpio.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_i2c.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_iwdg.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_misc.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_pwr.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_rcc.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_rtc.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_sdio.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_spi.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_tim.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_uart.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_uid.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_ver.c - - - $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_wwdg.c - - - $PROJ_DIR$\Libraries\MM32F327x\Source\IAR_StartAsm\startup_mm32f327x_iar.s - - - - utc_UTest - - - utestcases - - + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + + Release + + ARM + + 0 + + General + 3 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + CPU + + $PROJ_DIR$\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\showmem.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m3\context_iar.S + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m3\cpuport.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\components\drivers\core\device.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_comm.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_up.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\condvar.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\workqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\pin\dev_pin.c + + + $PROJ_DIR$\..\..\..\components\drivers\serial\dev_serial.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drivers\drv_uart.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drivers\drv_gpio.c + + + + Finsh + + $PROJ_DIR$\..\..\..\components\finsh\shell.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh_parse.c + + + $PROJ_DIR$\..\..\..\components\finsh\cmd.c + + + + Kernel + + $PROJ_DIR$\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\src\cpu_up.c + + + $PROJ_DIR$\..\..\..\src\defunct.c + + + $PROJ_DIR$\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\src\memheap.c + + + $PROJ_DIR$\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\src\scheduler_comm.c + + + $PROJ_DIR$\..\..\..\src\scheduler_up.c + + + $PROJ_DIR$\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\src\timer.c + + + + Libc + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cctype.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstdlib.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstring.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\ctime.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cunistd.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cwchar.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\src\klibc\kerrno.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstdio.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstring.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsnprintf_tiny.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsscanf.c + + + + Libraries + + $PROJ_DIR$\Libraries\MM32F327x\Source\system_mm32f327x.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_adc.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_bkp.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_can.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_comp.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_crc.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_crs.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_dac.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_dbg.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_dma.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_eth.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_exti.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_flash.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_fsmc.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_gpio.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_i2c.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_iwdg.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_misc.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_pwr.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_rcc.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_rtc.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_sdio.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_spi.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_tim.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_uart.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_uid.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_ver.c + + + $PROJ_DIR$\Libraries\MM32F327x\HAL_Lib\Src\hal_wwdg.c + + + $PROJ_DIR$\Libraries\MM32F327x\Source\IAR_StartAsm\startup_mm32f327x_iar.s + + + + utc_UTest + + + utestcases + + diff --git a/bsp/mm32f327x/project.eww b/bsp/mm32/mm32f327x/project.eww similarity index 100% rename from bsp/mm32f327x/project.eww rename to bsp/mm32/mm32f327x/project.eww diff --git a/bsp/mm32f327x/project.uvoptx b/bsp/mm32/mm32f327x/project.uvoptx similarity index 100% rename from bsp/mm32f327x/project.uvoptx rename to bsp/mm32/mm32f327x/project.uvoptx diff --git a/bsp/mm32f327x/project.uvprojx b/bsp/mm32/mm32f327x/project.uvprojx similarity index 90% rename from bsp/mm32f327x/project.uvprojx rename to bsp/mm32/mm32f327x/project.uvprojx index 651c2864cc7..388d1ac35ae 100644 --- a/bsp/mm32f327x/project.uvprojx +++ b/bsp/mm32/mm32f327x/project.uvprojx @@ -336,7 +336,7 @@ __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, USE_STDPERIPH_DRIVER, RT_USING_ARMLIBC, RT_USING_LIBC, __STDC_LIMIT_MACROS - Libraries\MM32F327x\HAL_Lib\Inc;..\..\libcpu\arm\common;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\components\drivers\include;Libraries\MM32F327x\Source;..\..\components\libc\compilers\common\include;..\..\components\drivers\phy;..\..\components\libc\posix\io\eventfd;drivers;Libraries\MM32F327x\Include;..\..\components\drivers\include;..\..\components\net\utest;..\..\components\finsh;.;..\..\components\libc\posix\io\epoll;..\..\include;..\..\components\drivers\include;..\..\components\libc\posix\ipc;Libraries\CMSIS\KEIL_Core;..\..\components\libc\compilers\common\extension;..\..\libcpu\arm\cortex-m3;..\..\components\drivers\smp_call;..\..\components\drivers\include;..\..\components\libc\posix\io\poll;applications + Libraries\MM32F327x\HAL_Lib\Inc;..\..\..\libcpu\arm\common;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\components\drivers\include;Libraries\MM32F327x\Source;..\..\..\components\libc\compilers\common\include;..\..\..\components\drivers\phy;..\..\..\components\libc\posix\io\eventfd;board;..\libraries\HAL_Drivers\drivers;Libraries\MM32F327x\Include;..\..\..\components\drivers\include;..\..\..\components\net\utest;..\..\..\components\finsh;.;..\..\..\components\libc\posix\io\epoll;..\..\..\include;..\..\..\components\drivers\include;..\..\..\components\libc\posix\ipc;Libraries\CMSIS\KEIL_Core;..\..\..\components\libc\compilers\common\extension;..\..\..\libcpu\arm\cortex-m3;..\..\..\components\drivers\smp_call;..\..\..\components\drivers\include;..\..\..\components\libc\posix\io\poll;applications @@ -367,7 +367,7 @@ 0x00000000 0x20000000 - .\drivers\linker_scripts\link.sct + .\board\linker_scripts\link.sct @@ -393,28 +393,28 @@ div0.c 1 - ..\..\libcpu\arm\common\div0.c + ..\..\..\libcpu\arm\common\div0.c showmem.c 1 - ..\..\libcpu\arm\common\showmem.c + ..\..\..\libcpu\arm\common\showmem.c context_rvds.S 2 - ..\..\libcpu\arm\cortex-m3\context_rvds.S + ..\..\..\libcpu\arm\cortex-m3\context_rvds.S cpuport.c 1 - ..\..\libcpu\arm\cortex-m3\cpuport.c + ..\..\..\libcpu\arm\cortex-m3\cpuport.c @@ -424,7 +424,7 @@ device.c 1 - ..\..\components\drivers\core\device.c + ..\..\..\components\drivers\core\device.c @@ -443,7 +443,7 @@ completion_comm.c 1 - ..\..\components\drivers\ipc\completion_comm.c + ..\..\..\components\drivers\ipc\completion_comm.c @@ -462,7 +462,7 @@ completion_up.c 1 - ..\..\components\drivers\ipc\completion_up.c + ..\..\..\components\drivers\ipc\completion_up.c @@ -481,7 +481,7 @@ condvar.c 1 - ..\..\components\drivers\ipc\condvar.c + ..\..\..\components\drivers\ipc\condvar.c @@ -500,7 +500,7 @@ dataqueue.c 1 - ..\..\components\drivers\ipc\dataqueue.c + ..\..\..\components\drivers\ipc\dataqueue.c @@ -519,7 +519,7 @@ pipe.c 1 - ..\..\components\drivers\ipc\pipe.c + ..\..\..\components\drivers\ipc\pipe.c @@ -538,7 +538,7 @@ ringblk_buf.c 1 - ..\..\components\drivers\ipc\ringblk_buf.c + ..\..\..\components\drivers\ipc\ringblk_buf.c @@ -557,7 +557,7 @@ ringbuffer.c 1 - ..\..\components\drivers\ipc\ringbuffer.c + ..\..\..\components\drivers\ipc\ringbuffer.c @@ -576,7 +576,7 @@ waitqueue.c 1 - ..\..\components\drivers\ipc\waitqueue.c + ..\..\..\components\drivers\ipc\waitqueue.c @@ -595,7 +595,7 @@ workqueue.c 1 - ..\..\components\drivers\ipc\workqueue.c + ..\..\..\components\drivers\ipc\workqueue.c @@ -614,7 +614,7 @@ dev_pin.c 1 - ..\..\components\drivers\pin\dev_pin.c + ..\..\..\components\drivers\pin\dev_pin.c @@ -633,7 +633,7 @@ dev_serial.c 1 - ..\..\components\drivers\serial\dev_serial.c + ..\..\..\components\drivers\serial\dev_serial.c @@ -655,21 +655,21 @@ board.c 1 - drivers\board.c + board\board.c drv_uart.c 1 - drivers\drv_uart.c + ..\libraries\HAL_Drivers\drivers\drv_uart.c drv_gpio.c 1 - drivers\drv_gpio.c + ..\libraries\HAL_Drivers\drivers\drv_gpio.c @@ -679,28 +679,28 @@ shell.c 1 - ..\..\components\finsh\shell.c + ..\..\..\components\finsh\shell.c msh.c 1 - ..\..\components\finsh\msh.c + ..\..\..\components\finsh\msh.c msh_parse.c 1 - ..\..\components\finsh\msh_parse.c + ..\..\..\components\finsh\msh_parse.c cmd.c 1 - ..\..\components\finsh\cmd.c + ..\..\..\components\finsh\cmd.c @@ -710,7 +710,7 @@ clock.c 1 - ..\..\src\clock.c + ..\..\..\src\clock.c @@ -729,7 +729,7 @@ components.c 1 - ..\..\src\components.c + ..\..\..\src\components.c @@ -748,7 +748,7 @@ cpu_up.c 1 - ..\..\src\cpu_up.c + ..\..\..\src\cpu_up.c @@ -767,7 +767,7 @@ defunct.c 1 - ..\..\src\defunct.c + ..\..\..\src\defunct.c @@ -786,7 +786,7 @@ idle.c 1 - ..\..\src\idle.c + ..\..\..\src\idle.c @@ -805,7 +805,7 @@ ipc.c 1 - ..\..\src\ipc.c + ..\..\..\src\ipc.c @@ -824,7 +824,7 @@ irq.c 1 - ..\..\src\irq.c + ..\..\..\src\irq.c @@ -843,7 +843,7 @@ kservice.c 1 - ..\..\src\kservice.c + ..\..\..\src\kservice.c @@ -862,7 +862,7 @@ mem.c 1 - ..\..\src\mem.c + ..\..\..\src\mem.c @@ -881,7 +881,7 @@ memheap.c 1 - ..\..\src\memheap.c + ..\..\..\src\memheap.c @@ -900,7 +900,7 @@ mempool.c 1 - ..\..\src\mempool.c + ..\..\..\src\mempool.c @@ -919,7 +919,7 @@ object.c 1 - ..\..\src\object.c + ..\..\..\src\object.c @@ -938,7 +938,7 @@ scheduler_comm.c 1 - ..\..\src\scheduler_comm.c + ..\..\..\src\scheduler_comm.c @@ -957,7 +957,7 @@ scheduler_up.c 1 - ..\..\src\scheduler_up.c + ..\..\..\src\scheduler_up.c @@ -976,7 +976,7 @@ thread.c 1 - ..\..\src\thread.c + ..\..\..\src\thread.c @@ -995,7 +995,7 @@ timer.c 1 - ..\..\src\timer.c + ..\..\..\src\timer.c @@ -1017,91 +1017,91 @@ syscall_mem.c 1 - ..\..\components\libc\compilers\armlibc\syscall_mem.c + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c syscalls.c 1 - ..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\components\libc\compilers\armlibc\syscalls.c cctype.c 1 - ..\..\components\libc\compilers\common\cctype.c + ..\..\..\components\libc\compilers\common\cctype.c cstdlib.c 1 - ..\..\components\libc\compilers\common\cstdlib.c + ..\..\..\components\libc\compilers\common\cstdlib.c cstring.c 1 - ..\..\components\libc\compilers\common\cstring.c + ..\..\..\components\libc\compilers\common\cstring.c ctime.c 1 - ..\..\components\libc\compilers\common\ctime.c + ..\..\..\components\libc\compilers\common\ctime.c cunistd.c 1 - ..\..\components\libc\compilers\common\cunistd.c + ..\..\..\components\libc\compilers\common\cunistd.c cwchar.c 1 - ..\..\components\libc\compilers\common\cwchar.c + ..\..\..\components\libc\compilers\common\cwchar.c kerrno.c 1 - ..\..\src\klibc\kerrno.c + ..\..\..\src\klibc\kerrno.c kstdio.c 1 - ..\..\src\klibc\kstdio.c + ..\..\..\src\klibc\kstdio.c kstring.c 1 - ..\..\src\klibc\kstring.c + ..\..\..\src\klibc\kstring.c rt_vsnprintf_tiny.c 1 - ..\..\src\klibc\rt_vsnprintf_tiny.c + ..\..\..\src\klibc\rt_vsnprintf_tiny.c rt_vsscanf.c 1 - ..\..\src\klibc\rt_vsscanf.c + ..\..\..\src\klibc\rt_vsscanf.c diff --git a/bsp/mm32f327x/rtconfig.h b/bsp/mm32/mm32f327x/rtconfig.h similarity index 99% rename from bsp/mm32f327x/rtconfig.h rename to bsp/mm32/mm32f327x/rtconfig.h index 83df195ea7c..6a3fde7c499 100644 --- a/bsp/mm32f327x/rtconfig.h +++ b/bsp/mm32/mm32f327x/rtconfig.h @@ -419,6 +419,8 @@ /* end of Flash Drivers */ /* end of On-chip Peripheral Drivers */ /* end of Hardware Drivers Config */ +#define SOC_FAMILY_MM32 +#define SOC_SERIES_MM32F327 #define SOC_MM32F373 #endif diff --git a/bsp/mm32f103x/rtconfig.py b/bsp/mm32/mm32f327x/rtconfig.py similarity index 92% rename from bsp/mm32f103x/rtconfig.py rename to bsp/mm32/mm32f327x/rtconfig.py index 78f52f55e96..16ca92fcedf 100644 --- a/bsp/mm32f103x/rtconfig.py +++ b/bsp/mm32/mm32f327x/rtconfig.py @@ -45,7 +45,7 @@ DEVICE = ' -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -Wall' CFLAGS = DEVICE + ' -std=c99' AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' - LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T drivers/linker_scripts/link.lds' + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T board/linker_scripts/link.lds' CPATH = '' LPATH = '' @@ -68,7 +68,7 @@ DEVICE = ' --cpu ' + CPU CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99' AFLAGS = DEVICE + ' --apcs=interwork ' - LFLAGS = DEVICE + ' --scatter "drivers/linker_scripts/link.sct" --info sizes --info totals --info unused --info veneers --list rtthread.map --strict' + LFLAGS = DEVICE + ' --scatter "board/linker_scripts/link.sct" --info sizes --info totals --info unused --info veneers --list rtthread.map --strict' CFLAGS += ' -I' + EXEC_PATH + '/ARM/ARMCC/INC' LFLAGS += ' --libpath ' + EXEC_PATH + '/ARM/ARMCC/LIB' @@ -127,7 +127,7 @@ else: CFLAGS += ' -Oh' - LFLAGS = ' --config "drivers/linker_scripts/link.icf"' + LFLAGS = ' --config "board/linker_scripts/link.icf"' LFLAGS += ' --entry __iar_program_start' #LFLAGS += ' --silent' diff --git a/bsp/mm32f526x/template.ewp b/bsp/mm32/mm32f327x/template.ewp similarity index 97% rename from bsp/mm32f526x/template.ewp rename to bsp/mm32/mm32f327x/template.ewp index 0ee0f2df906..c0742c0c937 100644 --- a/bsp/mm32f526x/template.ewp +++ b/bsp/mm32/mm32f327x/template.ewp @@ -1,2088 +1,2088 @@ - - - 3 - - rt-thread - - ARM - - 1 - - General - 3 - - 33 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 37 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 11 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - inputOutputBased - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 25 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - - Release - - ARM - - 0 - - General - 3 - - 33 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 37 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 11 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - 0 - inputOutputBased - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 25 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - + + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + + Release + + ARM + + 0 + + General + 3 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + diff --git a/bsp/mm32f327x/template.eww b/bsp/mm32/mm32f327x/template.eww similarity index 100% rename from bsp/mm32f327x/template.eww rename to bsp/mm32/mm32f327x/template.eww diff --git a/bsp/mm32f327x/template.uvopt b/bsp/mm32/mm32f327x/template.uvopt similarity index 100% rename from bsp/mm32f327x/template.uvopt rename to bsp/mm32/mm32f327x/template.uvopt diff --git a/bsp/mm32f327x/template.uvoptx b/bsp/mm32/mm32f327x/template.uvoptx similarity index 100% rename from bsp/mm32f327x/template.uvoptx rename to bsp/mm32/mm32f327x/template.uvoptx diff --git a/bsp/mm32f327x/template.uvprojx b/bsp/mm32/mm32f327x/template.uvprojx similarity index 99% rename from bsp/mm32f327x/template.uvprojx rename to bsp/mm32/mm32f327x/template.uvprojx index 19c76020ec9..44c44d3844c 100644 --- a/bsp/mm32f327x/template.uvprojx +++ b/bsp/mm32/mm32f327x/template.uvprojx @@ -370,7 +370,7 @@ 0x00000000 0x20000000 - .\drivers\linker_scripts\link.sct + .\board\linker_scripts\link.sct diff --git a/bsp/mm32f526x/.ci/attachconfig/ci.attachconfig.yml b/bsp/mm32/mm32f526x/.ci/attachconfig/ci.attachconfig.yml similarity index 100% rename from bsp/mm32f526x/.ci/attachconfig/ci.attachconfig.yml rename to bsp/mm32/mm32f526x/.ci/attachconfig/ci.attachconfig.yml diff --git a/bsp/mm32f526x/.clang-format-ignore b/bsp/mm32/mm32f526x/.clang-format-ignore similarity index 100% rename from bsp/mm32f526x/.clang-format-ignore rename to bsp/mm32/mm32f526x/.clang-format-ignore diff --git a/bsp/mm32f526x/.config b/bsp/mm32/mm32f526x/.config similarity index 99% rename from bsp/mm32f526x/.config rename to bsp/mm32/mm32f526x/.config index e7d46e7b40a..674d19c074c 100644 --- a/bsp/mm32f526x/.config +++ b/bsp/mm32/mm32f526x/.config @@ -1502,4 +1502,6 @@ CONFIG_BSP_USING_ADC1=y # end of On-chip Peripheral Drivers # end of Hardware Drivers Config +CONFIG_SOC_FAMILY_MM32=y +CONFIG_SOC_SERIES_MM32F526=y CONFIG_SOC_MM32F526x=y diff --git a/bsp/mm32f526x/Kconfig b/bsp/mm32/mm32f526x/Kconfig similarity index 76% rename from bsp/mm32f526x/Kconfig rename to bsp/mm32/mm32f526x/Kconfig index 844dcaf97d4..ee82c700b41 100644 --- a/bsp/mm32f526x/Kconfig +++ b/bsp/mm32/mm32f526x/Kconfig @@ -2,16 +2,18 @@ mainmenu "RT-Thread Configuration" BSP_DIR := . -RTT_DIR := ../.. +RTT_DIR := ../../.. PKGS_DIR := packages -source "$(RTT_DIR)/Kconfig" -osource "$PKGS_DIR/Kconfig" -rsource "board/Kconfig" - config SOC_MM32F526x bool + select SOC_SERIES_MM32F526 select RT_USING_COMPONENTS_INIT select RT_USING_USER_MAIN default y + +source "$(RTT_DIR)/Kconfig" +osource "$PKGS_DIR/Kconfig" +rsource "../libraries/Kconfig" +rsource "board/Kconfig" diff --git a/bsp/mm32f526x/Makefile b/bsp/mm32/mm32f526x/Makefile similarity index 100% rename from bsp/mm32f526x/Makefile rename to bsp/mm32/mm32f526x/Makefile diff --git a/bsp/mm32f526x/README.md b/bsp/mm32/mm32f526x/README.md similarity index 98% rename from bsp/mm32f526x/README.md rename to bsp/mm32/mm32f526x/README.md index 8469e8352f7..795df6dc9a1 100644 --- a/bsp/mm32f526x/README.md +++ b/bsp/mm32/mm32f526x/README.md @@ -114,7 +114,7 @@ MM32F5265-OB ## 2. 编译说明 -推荐熟悉 RT_Thread 的用户使用[env工具](https://www.rt-thread.org/download.html#download-rt-thread-env-tool),可以在console下进入到 `bsp/mm32f526x` 目录中,运行以下命令: +推荐熟悉 RT_Thread 的用户使用[env工具](https://www.rt-thread.org/download.html#download-rt-thread-env-tool),可以在console下进入到 `bsp/mm32/mm32f526x` 目录中,运行以下命令: ``` pkgs --update diff --git a/bsp/mm32f526x/SConscript b/bsp/mm32/mm32f526x/SConscript similarity index 100% rename from bsp/mm32f526x/SConscript rename to bsp/mm32/mm32f526x/SConscript diff --git a/bsp/mm32f327x/SConstruct b/bsp/mm32/mm32f526x/SConstruct similarity index 74% rename from bsp/mm32f327x/SConstruct rename to bsp/mm32/mm32f526x/SConstruct index 35a7f75de0e..b2ebc5187e5 100644 --- a/bsp/mm32f327x/SConstruct +++ b/bsp/mm32/mm32f526x/SConstruct @@ -5,7 +5,7 @@ import rtconfig if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT') else: - RTT_ROOT = os.path.normpath(os.getcwd() + '/../..') + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] try: @@ -33,8 +33,15 @@ if rtconfig.PLATFORM in ['iccarm']: Export('RTT_ROOT') Export('rtconfig') +SDK_ROOT = os.path.abspath('./') +libraries_path_prefix = os.path.join(os.path.dirname(SDK_ROOT), 'libraries') + # prepare building environment objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'), + variant_dir='build/libraries/HAL_Drivers', duplicate=0)) + # make a building DoBuilding(TARGET, objs) diff --git a/bsp/mm32f526x/applications/SConscript b/bsp/mm32/mm32f526x/applications/SConscript similarity index 100% rename from bsp/mm32f526x/applications/SConscript rename to bsp/mm32/mm32f526x/applications/SConscript diff --git a/bsp/mm32f526x/applications/main.c b/bsp/mm32/mm32f526x/applications/main.c similarity index 100% rename from bsp/mm32f526x/applications/main.c rename to bsp/mm32/mm32f526x/applications/main.c diff --git a/bsp/mm32f526x/board/Kconfig b/bsp/mm32/mm32f526x/board/Kconfig similarity index 96% rename from bsp/mm32f526x/board/Kconfig rename to bsp/mm32/mm32f526x/board/Kconfig index c86a5a08eb7..d8aa28f1b51 100644 --- a/bsp/mm32f526x/board/Kconfig +++ b/bsp/mm32/mm32f526x/board/Kconfig @@ -54,5 +54,7 @@ menu "Hardware Drivers Config" select PKG_USING_LITTLEFS default n endmenu + + source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu endmenu diff --git a/bsp/mm32f526x/board/SConscript b/bsp/mm32/mm32f526x/board/SConscript similarity index 100% rename from bsp/mm32f526x/board/SConscript rename to bsp/mm32/mm32f526x/board/SConscript diff --git a/bsp/mm32f526x/board/board.c b/bsp/mm32/mm32f526x/board/board.c similarity index 100% rename from bsp/mm32f526x/board/board.c rename to bsp/mm32/mm32f526x/board/board.c diff --git a/bsp/mm32f526x/board/board.h b/bsp/mm32/mm32f526x/board/board.h similarity index 100% rename from bsp/mm32f526x/board/board.h rename to bsp/mm32/mm32f526x/board/board.h diff --git a/bsp/mm32f526x/board/linker_scripts/link.icf b/bsp/mm32/mm32f526x/board/linker_scripts/link.icf similarity index 100% rename from bsp/mm32f526x/board/linker_scripts/link.icf rename to bsp/mm32/mm32f526x/board/linker_scripts/link.icf diff --git a/bsp/mm32f526x/board/linker_scripts/link.lds b/bsp/mm32/mm32f526x/board/linker_scripts/link.lds similarity index 100% rename from bsp/mm32f526x/board/linker_scripts/link.lds rename to bsp/mm32/mm32f526x/board/linker_scripts/link.lds diff --git a/bsp/mm32f526x/board/linker_scripts/link.sct b/bsp/mm32/mm32f526x/board/linker_scripts/link.sct similarity index 100% rename from bsp/mm32f526x/board/linker_scripts/link.sct rename to bsp/mm32/mm32f526x/board/linker_scripts/link.sct diff --git a/bsp/mm32f526x/board/mm32_msp.c b/bsp/mm32/mm32f526x/board/mm32_msp.c similarity index 100% rename from bsp/mm32f526x/board/mm32_msp.c rename to bsp/mm32/mm32f526x/board/mm32_msp.c diff --git a/bsp/mm32f526x/board/mm32_msp.h b/bsp/mm32/mm32f526x/board/mm32_msp.h similarity index 100% rename from bsp/mm32f526x/board/mm32_msp.h rename to bsp/mm32/mm32f526x/board/mm32_msp.h diff --git a/bsp/mm32f526x/figures/Mini-F5265-OB.jpg b/bsp/mm32/mm32f526x/figures/Mini-F5265-OB.jpg similarity index 100% rename from bsp/mm32f526x/figures/Mini-F5265-OB.jpg rename to bsp/mm32/mm32f526x/figures/Mini-F5265-OB.jpg diff --git a/bsp/mm32f526x/project.ewp b/bsp/mm32/mm32f526x/project.ewp similarity index 86% rename from bsp/mm32f526x/project.ewp rename to bsp/mm32/mm32f526x/project.ewp index aa9a715c3de..93e6fb1fdeb 100644 --- a/bsp/mm32f526x/project.ewp +++ b/bsp/mm32/mm32f526x/project.ewp @@ -1,2370 +1,2370 @@ - - 3 - - rt-thread - - ARM - - 1 - - General - 3 - - 33 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 37 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 11 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - inputOutputBased - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 25 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - - Release - - ARM - - 0 - - General - 3 - - 33 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 37 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 11 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - 0 - inputOutputBased - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 25 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - - Applications - - $PROJ_DIR$\applications\main.c - - - - CPU - - $PROJ_DIR$\..\..\libcpu\arm\common\div0.c - - - $PROJ_DIR$\..\..\libcpu\arm\common\showmem.c - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m33\context_iar.S - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m33\cpuport.c - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m33\syscall_iar.S - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m33\trustzone.c - - - - DeviceDrivers - - $PROJ_DIR$\..\..\components\drivers\core\device.c - - - $PROJ_DIR$\..\..\components\drivers\i2c\dev_i2c_bit_ops.c - - - $PROJ_DIR$\..\..\components\drivers\i2c\dev_i2c_core.c - - - $PROJ_DIR$\..\..\components\drivers\i2c\dev_i2c_dev.c - - - $PROJ_DIR$\..\..\components\drivers\i2c\dev_soft_i2c.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\completion_comm.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\completion_up.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\condvar.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\dataqueue.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\pipe.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\ringblk_buf.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\ringbuffer.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\waitqueue.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\workqueue.c - - - $PROJ_DIR$\..\..\components\drivers\misc\adc.c - - - $PROJ_DIR$\..\..\components\drivers\pin\dev_pin.c - - - $PROJ_DIR$\..\..\components\drivers\serial\dev_serial.c - - - - Drivers - - $PROJ_DIR$\board\board.c - - - $PROJ_DIR$\board\mm32_msp.c - - - $PROJ_DIR$\drivers\drv_adc.c - - - $PROJ_DIR$\drivers\drv_gpio.c - - - $PROJ_DIR$\drivers\drv_uart.c - - - - Finsh - - $PROJ_DIR$\..\..\components\finsh\shell.c - - - $PROJ_DIR$\..\..\components\finsh\msh.c - - - $PROJ_DIR$\..\..\components\finsh\msh_parse.c - - - $PROJ_DIR$\..\..\components\finsh\cmd.c - - - - Kernel - - $PROJ_DIR$\..\..\src\clock.c - - - $PROJ_DIR$\..\..\src\components.c - - - $PROJ_DIR$\..\..\src\cpu_up.c - - - $PROJ_DIR$\..\..\src\defunct.c - - - $PROJ_DIR$\..\..\src\idle.c - - - $PROJ_DIR$\..\..\src\ipc.c - - - $PROJ_DIR$\..\..\src\irq.c - - - $PROJ_DIR$\..\..\src\kservice.c - - - $PROJ_DIR$\..\..\src\mem.c - - - $PROJ_DIR$\..\..\src\mempool.c - - - $PROJ_DIR$\..\..\src\object.c - - - $PROJ_DIR$\..\..\src\scheduler_comm.c - - - $PROJ_DIR$\..\..\src\scheduler_up.c - - - $PROJ_DIR$\..\..\src\thread.c - - - $PROJ_DIR$\..\..\src\timer.c - - - - Libc - - $PROJ_DIR$\..\..\components\libc\compilers\common\cctype.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cstdlib.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cstring.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\ctime.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cunistd.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cwchar.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\environ.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_close.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_lseek.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_mem.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_open.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_read.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_remove.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_write.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscalls.c - - - $PROJ_DIR$\..\..\src\klibc\kerrno.c - - - $PROJ_DIR$\..\..\src\klibc\kstdio.c - - - $PROJ_DIR$\..\..\src\klibc\kstring.c - - - $PROJ_DIR$\..\..\src\klibc\rt_vsnprintf_tiny.c - - - $PROJ_DIR$\..\..\src\klibc\rt_vsscanf.c - - - - utc_UTest - - - utestcases - - + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + + Release + + ARM + + 0 + + General + 3 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + CPU + + $PROJ_DIR$\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\showmem.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m33\context_iar.S + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m33\cpuport.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m33\syscall_iar.S + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m33\trustzone.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\components\drivers\core\device.c + + + $PROJ_DIR$\..\..\..\components\drivers\i2c\dev_i2c_bit_ops.c + + + $PROJ_DIR$\..\..\..\components\drivers\i2c\dev_i2c_core.c + + + $PROJ_DIR$\..\..\..\components\drivers\i2c\dev_i2c_dev.c + + + $PROJ_DIR$\..\..\..\components\drivers\i2c\dev_soft_i2c.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_comm.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_up.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\condvar.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\workqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\misc\adc.c + + + $PROJ_DIR$\..\..\..\components\drivers\pin\dev_pin.c + + + $PROJ_DIR$\..\..\..\components\drivers\serial\dev_serial.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\board\mm32_msp.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drivers\drv_adc.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drivers\drv_uart.c + + + + Finsh + + $PROJ_DIR$\..\..\..\components\finsh\shell.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh_parse.c + + + $PROJ_DIR$\..\..\..\components\finsh\cmd.c + + + + Kernel + + $PROJ_DIR$\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\src\cpu_up.c + + + $PROJ_DIR$\..\..\..\src\defunct.c + + + $PROJ_DIR$\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\src\scheduler_comm.c + + + $PROJ_DIR$\..\..\..\src\scheduler_up.c + + + $PROJ_DIR$\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\src\timer.c + + + + Libc + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cctype.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstdlib.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstring.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\ctime.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cunistd.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cwchar.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\src\klibc\kerrno.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstdio.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstring.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsnprintf_tiny.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsscanf.c + + + + utc_UTest + + + utestcases + + diff --git a/bsp/mm32f526x/project.eww b/bsp/mm32/mm32f526x/project.eww similarity index 100% rename from bsp/mm32f526x/project.eww rename to bsp/mm32/mm32f526x/project.eww diff --git a/bsp/mm32f526x/project.uvoptx b/bsp/mm32/mm32f526x/project.uvoptx similarity index 100% rename from bsp/mm32f526x/project.uvoptx rename to bsp/mm32/mm32f526x/project.uvoptx diff --git a/bsp/mm32f526x/project.uvprojx b/bsp/mm32/mm32f526x/project.uvprojx similarity index 88% rename from bsp/mm32f526x/project.uvprojx rename to bsp/mm32/mm32f526x/project.uvprojx index 7cfa4023c13..d9e4e9ade45 100644 --- a/bsp/mm32f526x/project.uvprojx +++ b/bsp/mm32/mm32f526x/project.uvprojx @@ -336,7 +336,7 @@ RT_USING_LIBC, __STDC_LIMIT_MACROS, __RTTHREAD__, __CLK_TCK=RT_TICK_PER_SECOND, RT_USING_ARMLIBC - ..\..\components\drivers\include;..\..\components\libc\posix\io\eventfd;..\..\components\drivers\phy;board;..\..\components\drivers\include;..\..\components\libc\posix\io\epoll;..\..\components\drivers\include;..\..\libcpu\arm\common;..\..\components\libc\posix\io\poll;applications;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\libc\posix\ipc;.;..\..\components\net\utest;..\..\components\drivers\include;drivers;..\..\components\finsh;..\..\components\drivers\smp_call;..\..\components\libc\compilers\common\include;..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\components\drivers\include;..\..\components\libc\compilers\common\extension;..\..\libcpu\arm\cortex-m33;..\..\include + ..\..\..\components\drivers\include;..\..\..\components\libc\posix\io\eventfd;..\..\..\components\drivers\phy;board;..\..\..\components\drivers\include;..\..\..\components\libc\posix\io\epoll;..\..\..\components\drivers\include;..\..\..\libcpu\arm\common;..\..\..\components\libc\posix\io\poll;applications;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\libc\posix\ipc;.;..\..\..\components\net\utest;..\..\..\components\drivers\include;..\libraries\HAL_Drivers\drivers;..\..\..\components\finsh;..\..\..\components\drivers\smp_call;..\..\..\components\libc\compilers\common\include;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\components\drivers\include;..\..\..\components\libc\compilers\common\extension;..\..\..\libcpu\arm\cortex-m33;..\..\..\include @@ -367,7 +367,7 @@ 0x00000000 0x20000000 - .\drivers\linker_scripts\link.sct + .\board\linker_scripts\link.sct @@ -393,42 +393,42 @@ div0.c 1 - ..\..\libcpu\arm\common\div0.c + ..\..\..\libcpu\arm\common\div0.c showmem.c 1 - ..\..\libcpu\arm\common\showmem.c + ..\..\..\libcpu\arm\common\showmem.c context_rvds.S 2 - ..\..\libcpu\arm\cortex-m33\context_rvds.S + ..\..\..\libcpu\arm\cortex-m33\context_rvds.S cpuport.c 1 - ..\..\libcpu\arm\cortex-m33\cpuport.c + ..\..\..\libcpu\arm\cortex-m33\cpuport.c syscall_rvds.S 2 - ..\..\libcpu\arm\cortex-m33\syscall_rvds.S + ..\..\..\libcpu\arm\cortex-m33\syscall_rvds.S trustzone.c 1 - ..\..\libcpu\arm\cortex-m33\trustzone.c + ..\..\..\libcpu\arm\cortex-m33\trustzone.c @@ -438,7 +438,7 @@ device.c 1 - ..\..\components\drivers\core\device.c + ..\..\..\components\drivers\core\device.c @@ -457,7 +457,7 @@ dev_i2c_bit_ops.c 1 - ..\..\components\drivers\i2c\dev_i2c_bit_ops.c + ..\..\..\components\drivers\i2c\dev_i2c_bit_ops.c @@ -476,7 +476,7 @@ dev_i2c_core.c 1 - ..\..\components\drivers\i2c\dev_i2c_core.c + ..\..\..\components\drivers\i2c\dev_i2c_core.c @@ -495,7 +495,7 @@ dev_i2c_dev.c 1 - ..\..\components\drivers\i2c\dev_i2c_dev.c + ..\..\..\components\drivers\i2c\dev_i2c_dev.c @@ -514,7 +514,7 @@ dev_soft_i2c.c 1 - ..\..\components\drivers\i2c\dev_soft_i2c.c + ..\..\..\components\drivers\i2c\dev_soft_i2c.c @@ -533,7 +533,7 @@ completion_comm.c 1 - ..\..\components\drivers\ipc\completion_comm.c + ..\..\..\components\drivers\ipc\completion_comm.c @@ -552,7 +552,7 @@ completion_up.c 1 - ..\..\components\drivers\ipc\completion_up.c + ..\..\..\components\drivers\ipc\completion_up.c @@ -571,7 +571,7 @@ condvar.c 1 - ..\..\components\drivers\ipc\condvar.c + ..\..\..\components\drivers\ipc\condvar.c @@ -590,7 +590,7 @@ dataqueue.c 1 - ..\..\components\drivers\ipc\dataqueue.c + ..\..\..\components\drivers\ipc\dataqueue.c @@ -609,7 +609,7 @@ pipe.c 1 - ..\..\components\drivers\ipc\pipe.c + ..\..\..\components\drivers\ipc\pipe.c @@ -628,7 +628,7 @@ ringblk_buf.c 1 - ..\..\components\drivers\ipc\ringblk_buf.c + ..\..\..\components\drivers\ipc\ringblk_buf.c @@ -647,7 +647,7 @@ ringbuffer.c 1 - ..\..\components\drivers\ipc\ringbuffer.c + ..\..\..\components\drivers\ipc\ringbuffer.c @@ -666,7 +666,7 @@ waitqueue.c 1 - ..\..\components\drivers\ipc\waitqueue.c + ..\..\..\components\drivers\ipc\waitqueue.c @@ -685,7 +685,7 @@ workqueue.c 1 - ..\..\components\drivers\ipc\workqueue.c + ..\..\..\components\drivers\ipc\workqueue.c @@ -704,7 +704,7 @@ adc.c 1 - ..\..\components\drivers\misc\adc.c + ..\..\..\components\drivers\misc\adc.c @@ -723,7 +723,7 @@ dev_pin.c 1 - ..\..\components\drivers\pin\dev_pin.c + ..\..\..\components\drivers\pin\dev_pin.c @@ -742,7 +742,7 @@ dev_serial.c 1 - ..\..\components\drivers\serial\dev_serial.c + ..\..\..\components\drivers\serial\dev_serial.c @@ -778,21 +778,21 @@ drv_adc.c 1 - drivers\drv_adc.c + ..\libraries\HAL_Drivers\drivers\drv_adc.c drv_gpio.c 1 - drivers\drv_gpio.c + ..\libraries\HAL_Drivers\drivers\drv_gpio.c drv_uart.c 1 - drivers\drv_uart.c + ..\libraries\HAL_Drivers\drivers\drv_uart.c @@ -802,28 +802,28 @@ shell.c 1 - ..\..\components\finsh\shell.c + ..\..\..\components\finsh\shell.c msh.c 1 - ..\..\components\finsh\msh.c + ..\..\..\components\finsh\msh.c msh_parse.c 1 - ..\..\components\finsh\msh_parse.c + ..\..\..\components\finsh\msh_parse.c cmd.c 1 - ..\..\components\finsh\cmd.c + ..\..\..\components\finsh\cmd.c @@ -833,7 +833,7 @@ clock.c 1 - ..\..\src\clock.c + ..\..\..\src\clock.c @@ -852,7 +852,7 @@ components.c 1 - ..\..\src\components.c + ..\..\..\src\components.c @@ -871,7 +871,7 @@ cpu_up.c 1 - ..\..\src\cpu_up.c + ..\..\..\src\cpu_up.c @@ -890,7 +890,7 @@ defunct.c 1 - ..\..\src\defunct.c + ..\..\..\src\defunct.c @@ -909,7 +909,7 @@ idle.c 1 - ..\..\src\idle.c + ..\..\..\src\idle.c @@ -928,7 +928,7 @@ ipc.c 1 - ..\..\src\ipc.c + ..\..\..\src\ipc.c @@ -947,7 +947,7 @@ irq.c 1 - ..\..\src\irq.c + ..\..\..\src\irq.c @@ -966,7 +966,7 @@ kservice.c 1 - ..\..\src\kservice.c + ..\..\..\src\kservice.c @@ -985,7 +985,7 @@ mem.c 1 - ..\..\src\mem.c + ..\..\..\src\mem.c @@ -1004,7 +1004,7 @@ mempool.c 1 - ..\..\src\mempool.c + ..\..\..\src\mempool.c @@ -1023,7 +1023,7 @@ object.c 1 - ..\..\src\object.c + ..\..\..\src\object.c @@ -1042,7 +1042,7 @@ scheduler_comm.c 1 - ..\..\src\scheduler_comm.c + ..\..\..\src\scheduler_comm.c @@ -1061,7 +1061,7 @@ scheduler_up.c 1 - ..\..\src\scheduler_up.c + ..\..\..\src\scheduler_up.c @@ -1080,7 +1080,7 @@ thread.c 1 - ..\..\src\thread.c + ..\..\..\src\thread.c @@ -1099,7 +1099,7 @@ timer.c 1 - ..\..\src\timer.c + ..\..\..\src\timer.c @@ -1121,91 +1121,91 @@ syscall_mem.c 1 - ..\..\components\libc\compilers\armlibc\syscall_mem.c + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c syscalls.c 1 - ..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\components\libc\compilers\armlibc\syscalls.c cctype.c 1 - ..\..\components\libc\compilers\common\cctype.c + ..\..\..\components\libc\compilers\common\cctype.c cstdlib.c 1 - ..\..\components\libc\compilers\common\cstdlib.c + ..\..\..\components\libc\compilers\common\cstdlib.c cstring.c 1 - ..\..\components\libc\compilers\common\cstring.c + ..\..\..\components\libc\compilers\common\cstring.c ctime.c 1 - ..\..\components\libc\compilers\common\ctime.c + ..\..\..\components\libc\compilers\common\ctime.c cunistd.c 1 - ..\..\components\libc\compilers\common\cunistd.c + ..\..\..\components\libc\compilers\common\cunistd.c cwchar.c 1 - ..\..\components\libc\compilers\common\cwchar.c + ..\..\..\components\libc\compilers\common\cwchar.c kerrno.c 1 - ..\..\src\klibc\kerrno.c + ..\..\..\src\klibc\kerrno.c kstdio.c 1 - ..\..\src\klibc\kstdio.c + ..\..\..\src\klibc\kstdio.c kstring.c 1 - ..\..\src\klibc\kstring.c + ..\..\..\src\klibc\kstring.c rt_vsnprintf_tiny.c 1 - ..\..\src\klibc\rt_vsnprintf_tiny.c + ..\..\..\src\klibc\rt_vsnprintf_tiny.c rt_vsscanf.c 1 - ..\..\src\klibc\rt_vsscanf.c + ..\..\..\src\klibc\rt_vsscanf.c diff --git a/bsp/mm32f526x/rtconfig.h b/bsp/mm32/mm32f526x/rtconfig.h similarity index 99% rename from bsp/mm32f526x/rtconfig.h rename to bsp/mm32/mm32f526x/rtconfig.h index 064f4793e3c..7c76c31e324 100644 --- a/bsp/mm32f526x/rtconfig.h +++ b/bsp/mm32/mm32f526x/rtconfig.h @@ -448,6 +448,8 @@ /* end of Flash Drivers */ /* end of On-chip Peripheral Drivers */ /* end of Hardware Drivers Config */ +#define SOC_FAMILY_MM32 +#define SOC_SERIES_MM32F526 #define SOC_MM32F526x #endif diff --git a/bsp/mm32f526x/rtconfig.py b/bsp/mm32/mm32f526x/rtconfig.py similarity index 100% rename from bsp/mm32f526x/rtconfig.py rename to bsp/mm32/mm32f526x/rtconfig.py diff --git a/bsp/mm32f327x/template.ewp b/bsp/mm32/mm32f526x/template.ewp similarity index 97% rename from bsp/mm32f327x/template.ewp rename to bsp/mm32/mm32f526x/template.ewp index 0ee0f2df906..c0742c0c937 100644 --- a/bsp/mm32f327x/template.ewp +++ b/bsp/mm32/mm32f526x/template.ewp @@ -1,2088 +1,2088 @@ - - - 3 - - rt-thread - - ARM - - 1 - - General - 3 - - 33 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 37 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 11 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - inputOutputBased - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 25 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - - Release - - ARM - - 0 - - General - 3 - - 33 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 37 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 11 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - 0 - inputOutputBased - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 25 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - + + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + + Release + + ARM + + 0 + + General + 3 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + diff --git a/bsp/mm32f526x/template.eww b/bsp/mm32/mm32f526x/template.eww similarity index 100% rename from bsp/mm32f526x/template.eww rename to bsp/mm32/mm32f526x/template.eww diff --git a/bsp/mm32f526x/template.uvopt b/bsp/mm32/mm32f526x/template.uvopt similarity index 100% rename from bsp/mm32f526x/template.uvopt rename to bsp/mm32/mm32f526x/template.uvopt diff --git a/bsp/mm32f526x/template.uvoptx b/bsp/mm32/mm32f526x/template.uvoptx similarity index 100% rename from bsp/mm32f526x/template.uvoptx rename to bsp/mm32/mm32f526x/template.uvoptx diff --git a/bsp/mm32f526x/template.uvprojx b/bsp/mm32/mm32f526x/template.uvprojx similarity index 99% rename from bsp/mm32f526x/template.uvprojx rename to bsp/mm32/mm32f526x/template.uvprojx index 19c76020ec9..44c44d3844c 100644 --- a/bsp/mm32f526x/template.uvprojx +++ b/bsp/mm32/mm32f526x/template.uvprojx @@ -370,7 +370,7 @@ 0x00000000 0x20000000 - .\drivers\linker_scripts\link.sct + .\board\linker_scripts\link.sct diff --git a/bsp/mm32l07x/.clang-format-ignore b/bsp/mm32/mm32l07x/.clang-format-ignore similarity index 100% rename from bsp/mm32l07x/.clang-format-ignore rename to bsp/mm32/mm32l07x/.clang-format-ignore diff --git a/bsp/mm32l07x/.config b/bsp/mm32/mm32l07x/.config similarity index 99% rename from bsp/mm32l07x/.config rename to bsp/mm32/mm32l07x/.config index 131d56fc0c8..8236b31666f 100644 --- a/bsp/mm32l07x/.config +++ b/bsp/mm32/mm32l07x/.config @@ -1436,4 +1436,6 @@ CONFIG_BSP_USING_UART1=y # end of On-chip Peripheral Drivers # end of Hardware Drivers Config +CONFIG_SOC_FAMILY_MM32=y +CONFIG_SOC_SERIES_MM32L0=y CONFIG_SOC_MM32L073=y diff --git a/bsp/mm32l07x/Kconfig b/bsp/mm32/mm32l07x/Kconfig similarity index 69% rename from bsp/mm32l07x/Kconfig rename to bsp/mm32/mm32l07x/Kconfig index 721d9496725..bc06386e07c 100644 --- a/bsp/mm32l07x/Kconfig +++ b/bsp/mm32/mm32l07x/Kconfig @@ -2,16 +2,18 @@ mainmenu "RT-Thread Configuration" BSP_DIR := . -RTT_DIR := ../.. +RTT_DIR := ../../.. PKGS_DIR := packages -source "$(RTT_DIR)/Kconfig" -osource "$PKGS_DIR/Kconfig" -rsource "drivers/Kconfig" - config SOC_MM32L073 bool + select SOC_SERIES_MM32L0 select RT_USING_COMPONENTS_INIT select RT_USING_USER_MAIN default y + +source "$(RTT_DIR)/Kconfig" +osource "$PKGS_DIR/Kconfig" +rsource "../libraries/Kconfig" +rsource "board/Kconfig" diff --git a/bsp/mm32l07x/Libraries/CMSIS/CORE/arm_common_tables.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/arm_common_tables.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/CORE/arm_common_tables.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/arm_common_tables.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/CORE/arm_const_structs.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/arm_const_structs.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/CORE/arm_const_structs.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/arm_const_structs.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/CORE/arm_math.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/arm_math.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/CORE/arm_math.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/arm_math.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/CORE/core_cm0.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_cm0.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/CORE/core_cm0.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_cm0.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/CORE/core_cm0plus.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_cm0plus.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/CORE/core_cm0plus.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_cm0plus.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/CORE/core_cm3.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_cm3.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/CORE/core_cm3.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_cm3.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/CORE/core_cm4.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_cm4.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/CORE/core_cm4.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_cm4.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/CORE/core_cm4_simd.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_cm4_simd.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/CORE/core_cm4_simd.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_cm4_simd.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/CORE/core_cmFunc.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_cmFunc.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/CORE/core_cmFunc.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_cmFunc.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/CORE/core_cmInstr.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_cmInstr.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/CORE/core_cmInstr.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_cmInstr.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/CORE/core_sc000.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_sc000.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/CORE/core_sc000.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_sc000.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/CORE/core_sc300.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_sc300.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/CORE/core_sc300.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/CORE/core_sc300.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/arm_common_tables.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/arm_common_tables.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/arm_common_tables.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/arm_common_tables.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/arm_const_structs.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/arm_const_structs.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/arm_const_structs.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/arm_const_structs.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/arm_math.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/arm_math.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/arm_math.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/arm_math.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm0.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm0.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm0.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm0.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm0plus.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm0plus.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm0plus.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm0plus.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm3.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm3.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm3.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm3.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm4.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm4.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm4.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm4.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm7.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm7.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm7.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cm7.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cmFunc.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cmFunc.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cmFunc.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cmFunc.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cmInstr.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cmInstr.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cmInstr.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cmInstr.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cmSimd.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cmSimd.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cmSimd.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_cmSimd.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_sc000.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_sc000.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_sc000.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_sc000.h diff --git a/bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_sc300.h b/bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_sc300.h similarity index 100% rename from bsp/mm32l07x/Libraries/CMSIS/IAR_CORE/core_sc300.h rename to bsp/mm32/mm32l07x/Libraries/CMSIS/IAR_CORE/core_sc300.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/MM32L0xx_lib_version.txt b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/MM32L0xx_lib_version.txt similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/MM32L0xx_lib_version.txt rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/MM32L0xx_lib_version.txt diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_adc.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_adc.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_adc.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_adc.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_bkp.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_bkp.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_bkp.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_bkp.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_can.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_can.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_can.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_can.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_comp.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_comp.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_comp.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_comp.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_conf.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_conf.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_conf.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_conf.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_dma.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_dma.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_dma.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_dma.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_exti.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_exti.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_exti.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_exti.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_flash.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_flash.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_flash.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_flash.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_gpio.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_gpio.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_gpio.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_gpio.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_i2c.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_i2c.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_i2c.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_i2c.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_iwdg.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_iwdg.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_iwdg.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_iwdg.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_misc.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_misc.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_misc.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_misc.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_pwr.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_pwr.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_pwr.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_pwr.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_rcc.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_rcc.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_rcc.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_rcc.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_spi.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_spi.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_spi.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_spi.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_syscfg.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_syscfg.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_syscfg.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_syscfg.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_tim.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_tim.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_tim.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_tim.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_uart.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_uart.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_uart.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_uart.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_wwdg.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_wwdg.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_wwdg.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/HAL_wwdg.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/dtype.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/dtype.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/dtype.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/inc/dtype.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_adc.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_adc.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_adc.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_adc.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_bkp.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_bkp.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_bkp.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_bkp.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_can.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_can.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_can.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_can.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_comp.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_comp.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_comp.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_comp.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_dma.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_dma.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_dma.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_dma.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_exti.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_exti.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_exti.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_exti.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_flash.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_flash.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_flash.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_flash.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_gpio.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_gpio.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_gpio.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_gpio.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_i2c.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_i2c.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_i2c.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_i2c.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_iwdg.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_iwdg.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_iwdg.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_iwdg.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_misc.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_misc.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_misc.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_misc.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_pwr.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_pwr.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_pwr.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_pwr.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_rcc.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_rcc.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_rcc.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_rcc.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_spi.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_spi.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_spi.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_spi.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_syscfg.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_syscfg.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_syscfg.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_syscfg.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_tim.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_tim.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_tim.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_tim.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_uart.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_uart.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_uart.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_uart.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_wwdg.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_wwdg.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_wwdg.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/HAL_lib/src/HAL_wwdg.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/Include/HAL_device.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/Include/HAL_device.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/Include/HAL_device.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/Include/HAL_device.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/Include/MM32L0xx.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/Include/MM32L0xx.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/Include/MM32L0xx.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/Include/MM32L0xx.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/Source/GCC_StartAsm/startup_MM32L0xx.s b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/Source/GCC_StartAsm/startup_MM32L0xx.s similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/Source/GCC_StartAsm/startup_MM32L0xx.s rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/Source/GCC_StartAsm/startup_MM32L0xx.s diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/Source/IAR_StartAsm/startup_MM32L0xx.s b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/Source/IAR_StartAsm/startup_MM32L0xx.s similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/Source/IAR_StartAsm/startup_MM32L0xx.s rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/Source/IAR_StartAsm/startup_MM32L0xx.s diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/Source/KEIL_StartAsm/startup_MM32L0xx.s b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/Source/KEIL_StartAsm/startup_MM32L0xx.s similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/Source/KEIL_StartAsm/startup_MM32L0xx.s rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/Source/KEIL_StartAsm/startup_MM32L0xx.s diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/Source/system_MM32L0xx.c b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/Source/system_MM32L0xx.c similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/Source/system_MM32L0xx.c rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/Source/system_MM32L0xx.c diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/Source/system_MM32L0xx.h b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/Source/system_MM32L0xx.h similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/Source/system_MM32L0xx.h rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/Source/system_MM32L0xx.h diff --git a/bsp/mm32l07x/Libraries/MM32L0xx/change list.txt b/bsp/mm32/mm32l07x/Libraries/MM32L0xx/change list.txt similarity index 100% rename from bsp/mm32l07x/Libraries/MM32L0xx/change list.txt rename to bsp/mm32/mm32l07x/Libraries/MM32L0xx/change list.txt diff --git a/bsp/mm32l07x/Libraries/SConscript b/bsp/mm32/mm32l07x/Libraries/SConscript similarity index 100% rename from bsp/mm32l07x/Libraries/SConscript rename to bsp/mm32/mm32l07x/Libraries/SConscript diff --git a/bsp/mm32l07x/README.md b/bsp/mm32/mm32l07x/README.md similarity index 98% rename from bsp/mm32l07x/README.md rename to bsp/mm32/mm32l07x/README.md index 52ebcbad7f7..3db7ac112da 100644 --- a/bsp/mm32l07x/README.md +++ b/bsp/mm32/mm32l07x/README.md @@ -53,7 +53,7 @@ MM32L073PF 是一款面向电机驱动、工业应用、消费电子、白色家 > 工程默认配置使用 Jlink 仿真器下载程序,在通过 Jlink 连接开发板到 PC 的基础上,点击下载按钮即可下载程序到开发板 -推荐熟悉 RT_Thread 的用户使用[env工具](https://www.rt-thread.org/download.html#download-rt-thread-env-tool),可以在console下进入到 `bsp/mm32l07x` 目录中,运行以下命令: +推荐熟悉 RT_Thread 的用户使用[env工具](https://www.rt-thread.org/download.html#download-rt-thread-env-tool),可以在console下进入到 `bsp/mm32/mm32l07x` 目录中,运行以下命令: `scons` diff --git a/bsp/mm32l07x/SConscript b/bsp/mm32/mm32l07x/SConscript similarity index 100% rename from bsp/mm32l07x/SConscript rename to bsp/mm32/mm32l07x/SConscript diff --git a/bsp/mm32l07x/SConstruct b/bsp/mm32/mm32l07x/SConstruct similarity index 74% rename from bsp/mm32l07x/SConstruct rename to bsp/mm32/mm32l07x/SConstruct index 35a7f75de0e..b2ebc5187e5 100644 --- a/bsp/mm32l07x/SConstruct +++ b/bsp/mm32/mm32l07x/SConstruct @@ -5,7 +5,7 @@ import rtconfig if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT') else: - RTT_ROOT = os.path.normpath(os.getcwd() + '/../..') + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] try: @@ -33,8 +33,15 @@ if rtconfig.PLATFORM in ['iccarm']: Export('RTT_ROOT') Export('rtconfig') +SDK_ROOT = os.path.abspath('./') +libraries_path_prefix = os.path.join(os.path.dirname(SDK_ROOT), 'libraries') + # prepare building environment objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'), + variant_dir='build/libraries/HAL_Drivers', duplicate=0)) + # make a building DoBuilding(TARGET, objs) diff --git a/bsp/mm32l07x/applications/SConscript b/bsp/mm32/mm32l07x/applications/SConscript similarity index 100% rename from bsp/mm32l07x/applications/SConscript rename to bsp/mm32/mm32l07x/applications/SConscript diff --git a/bsp/mm32l07x/applications/main.c b/bsp/mm32/mm32l07x/applications/main.c similarity index 100% rename from bsp/mm32l07x/applications/main.c rename to bsp/mm32/mm32l07x/applications/main.c diff --git a/bsp/mm32l07x/drivers/Kconfig b/bsp/mm32/mm32l07x/board/Kconfig similarity index 86% rename from bsp/mm32l07x/drivers/Kconfig rename to bsp/mm32/mm32l07x/board/Kconfig index d5d7be788a4..5db883c86ef 100644 --- a/bsp/mm32l07x/drivers/Kconfig +++ b/bsp/mm32/mm32l07x/board/Kconfig @@ -13,6 +13,8 @@ menu "Hardware Drivers Config" select RT_USING_SERIAL default y endmenu + + source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu endmenu diff --git a/bsp/mm32/mm32l07x/board/SConscript b/bsp/mm32/mm32l07x/board/SConscript new file mode 100644 index 00000000000..a3c45aa781e --- /dev/null +++ b/bsp/mm32/mm32l07x/board/SConscript @@ -0,0 +1,11 @@ +from building import * + +cwd = GetCurrentDir() + +src = ['board.c'] + +CPPPATH = [cwd] + +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/mm32l07x/drivers/board.c b/bsp/mm32/mm32l07x/board/board.c similarity index 100% rename from bsp/mm32l07x/drivers/board.c rename to bsp/mm32/mm32l07x/board/board.c diff --git a/bsp/mm32l07x/drivers/board.h b/bsp/mm32/mm32l07x/board/board.h similarity index 100% rename from bsp/mm32l07x/drivers/board.h rename to bsp/mm32/mm32l07x/board/board.h diff --git a/bsp/mm32l07x/drivers/linker_scripts/link.icf b/bsp/mm32/mm32l07x/board/linker_scripts/link.icf similarity index 100% rename from bsp/mm32l07x/drivers/linker_scripts/link.icf rename to bsp/mm32/mm32l07x/board/linker_scripts/link.icf diff --git a/bsp/mm32l07x/drivers/linker_scripts/link.lds b/bsp/mm32/mm32l07x/board/linker_scripts/link.lds similarity index 100% rename from bsp/mm32l07x/drivers/linker_scripts/link.lds rename to bsp/mm32/mm32l07x/board/linker_scripts/link.lds diff --git a/bsp/mm32l07x/drivers/linker_scripts/link.sct b/bsp/mm32/mm32l07x/board/linker_scripts/link.sct similarity index 100% rename from bsp/mm32l07x/drivers/linker_scripts/link.sct rename to bsp/mm32/mm32l07x/board/linker_scripts/link.sct diff --git a/bsp/mm32l07x/figures/MM32 MiniBoard Rev.D2_1.jpg b/bsp/mm32/mm32l07x/figures/MM32 MiniBoard Rev.D2_1.jpg similarity index 100% rename from bsp/mm32l07x/figures/MM32 MiniBoard Rev.D2_1.jpg rename to bsp/mm32/mm32l07x/figures/MM32 MiniBoard Rev.D2_1.jpg diff --git a/bsp/mm32l07x/figures/MM32 MiniBoard Rev.D2_2.jpg b/bsp/mm32/mm32l07x/figures/MM32 MiniBoard Rev.D2_2.jpg similarity index 100% rename from bsp/mm32l07x/figures/MM32 MiniBoard Rev.D2_2.jpg rename to bsp/mm32/mm32l07x/figures/MM32 MiniBoard Rev.D2_2.jpg diff --git a/bsp/mm32l07x/project.ewd b/bsp/mm32/mm32l07x/project.ewd similarity index 100% rename from bsp/mm32l07x/project.ewd rename to bsp/mm32/mm32l07x/project.ewd diff --git a/bsp/mm32l07x/project.ewp b/bsp/mm32/mm32l07x/project.ewp similarity index 87% rename from bsp/mm32l07x/project.ewp rename to bsp/mm32/mm32l07x/project.ewp index 88cd2985f78..f8a44217c3c 100644 --- a/bsp/mm32l07x/project.ewp +++ b/bsp/mm32/mm32l07x/project.ewp @@ -1,2363 +1,2365 @@ - - 3 - - rt-thread - - ARM - - 1 - - General - 3 - - 30 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Release - - ARM - - 0 - - General - 3 - - 30 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - BILINK - 0 - - - - - Applications - - $PROJ_DIR$\applications\main.c - - - - CPU - - $PROJ_DIR$\..\..\libcpu\arm\common\div0.c - - - $PROJ_DIR$\..\..\libcpu\arm\common\showmem.c - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m0\context_iar.S - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m0\cpuport.c - - - - DeviceDrivers - - $PROJ_DIR$\..\..\components\drivers\core\device.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\completion_comm.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\completion_up.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\condvar.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\dataqueue.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\pipe.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\ringblk_buf.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\ringbuffer.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\waitqueue.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\workqueue.c - - - $PROJ_DIR$\..\..\components\drivers\serial\dev_serial.c - - - - Drivers - - $PROJ_DIR$\drivers\board.c - - - $PROJ_DIR$\drivers\drv_uart.c - - - - Finsh - - $PROJ_DIR$\..\..\components\finsh\shell.c - - - $PROJ_DIR$\..\..\components\finsh\msh.c - - - $PROJ_DIR$\..\..\components\finsh\msh_parse.c - - - $PROJ_DIR$\..\..\components\finsh\cmd.c - - - - Kernel - - $PROJ_DIR$\..\..\src\clock.c - - - $PROJ_DIR$\..\..\src\components.c - - - $PROJ_DIR$\..\..\src\cpu_up.c - - - $PROJ_DIR$\..\..\src\defunct.c - - - $PROJ_DIR$\..\..\src\idle.c - - - $PROJ_DIR$\..\..\src\ipc.c - - - $PROJ_DIR$\..\..\src\irq.c - - - $PROJ_DIR$\..\..\src\kservice.c - - - $PROJ_DIR$\..\..\src\mem.c - - - $PROJ_DIR$\..\..\src\memheap.c - - - $PROJ_DIR$\..\..\src\mempool.c - - - $PROJ_DIR$\..\..\src\object.c - - - $PROJ_DIR$\..\..\src\scheduler_comm.c - - - $PROJ_DIR$\..\..\src\scheduler_up.c - - - $PROJ_DIR$\..\..\src\thread.c - - - $PROJ_DIR$\..\..\src\timer.c - - - - Libc - - $PROJ_DIR$\..\..\components\libc\compilers\common\cctype.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cstdlib.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cstring.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\ctime.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cunistd.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cwchar.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\environ.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_close.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_lseek.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_mem.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_open.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_read.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_remove.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_write.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscalls.c - - - $PROJ_DIR$\..\..\src\klibc\kerrno.c - - - $PROJ_DIR$\..\..\src\klibc\kstdio.c - - - $PROJ_DIR$\..\..\src\klibc\kstring.c - - - $PROJ_DIR$\..\..\src\klibc\rt_vsnprintf_tiny.c - - - $PROJ_DIR$\..\..\src\klibc\rt_vsscanf.c - - - - Libraries - - $PROJ_DIR$\Libraries\MM32L0xx\Source\system_MM32L0xx.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_adc.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_bkp.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_can.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_comp.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_dma.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_exti.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_flash.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_gpio.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_i2c.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_iwdg.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_misc.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_pwr.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_rcc.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_spi.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_syscfg.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_tim.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_uart.c - - - $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_wwdg.c - - - $PROJ_DIR$\Libraries\MM32L0xx\Source\IAR_StartAsm\startup_MM32L0xx.s - - - - utc_UTest - - - utestcases - - + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 30 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 30 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + CPU + + $PROJ_DIR$\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\showmem.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m0\context_iar.S + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m0\cpuport.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\components\drivers\core\device.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_comm.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_up.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\condvar.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\workqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\serial\dev_serial.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drivers\drv_uart.c + + + + Finsh + + $PROJ_DIR$\..\..\..\components\finsh\shell.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh_parse.c + + + $PROJ_DIR$\..\..\..\components\finsh\cmd.c + + + + Kernel + + $PROJ_DIR$\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\src\cpu_up.c + + + $PROJ_DIR$\..\..\..\src\defunct.c + + + $PROJ_DIR$\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\src\memheap.c + + + $PROJ_DIR$\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\src\scheduler_comm.c + + + $PROJ_DIR$\..\..\..\src\scheduler_up.c + + + $PROJ_DIR$\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\src\timer.c + + + + Libc + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cctype.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstdlib.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstring.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\ctime.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cunistd.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cwchar.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\src\klibc\kerrno.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstdio.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstring.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsnprintf_tiny.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsscanf.c + + + + Libraries + + $PROJ_DIR$\Libraries\MM32L0xx\Source\system_MM32L0xx.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_adc.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_bkp.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_can.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_comp.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_dma.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_exti.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_flash.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_gpio.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_i2c.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_iwdg.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_misc.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_pwr.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_rcc.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_spi.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_syscfg.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_tim.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_uart.c + + + $PROJ_DIR$\Libraries\MM32L0xx\HAL_lib\src\HAL_wwdg.c + + + $PROJ_DIR$\Libraries\MM32L0xx\Source\IAR_StartAsm\startup_MM32L0xx.s + + + + utc_UTest + + + utestcases + + diff --git a/bsp/mm32l07x/project.eww b/bsp/mm32/mm32l07x/project.eww similarity index 100% rename from bsp/mm32l07x/project.eww rename to bsp/mm32/mm32l07x/project.eww diff --git a/bsp/mm32l07x/project.uvoptx b/bsp/mm32/mm32l07x/project.uvoptx similarity index 100% rename from bsp/mm32l07x/project.uvoptx rename to bsp/mm32/mm32l07x/project.uvoptx diff --git a/bsp/mm32l07x/project.uvprojx b/bsp/mm32/mm32l07x/project.uvprojx similarity index 89% rename from bsp/mm32l07x/project.uvprojx rename to bsp/mm32/mm32l07x/project.uvprojx index cddda43a20a..bfbb8007949 100644 --- a/bsp/mm32l07x/project.uvprojx +++ b/bsp/mm32/mm32l07x/project.uvprojx @@ -334,7 +334,7 @@ USE_STDPERIPH_DRIVER, RT_USING_LIBC, __RTTHREAD__, __STDC_LIMIT_MACROS, RT_USING_ARMLIBC, __CLK_TCK=RT_TICK_PER_SECOND - ..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\components\drivers\phy;..\..\components\libc\compilers\common\include;..\..\components\drivers\include;..\..\components\drivers\smp_call;..\..\libcpu\arm\common;drivers;Libraries\MM32L0xx\Source;..\..\components\drivers\include;..\..\libcpu\arm\cortex-m0;..\..\components\libc\posix\io\eventfd;..\..\components\libc\posix\io\poll;..\..\components\libc\posix\ipc;..\..\components\drivers\include;Libraries\MM32L0xx\Include;..\..\components\libc\posix\io\epoll;.;..\..\components\libc\compilers\common\extension;..\..\components\finsh;..\..\components\drivers\include;Libraries\CMSIS\CORE;Libraries\MM32L0xx\HAL_lib\inc;..\..\components\net\utest;applications;..\..\components\drivers\include;..\..\include + ..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\components\drivers\phy;..\..\..\components\libc\compilers\common\include;..\..\..\components\drivers\include;..\..\..\components\drivers\smp_call;..\..\..\libcpu\arm\common;board;..\libraries\HAL_Drivers\drivers;Libraries\MM32L0xx\Source;..\..\..\components\drivers\include;..\..\..\libcpu\arm\cortex-m0;..\..\..\components\libc\posix\io\eventfd;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\ipc;..\..\..\components\drivers\include;Libraries\MM32L0xx\Include;..\..\..\components\libc\posix\io\epoll;.;..\..\..\components\libc\compilers\common\extension;..\..\..\components\finsh;..\..\..\components\drivers\include;Libraries\CMSIS\CORE;Libraries\MM32L0xx\HAL_lib\inc;..\..\..\components\net\utest;applications;..\..\..\components\drivers\include;..\..\..\include @@ -365,7 +365,7 @@ 0x00000000 0x20000000 - .\drivers\linker_scripts\link.sct + .\board\linker_scripts\link.sct @@ -391,28 +391,28 @@ div0.c 1 - ..\..\libcpu\arm\common\div0.c + ..\..\..\libcpu\arm\common\div0.c showmem.c 1 - ..\..\libcpu\arm\common\showmem.c + ..\..\..\libcpu\arm\common\showmem.c context_rvds.S 2 - ..\..\libcpu\arm\cortex-m0\context_rvds.S + ..\..\..\libcpu\arm\cortex-m0\context_rvds.S cpuport.c 1 - ..\..\libcpu\arm\cortex-m0\cpuport.c + ..\..\..\libcpu\arm\cortex-m0\cpuport.c @@ -422,7 +422,7 @@ device.c 1 - ..\..\components\drivers\core\device.c + ..\..\..\components\drivers\core\device.c @@ -441,7 +441,7 @@ completion_comm.c 1 - ..\..\components\drivers\ipc\completion_comm.c + ..\..\..\components\drivers\ipc\completion_comm.c @@ -460,7 +460,7 @@ completion_up.c 1 - ..\..\components\drivers\ipc\completion_up.c + ..\..\..\components\drivers\ipc\completion_up.c @@ -479,7 +479,7 @@ condvar.c 1 - ..\..\components\drivers\ipc\condvar.c + ..\..\..\components\drivers\ipc\condvar.c @@ -498,7 +498,7 @@ dataqueue.c 1 - ..\..\components\drivers\ipc\dataqueue.c + ..\..\..\components\drivers\ipc\dataqueue.c @@ -517,7 +517,7 @@ pipe.c 1 - ..\..\components\drivers\ipc\pipe.c + ..\..\..\components\drivers\ipc\pipe.c @@ -536,7 +536,7 @@ ringblk_buf.c 1 - ..\..\components\drivers\ipc\ringblk_buf.c + ..\..\..\components\drivers\ipc\ringblk_buf.c @@ -555,7 +555,7 @@ ringbuffer.c 1 - ..\..\components\drivers\ipc\ringbuffer.c + ..\..\..\components\drivers\ipc\ringbuffer.c @@ -574,7 +574,7 @@ waitqueue.c 1 - ..\..\components\drivers\ipc\waitqueue.c + ..\..\..\components\drivers\ipc\waitqueue.c @@ -593,7 +593,7 @@ workqueue.c 1 - ..\..\components\drivers\ipc\workqueue.c + ..\..\..\components\drivers\ipc\workqueue.c @@ -612,7 +612,7 @@ dev_serial.c 1 - ..\..\components\drivers\serial\dev_serial.c + ..\..\..\components\drivers\serial\dev_serial.c @@ -634,14 +634,14 @@ board.c 1 - drivers\board.c + board\board.c drv_uart.c 1 - drivers\drv_uart.c + ..\libraries\HAL_Drivers\drivers\drv_uart.c @@ -651,28 +651,28 @@ shell.c 1 - ..\..\components\finsh\shell.c + ..\..\..\components\finsh\shell.c msh.c 1 - ..\..\components\finsh\msh.c + ..\..\..\components\finsh\msh.c msh_parse.c 1 - ..\..\components\finsh\msh_parse.c + ..\..\..\components\finsh\msh_parse.c cmd.c 1 - ..\..\components\finsh\cmd.c + ..\..\..\components\finsh\cmd.c @@ -682,7 +682,7 @@ clock.c 1 - ..\..\src\clock.c + ..\..\..\src\clock.c @@ -701,7 +701,7 @@ components.c 1 - ..\..\src\components.c + ..\..\..\src\components.c @@ -720,7 +720,7 @@ cpu_up.c 1 - ..\..\src\cpu_up.c + ..\..\..\src\cpu_up.c @@ -739,7 +739,7 @@ defunct.c 1 - ..\..\src\defunct.c + ..\..\..\src\defunct.c @@ -758,7 +758,7 @@ idle.c 1 - ..\..\src\idle.c + ..\..\..\src\idle.c @@ -777,7 +777,7 @@ ipc.c 1 - ..\..\src\ipc.c + ..\..\..\src\ipc.c @@ -796,7 +796,7 @@ irq.c 1 - ..\..\src\irq.c + ..\..\..\src\irq.c @@ -815,7 +815,7 @@ kservice.c 1 - ..\..\src\kservice.c + ..\..\..\src\kservice.c @@ -834,7 +834,7 @@ mem.c 1 - ..\..\src\mem.c + ..\..\..\src\mem.c @@ -853,7 +853,7 @@ memheap.c 1 - ..\..\src\memheap.c + ..\..\..\src\memheap.c @@ -872,7 +872,7 @@ mempool.c 1 - ..\..\src\mempool.c + ..\..\..\src\mempool.c @@ -891,7 +891,7 @@ object.c 1 - ..\..\src\object.c + ..\..\..\src\object.c @@ -910,7 +910,7 @@ scheduler_comm.c 1 - ..\..\src\scheduler_comm.c + ..\..\..\src\scheduler_comm.c @@ -929,7 +929,7 @@ scheduler_up.c 1 - ..\..\src\scheduler_up.c + ..\..\..\src\scheduler_up.c @@ -948,7 +948,7 @@ thread.c 1 - ..\..\src\thread.c + ..\..\..\src\thread.c @@ -967,7 +967,7 @@ timer.c 1 - ..\..\src\timer.c + ..\..\..\src\timer.c @@ -989,91 +989,91 @@ syscall_mem.c 1 - ..\..\components\libc\compilers\armlibc\syscall_mem.c + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c syscalls.c 1 - ..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\components\libc\compilers\armlibc\syscalls.c cctype.c 1 - ..\..\components\libc\compilers\common\cctype.c + ..\..\..\components\libc\compilers\common\cctype.c cstdlib.c 1 - ..\..\components\libc\compilers\common\cstdlib.c + ..\..\..\components\libc\compilers\common\cstdlib.c cstring.c 1 - ..\..\components\libc\compilers\common\cstring.c + ..\..\..\components\libc\compilers\common\cstring.c ctime.c 1 - ..\..\components\libc\compilers\common\ctime.c + ..\..\..\components\libc\compilers\common\ctime.c cunistd.c 1 - ..\..\components\libc\compilers\common\cunistd.c + ..\..\..\components\libc\compilers\common\cunistd.c cwchar.c 1 - ..\..\components\libc\compilers\common\cwchar.c + ..\..\..\components\libc\compilers\common\cwchar.c kerrno.c 1 - ..\..\src\klibc\kerrno.c + ..\..\..\src\klibc\kerrno.c kstdio.c 1 - ..\..\src\klibc\kstdio.c + ..\..\..\src\klibc\kstdio.c kstring.c 1 - ..\..\src\klibc\kstring.c + ..\..\..\src\klibc\kstring.c rt_vsnprintf_tiny.c 1 - ..\..\src\klibc\rt_vsnprintf_tiny.c + ..\..\..\src\klibc\rt_vsnprintf_tiny.c rt_vsscanf.c 1 - ..\..\src\klibc\rt_vsscanf.c + ..\..\..\src\klibc\rt_vsscanf.c diff --git a/bsp/mm32l07x/rtconfig.h b/bsp/mm32/mm32l07x/rtconfig.h similarity index 99% rename from bsp/mm32l07x/rtconfig.h rename to bsp/mm32/mm32l07x/rtconfig.h index e32da74ca85..f968a09a5d3 100644 --- a/bsp/mm32l07x/rtconfig.h +++ b/bsp/mm32/mm32l07x/rtconfig.h @@ -408,6 +408,8 @@ /* end of UART Drivers */ /* end of On-chip Peripheral Drivers */ /* end of Hardware Drivers Config */ +#define SOC_FAMILY_MM32 +#define SOC_SERIES_MM32L0 #define SOC_MM32L073 #endif diff --git a/bsp/mm32l07x/rtconfig.py b/bsp/mm32/mm32l07x/rtconfig.py similarity index 92% rename from bsp/mm32l07x/rtconfig.py rename to bsp/mm32/mm32l07x/rtconfig.py index b308dd9a308..8f2ab13677b 100644 --- a/bsp/mm32l07x/rtconfig.py +++ b/bsp/mm32/mm32l07x/rtconfig.py @@ -45,7 +45,7 @@ DEVICE = ' -mcpu=' + CPU + ' -mthumb -ffunction-sections -fdata-sections -Wall' CFLAGS = DEVICE + ' -std=c99' AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' - LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T drivers/linker_scripts/link.lds' + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T board/linker_scripts/link.lds' CPATH = '' LPATH = '' @@ -68,7 +68,7 @@ DEVICE = ' --cpu ' + CPU CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99' AFLAGS = DEVICE + ' --apcs=interwork ' - LFLAGS = DEVICE + ' --scatter "drivers/linker_scripts/link.sct" --info sizes --info totals --info unused --info veneers --list rtthread.map --strict' + LFLAGS = DEVICE + ' --scatter "board/linker_scripts/link.sct" --info sizes --info totals --info unused --info veneers --list rtthread.map --strict' CFLAGS += ' -I' + EXEC_PATH + '/ARM/ARMCC/INC' LFLAGS += ' --libpath ' + EXEC_PATH + '/ARM/ARMCC/LIB' @@ -127,7 +127,7 @@ else: CFLAGS += ' -Oh' - LFLAGS = ' --config "drivers/linker_scripts/link.icf"' + LFLAGS = ' --config "board/linker_scripts/link.icf"' LFLAGS += ' --entry __iar_program_start' #LFLAGS += ' --silent' diff --git a/bsp/mm32l07x/template.ewp b/bsp/mm32/mm32l07x/template.ewp similarity index 97% rename from bsp/mm32l07x/template.ewp rename to bsp/mm32/mm32l07x/template.ewp index 97e4912c1ac..a8b290504df 100644 --- a/bsp/mm32l07x/template.ewp +++ b/bsp/mm32/mm32l07x/template.ewp @@ -1,2040 +1,2040 @@ - - - 3 - - rt-thread - - ARM - - 1 - - General - 3 - - 30 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Release - - ARM - - 0 - - General - 3 - - 30 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - BILINK - 0 - - - - + + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 30 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 30 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + diff --git a/bsp/mm32l07x/template.eww b/bsp/mm32/mm32l07x/template.eww similarity index 100% rename from bsp/mm32l07x/template.eww rename to bsp/mm32/mm32l07x/template.eww diff --git a/bsp/mm32l07x/template.uvopt b/bsp/mm32/mm32l07x/template.uvopt similarity index 100% rename from bsp/mm32l07x/template.uvopt rename to bsp/mm32/mm32l07x/template.uvopt diff --git a/bsp/mm32l07x/template.uvoptx b/bsp/mm32/mm32l07x/template.uvoptx similarity index 100% rename from bsp/mm32l07x/template.uvoptx rename to bsp/mm32/mm32l07x/template.uvoptx diff --git a/bsp/mm32l07x/template.uvprojx b/bsp/mm32/mm32l07x/template.uvprojx similarity index 99% rename from bsp/mm32l07x/template.uvprojx rename to bsp/mm32/mm32l07x/template.uvprojx index 1a2de6ccfeb..b6bd869dd99 100644 --- a/bsp/mm32l07x/template.uvprojx +++ b/bsp/mm32/mm32l07x/template.uvprojx @@ -368,7 +368,7 @@ 0x00000000 0x20000000 - .\drivers\linker_scripts\link.sct + .\board\linker_scripts\link.sct diff --git a/bsp/mm32l3xx/.clang-format-ignore b/bsp/mm32/mm32l3xx/.clang-format-ignore similarity index 100% rename from bsp/mm32l3xx/.clang-format-ignore rename to bsp/mm32/mm32l3xx/.clang-format-ignore diff --git a/bsp/mm32f103x/.config b/bsp/mm32/mm32l3xx/.config similarity index 99% rename from bsp/mm32f103x/.config rename to bsp/mm32/mm32l3xx/.config index f942db7733b..1f8a6ca6fa7 100644 --- a/bsp/mm32f103x/.config +++ b/bsp/mm32/mm32l3xx/.config @@ -1442,4 +1442,6 @@ CONFIG_BSP_USING_UART1=y # end of On-chip Peripheral Drivers # end of Hardware Drivers Config +CONFIG_SOC_FAMILY_MM32=y +CONFIG_SOC_SERIES_MM32L3=y CONFIG_SOC_MM32L373=y diff --git a/bsp/mm32f103x/Kconfig b/bsp/mm32/mm32l3xx/Kconfig similarity index 69% rename from bsp/mm32f103x/Kconfig rename to bsp/mm32/mm32l3xx/Kconfig index b06e35082f5..79992153ee7 100644 --- a/bsp/mm32f103x/Kconfig +++ b/bsp/mm32/mm32l3xx/Kconfig @@ -2,16 +2,18 @@ mainmenu "RT-Thread Configuration" BSP_DIR := . -RTT_DIR := ../.. +RTT_DIR := ../../.. PKGS_DIR := packages -source "$(RTT_DIR)/Kconfig" -osource "$PKGS_DIR/Kconfig" -rsource "drivers/Kconfig" - config SOC_MM32L373 bool + select SOC_SERIES_MM32L3 select RT_USING_COMPONENTS_INIT select RT_USING_USER_MAIN default y + +source "$(RTT_DIR)/Kconfig" +osource "$PKGS_DIR/Kconfig" +rsource "../libraries/Kconfig" +rsource "board/Kconfig" diff --git a/bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/arm_common_tables.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/arm_common_tables.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/arm_common_tables.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/arm_common_tables.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/arm_const_structs.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/arm_const_structs.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/arm_const_structs.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/arm_const_structs.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/arm_math.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/arm_math.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/arm_math.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/arm_math.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm0.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm0.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm0.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm0.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm0plus.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm0plus.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm0plus.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm0plus.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm3.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm3.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm3.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm3.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm4.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm4.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm4.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm4.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm7.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm7.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm7.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cm7.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cmFunc.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cmFunc.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cmFunc.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cmFunc.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cmInstr.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cmInstr.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cmInstr.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cmInstr.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cmSimd.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cmSimd.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cmSimd.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_cmSimd.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_sc000.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_sc000.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_sc000.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_sc000.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_sc300.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_sc300.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_sc300.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/IAR_CORE/core_sc300.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/arm_common_tables.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/arm_common_tables.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/arm_common_tables.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/arm_common_tables.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/arm_const_structs.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/arm_const_structs.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/arm_const_structs.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/arm_const_structs.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/arm_math.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/arm_math.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/arm_math.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/arm_math.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm0.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm0.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm0.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm0.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm0plus.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm0plus.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm0plus.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm0plus.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm3.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm3.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm3.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm3.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm4.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm4.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm4.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm4.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm4_simd.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm4_simd.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm4_simd.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cm4_simd.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cmFunc.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cmFunc.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cmFunc.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cmFunc.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cmInstr.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cmInstr.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cmInstr.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_cmInstr.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_sc000.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_sc000.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_sc000.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_sc000.h diff --git a/bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_sc300.h b/bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_sc300.h similarity index 100% rename from bsp/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_sc300.h rename to bsp/mm32/mm32l3xx/Libraries/CMSIS/KEIL_CORE/core_sc300.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/MM32L3xx_lib_version.txt b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/MM32L3xx_lib_version.txt similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/MM32L3xx_lib_version.txt rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/MM32L3xx_lib_version.txt diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_adc.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_adc.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_adc.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_adc.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_bkp.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_bkp.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_bkp.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_bkp.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_can.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_can.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_can.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_can.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_conf.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_conf.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_conf.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_conf.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_crc.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_crc.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_crc.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_crc.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_dac.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_dac.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_dac.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_dac.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_dma.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_dma.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_dma.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_dma.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_exti.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_exti.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_exti.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_exti.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_flash.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_flash.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_flash.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_flash.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_gpio.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_gpio.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_gpio.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_gpio.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_i2c.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_i2c.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_i2c.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_i2c.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_iwdg.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_iwdg.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_iwdg.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_iwdg.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_misc.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_misc.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_misc.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_misc.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_pwr.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_pwr.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_pwr.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_pwr.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_rcc.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_rcc.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_rcc.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_rcc.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_rtc.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_rtc.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_rtc.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_rtc.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_spi.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_spi.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_spi.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_spi.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_tim.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_tim.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_tim.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_tim.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_uart.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_uart.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_uart.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_uart.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_wwdg.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_wwdg.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_wwdg.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/inc/HAL_wwdg.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_adc.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_adc.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_adc.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_adc.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_bkp.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_bkp.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_bkp.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_bkp.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_can.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_can.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_can.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_can.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_crc.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_crc.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_crc.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_crc.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_dac.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_dac.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_dac.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_dac.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_dma.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_dma.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_dma.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_dma.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_exti.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_exti.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_exti.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_exti.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_flash.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_flash.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_flash.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_flash.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_gpio.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_gpio.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_gpio.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_gpio.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_i2c.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_i2c.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_i2c.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_i2c.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_iwdg.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_iwdg.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_iwdg.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_iwdg.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_misc.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_misc.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_misc.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_misc.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_pwr.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_pwr.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_pwr.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_pwr.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_rcc.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_rcc.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_rcc.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_rcc.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_rtc.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_rtc.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_rtc.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_rtc.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_spi.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_spi.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_spi.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_spi.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_tim.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_tim.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_tim.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_tim.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_uart.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_uart.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_uart.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_uart.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_wwdg.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_wwdg.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_wwdg.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/HAL_lib/src/HAL_wwdg.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/Include/HAL_device.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/Include/HAL_device.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/Include/HAL_device.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/Include/HAL_device.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/Include/MM32L3xx.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/Include/MM32L3xx.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/Include/MM32L3xx.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/Include/MM32L3xx.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/Include/startup_MM32L3xx.h b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/Include/startup_MM32L3xx.h similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/Include/startup_MM32L3xx.h rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/Include/startup_MM32L3xx.h diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/Source/IAR_StartAsm/startup_MM32L3xx.s b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/Source/IAR_StartAsm/startup_MM32L3xx.s similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/Source/IAR_StartAsm/startup_MM32L3xx.s rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/Source/IAR_StartAsm/startup_MM32L3xx.s diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/Source/KEIL_StartAsm/startup_MM32L3xx.s b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/Source/KEIL_StartAsm/startup_MM32L3xx.s similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/Source/KEIL_StartAsm/startup_MM32L3xx.s rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/Source/KEIL_StartAsm/startup_MM32L3xx.s diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/Source/system_MM32L3xx.c b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/Source/system_MM32L3xx.c similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/Source/system_MM32L3xx.c rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/Source/system_MM32L3xx.c diff --git a/bsp/mm32l3xx/Libraries/MM32L3xx/change list.txt b/bsp/mm32/mm32l3xx/Libraries/MM32L3xx/change list.txt similarity index 100% rename from bsp/mm32l3xx/Libraries/MM32L3xx/change list.txt rename to bsp/mm32/mm32l3xx/Libraries/MM32L3xx/change list.txt diff --git a/bsp/mm32l3xx/Libraries/SConscript b/bsp/mm32/mm32l3xx/Libraries/SConscript similarity index 100% rename from bsp/mm32l3xx/Libraries/SConscript rename to bsp/mm32/mm32l3xx/Libraries/SConscript diff --git a/bsp/mm32l3xx/README.md b/bsp/mm32/mm32l3xx/README.md similarity index 98% rename from bsp/mm32l3xx/README.md rename to bsp/mm32/mm32l3xx/README.md index 57ea05a53eb..638f5df2af1 100644 --- a/bsp/mm32l3xx/README.md +++ b/bsp/mm32/mm32l3xx/README.md @@ -53,7 +53,7 @@ MM32L373PF 是上海灵动微电子股份有限公司的一款面向电机驱动 > 工程默认配置使用 Jlink 仿真器下载程序,在通过 Jlink 连接开发板到 PC 的基础上,点击下载按钮即可下载程序到开发板 -推荐熟悉 RT_Thread 的用户使用[env工具](https://www.rt-thread.org/download.html#download-rt-thread-env-tool),可以在console下进入到 `bsp/mm32l37x` 目录中,运行以下命令: +推荐熟悉 RT_Thread 的用户使用[env工具](https://www.rt-thread.org/download.html#download-rt-thread-env-tool),可以在console下进入到 `bsp/mm32/mm32l3xx` 目录中,运行以下命令: `scons` diff --git a/bsp/mm32l3xx/SConscript b/bsp/mm32/mm32l3xx/SConscript similarity index 100% rename from bsp/mm32l3xx/SConscript rename to bsp/mm32/mm32l3xx/SConscript diff --git a/bsp/mm32/mm32l3xx/SConstruct b/bsp/mm32/mm32l3xx/SConstruct new file mode 100644 index 00000000000..b2ebc5187e5 --- /dev/null +++ b/bsp/mm32/mm32l3xx/SConstruct @@ -0,0 +1,47 @@ +import os +import sys +import rtconfig + +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') +else: + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + +sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] +try: + from building import * +except: + print('Cannot found RT-Thread root directory, please check RTT_ROOT') + print(RTT_ROOT) + exit(-1) + +TARGET = 'rtthread.' + rtconfig.TARGET_EXT + +DefaultEnvironment(tools=[]) +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS, + AR = rtconfig.AR, ARFLAGS = '-rc', + LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) +env.PrependENVPath('PATH', rtconfig.EXEC_PATH) + +if rtconfig.PLATFORM in ['iccarm']: + env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) + env.Replace(ARFLAGS = ['']) + env.Replace(LINKCOM = env["LINKCOM"] + ' --map project.map') + +Export('RTT_ROOT') +Export('rtconfig') + +SDK_ROOT = os.path.abspath('./') +libraries_path_prefix = os.path.join(os.path.dirname(SDK_ROOT), 'libraries') + +# prepare building environment +objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'), + variant_dir='build/libraries/HAL_Drivers', duplicate=0)) + +# make a building +DoBuilding(TARGET, objs) diff --git a/bsp/mm32l3xx/applications/SConscript b/bsp/mm32/mm32l3xx/applications/SConscript similarity index 100% rename from bsp/mm32l3xx/applications/SConscript rename to bsp/mm32/mm32l3xx/applications/SConscript diff --git a/bsp/mm32l3xx/applications/main.c b/bsp/mm32/mm32l3xx/applications/main.c similarity index 100% rename from bsp/mm32l3xx/applications/main.c rename to bsp/mm32/mm32l3xx/applications/main.c diff --git a/bsp/mm32l3xx/drivers/Kconfig b/bsp/mm32/mm32l3xx/board/Kconfig similarity index 89% rename from bsp/mm32l3xx/drivers/Kconfig rename to bsp/mm32/mm32l3xx/board/Kconfig index fda41de573e..c5e74f0857b 100644 --- a/bsp/mm32l3xx/drivers/Kconfig +++ b/bsp/mm32/mm32l3xx/board/Kconfig @@ -18,6 +18,8 @@ menu "Hardware Drivers Config" select RT_USING_SERIAL default y endmenu + + source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig" endmenu endmenu diff --git a/bsp/mm32/mm32l3xx/board/SConscript b/bsp/mm32/mm32l3xx/board/SConscript new file mode 100644 index 00000000000..a3c45aa781e --- /dev/null +++ b/bsp/mm32/mm32l3xx/board/SConscript @@ -0,0 +1,11 @@ +from building import * + +cwd = GetCurrentDir() + +src = ['board.c'] + +CPPPATH = [cwd] + +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/mm32l3xx/drivers/board.c b/bsp/mm32/mm32l3xx/board/board.c similarity index 100% rename from bsp/mm32l3xx/drivers/board.c rename to bsp/mm32/mm32l3xx/board/board.c diff --git a/bsp/mm32l3xx/drivers/board.h b/bsp/mm32/mm32l3xx/board/board.h similarity index 100% rename from bsp/mm32l3xx/drivers/board.h rename to bsp/mm32/mm32l3xx/board/board.h diff --git a/bsp/mm32l3xx/drivers/linker_scripts/link.icf b/bsp/mm32/mm32l3xx/board/linker_scripts/link.icf similarity index 100% rename from bsp/mm32l3xx/drivers/linker_scripts/link.icf rename to bsp/mm32/mm32l3xx/board/linker_scripts/link.icf diff --git a/bsp/mm32l3xx/drivers/linker_scripts/link.lds b/bsp/mm32/mm32l3xx/board/linker_scripts/link.lds similarity index 100% rename from bsp/mm32l3xx/drivers/linker_scripts/link.lds rename to bsp/mm32/mm32l3xx/board/linker_scripts/link.lds diff --git a/bsp/mm32l3xx/drivers/linker_scripts/link.sct b/bsp/mm32/mm32l3xx/board/linker_scripts/link.sct similarity index 100% rename from bsp/mm32l3xx/drivers/linker_scripts/link.sct rename to bsp/mm32/mm32l3xx/board/linker_scripts/link.sct diff --git a/bsp/mm32l3xx/figures/MM32 MiniBoard Rev.D2_1.jpg b/bsp/mm32/mm32l3xx/figures/MM32 MiniBoard Rev.D2_1.jpg similarity index 100% rename from bsp/mm32l3xx/figures/MM32 MiniBoard Rev.D2_1.jpg rename to bsp/mm32/mm32l3xx/figures/MM32 MiniBoard Rev.D2_1.jpg diff --git a/bsp/mm32l3xx/figures/MM32 MiniBoard Rev.D2_2.jpg b/bsp/mm32/mm32l3xx/figures/MM32 MiniBoard Rev.D2_2.jpg similarity index 100% rename from bsp/mm32l3xx/figures/MM32 MiniBoard Rev.D2_2.jpg rename to bsp/mm32/mm32l3xx/figures/MM32 MiniBoard Rev.D2_2.jpg diff --git a/bsp/mm32l3xx/project.ewd b/bsp/mm32/mm32l3xx/project.ewd similarity index 100% rename from bsp/mm32l3xx/project.ewd rename to bsp/mm32/mm32l3xx/project.ewd diff --git a/bsp/mm32l3xx/project.ewp b/bsp/mm32/mm32l3xx/project.ewp similarity index 87% rename from bsp/mm32l3xx/project.ewp rename to bsp/mm32/mm32l3xx/project.ewp index 170f63bc649..90aab5740f4 100644 --- a/bsp/mm32l3xx/project.ewp +++ b/bsp/mm32/mm32l3xx/project.ewp @@ -1,2372 +1,2374 @@ - - 3 - - rt-thread - - ARM - - 1 - - General - 3 - - 30 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Release - - ARM - - 0 - - General - 3 - - 30 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - BILINK - 0 - - - - - Applications - - $PROJ_DIR$\applications\main.c - - - - CPU - - $PROJ_DIR$\..\..\libcpu\arm\common\div0.c - - - $PROJ_DIR$\..\..\libcpu\arm\common\showmem.c - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m3\context_iar.S - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m3\cpuport.c - - - - DeviceDrivers - - $PROJ_DIR$\..\..\components\drivers\core\device.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\completion_comm.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\completion_up.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\condvar.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\dataqueue.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\pipe.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\ringblk_buf.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\ringbuffer.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\waitqueue.c - - - $PROJ_DIR$\..\..\components\drivers\ipc\workqueue.c - - - $PROJ_DIR$\..\..\components\drivers\pin\dev_pin.c - - - $PROJ_DIR$\..\..\components\drivers\serial\dev_serial.c - - - - Drivers - - $PROJ_DIR$\drivers\board.c - - - $PROJ_DIR$\drivers\drv_uart.c - - - $PROJ_DIR$\drivers\drv_gpio.c - - - - Finsh - - $PROJ_DIR$\..\..\components\finsh\shell.c - - - $PROJ_DIR$\..\..\components\finsh\msh.c - - - $PROJ_DIR$\..\..\components\finsh\msh_parse.c - - - $PROJ_DIR$\..\..\components\finsh\cmd.c - - - - Kernel - - $PROJ_DIR$\..\..\src\clock.c - - - $PROJ_DIR$\..\..\src\components.c - - - $PROJ_DIR$\..\..\src\cpu_up.c - - - $PROJ_DIR$\..\..\src\defunct.c - - - $PROJ_DIR$\..\..\src\idle.c - - - $PROJ_DIR$\..\..\src\ipc.c - - - $PROJ_DIR$\..\..\src\irq.c - - - $PROJ_DIR$\..\..\src\kservice.c - - - $PROJ_DIR$\..\..\src\mem.c - - - $PROJ_DIR$\..\..\src\memheap.c - - - $PROJ_DIR$\..\..\src\mempool.c - - - $PROJ_DIR$\..\..\src\object.c - - - $PROJ_DIR$\..\..\src\scheduler_comm.c - - - $PROJ_DIR$\..\..\src\scheduler_up.c - - - $PROJ_DIR$\..\..\src\thread.c - - - $PROJ_DIR$\..\..\src\timer.c - - - - Libc - - $PROJ_DIR$\..\..\components\libc\compilers\common\cctype.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cstdlib.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cstring.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\ctime.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cunistd.c - - - $PROJ_DIR$\..\..\components\libc\compilers\common\cwchar.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\environ.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_close.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_lseek.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_mem.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_open.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_read.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_remove.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_write.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscalls.c - - - $PROJ_DIR$\..\..\src\klibc\kerrno.c - - - $PROJ_DIR$\..\..\src\klibc\kstdio.c - - - $PROJ_DIR$\..\..\src\klibc\kstring.c - - - $PROJ_DIR$\..\..\src\klibc\rt_vsnprintf_tiny.c - - - $PROJ_DIR$\..\..\src\klibc\rt_vsscanf.c - - - - Libraries - - $PROJ_DIR$\Libraries\MM32L3xx\Source\system_MM32L3xx.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_adc.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_bkp.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_can.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_crc.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_dac.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_dma.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_exti.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_flash.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_gpio.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_i2c.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_iwdg.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_misc.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_pwr.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_rcc.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_rtc.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_spi.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_tim.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_uart.c - - - $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_wwdg.c - - - $PROJ_DIR$\Libraries\MM32L3xx\Source\IAR_StartAsm\startup_MM32L3xx.s - - - - utc_UTest - - - utestcases - - + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 30 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 30 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + CPU + + $PROJ_DIR$\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\showmem.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m3\context_iar.S + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-m3\cpuport.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\components\drivers\core\device.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_comm.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_up.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\condvar.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\workqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\pin\dev_pin.c + + + $PROJ_DIR$\..\..\..\components\drivers\serial\dev_serial.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drivers\drv_uart.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drivers\drv_gpio.c + + + + Finsh + + $PROJ_DIR$\..\..\..\components\finsh\shell.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh_parse.c + + + $PROJ_DIR$\..\..\..\components\finsh\cmd.c + + + + Kernel + + $PROJ_DIR$\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\src\cpu_up.c + + + $PROJ_DIR$\..\..\..\src\defunct.c + + + $PROJ_DIR$\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\src\memheap.c + + + $PROJ_DIR$\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\src\scheduler_comm.c + + + $PROJ_DIR$\..\..\..\src\scheduler_up.c + + + $PROJ_DIR$\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\src\timer.c + + + + Libc + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cctype.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstdlib.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstring.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\ctime.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cunistd.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cwchar.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\src\klibc\kerrno.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstdio.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstring.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsnprintf_tiny.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsscanf.c + + + + Libraries + + $PROJ_DIR$\Libraries\MM32L3xx\Source\system_MM32L3xx.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_adc.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_bkp.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_can.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_crc.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_dac.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_dma.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_exti.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_flash.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_gpio.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_i2c.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_iwdg.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_misc.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_pwr.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_rcc.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_rtc.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_spi.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_tim.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_uart.c + + + $PROJ_DIR$\Libraries\MM32L3xx\HAL_lib\src\HAL_wwdg.c + + + $PROJ_DIR$\Libraries\MM32L3xx\Source\IAR_StartAsm\startup_MM32L3xx.s + + + + utc_UTest + + + utestcases + + diff --git a/bsp/mm32l3xx/project.eww b/bsp/mm32/mm32l3xx/project.eww similarity index 100% rename from bsp/mm32l3xx/project.eww rename to bsp/mm32/mm32l3xx/project.eww diff --git a/bsp/mm32l3xx/project.uvoptx b/bsp/mm32/mm32l3xx/project.uvoptx similarity index 100% rename from bsp/mm32l3xx/project.uvoptx rename to bsp/mm32/mm32l3xx/project.uvoptx diff --git a/bsp/mm32l3xx/project.uvprojx b/bsp/mm32/mm32l3xx/project.uvprojx similarity index 89% rename from bsp/mm32l3xx/project.uvprojx rename to bsp/mm32/mm32l3xx/project.uvprojx index 30f2ee6540c..8cb96cbe2ff 100644 --- a/bsp/mm32l3xx/project.uvprojx +++ b/bsp/mm32/mm32l3xx/project.uvprojx @@ -335,7 +335,7 @@ __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, RT_USING_ARMLIBC, __STDC_LIMIT_MACROS, RT_USING_LIBC, USE_STDPERIPH_DRIVER - ..\..\components\net\utest;drivers;applications;..\..\components\drivers\include;..\..\components\libc\posix\ipc;..\..\components\drivers\phy;..\..\libcpu\arm\common;..\..\components\drivers\include;Libraries\MM32L3xx\HAL_lib\inc;Libraries\CMSIS\KEIL_CORE;..\..\components\libc\compilers\common\include;Libraries\MM32L3xx\Include;..\..\components\drivers\include;Libraries\MM32L3xx\Source;..\..\components\drivers\include;..\..\components\libc\posix\io\epoll;..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\include;.;..\..\components\drivers\include;..\..\components\libc\posix\io\poll;..\..\libcpu\arm\cortex-m3;..\..\components\libc\compilers\common\extension;..\..\components\libc\posix\io\eventfd;..\..\components\drivers\include;..\..\components\finsh;..\..\components\drivers\smp_call + ..\..\..\components\net\utest;board;..\libraries\HAL_Drivers\drivers;applications;..\..\..\components\drivers\include;..\..\..\components\libc\posix\ipc;..\..\..\components\drivers\phy;..\..\..\libcpu\arm\common;..\..\..\components\drivers\include;Libraries\MM32L3xx\HAL_lib\inc;Libraries\CMSIS\KEIL_CORE;..\..\..\components\libc\compilers\common\include;Libraries\MM32L3xx\Include;..\..\..\components\drivers\include;Libraries\MM32L3xx\Source;..\..\..\components\drivers\include;..\..\..\components\libc\posix\io\epoll;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\include;.;..\..\..\components\drivers\include;..\..\..\components\libc\posix\io\poll;..\..\..\libcpu\arm\cortex-m3;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\posix\io\eventfd;..\..\..\components\drivers\include;..\..\..\components\finsh;..\..\..\components\drivers\smp_call @@ -366,7 +366,7 @@ 0x00000000 0x20000000 - .\drivers\linker_scripts\link.sct + .\board\linker_scripts\link.sct @@ -392,28 +392,28 @@ div0.c 1 - ..\..\libcpu\arm\common\div0.c + ..\..\..\libcpu\arm\common\div0.c showmem.c 1 - ..\..\libcpu\arm\common\showmem.c + ..\..\..\libcpu\arm\common\showmem.c context_rvds.S 2 - ..\..\libcpu\arm\cortex-m3\context_rvds.S + ..\..\..\libcpu\arm\cortex-m3\context_rvds.S cpuport.c 1 - ..\..\libcpu\arm\cortex-m3\cpuport.c + ..\..\..\libcpu\arm\cortex-m3\cpuport.c @@ -423,7 +423,7 @@ device.c 1 - ..\..\components\drivers\core\device.c + ..\..\..\components\drivers\core\device.c @@ -442,7 +442,7 @@ completion_comm.c 1 - ..\..\components\drivers\ipc\completion_comm.c + ..\..\..\components\drivers\ipc\completion_comm.c @@ -461,7 +461,7 @@ completion_up.c 1 - ..\..\components\drivers\ipc\completion_up.c + ..\..\..\components\drivers\ipc\completion_up.c @@ -480,7 +480,7 @@ condvar.c 1 - ..\..\components\drivers\ipc\condvar.c + ..\..\..\components\drivers\ipc\condvar.c @@ -499,7 +499,7 @@ dataqueue.c 1 - ..\..\components\drivers\ipc\dataqueue.c + ..\..\..\components\drivers\ipc\dataqueue.c @@ -518,7 +518,7 @@ pipe.c 1 - ..\..\components\drivers\ipc\pipe.c + ..\..\..\components\drivers\ipc\pipe.c @@ -537,7 +537,7 @@ ringblk_buf.c 1 - ..\..\components\drivers\ipc\ringblk_buf.c + ..\..\..\components\drivers\ipc\ringblk_buf.c @@ -556,7 +556,7 @@ ringbuffer.c 1 - ..\..\components\drivers\ipc\ringbuffer.c + ..\..\..\components\drivers\ipc\ringbuffer.c @@ -575,7 +575,7 @@ waitqueue.c 1 - ..\..\components\drivers\ipc\waitqueue.c + ..\..\..\components\drivers\ipc\waitqueue.c @@ -594,7 +594,7 @@ workqueue.c 1 - ..\..\components\drivers\ipc\workqueue.c + ..\..\..\components\drivers\ipc\workqueue.c @@ -613,7 +613,7 @@ dev_pin.c 1 - ..\..\components\drivers\pin\dev_pin.c + ..\..\..\components\drivers\pin\dev_pin.c @@ -632,7 +632,7 @@ dev_serial.c 1 - ..\..\components\drivers\serial\dev_serial.c + ..\..\..\components\drivers\serial\dev_serial.c @@ -654,21 +654,21 @@ board.c 1 - drivers\board.c + board\board.c drv_uart.c 1 - drivers\drv_uart.c + ..\libraries\HAL_Drivers\drivers\drv_uart.c drv_gpio.c 1 - drivers\drv_gpio.c + ..\libraries\HAL_Drivers\drivers\drv_gpio.c @@ -678,28 +678,28 @@ shell.c 1 - ..\..\components\finsh\shell.c + ..\..\..\components\finsh\shell.c msh.c 1 - ..\..\components\finsh\msh.c + ..\..\..\components\finsh\msh.c msh_parse.c 1 - ..\..\components\finsh\msh_parse.c + ..\..\..\components\finsh\msh_parse.c cmd.c 1 - ..\..\components\finsh\cmd.c + ..\..\..\components\finsh\cmd.c @@ -709,7 +709,7 @@ clock.c 1 - ..\..\src\clock.c + ..\..\..\src\clock.c @@ -728,7 +728,7 @@ components.c 1 - ..\..\src\components.c + ..\..\..\src\components.c @@ -747,7 +747,7 @@ cpu_up.c 1 - ..\..\src\cpu_up.c + ..\..\..\src\cpu_up.c @@ -766,7 +766,7 @@ defunct.c 1 - ..\..\src\defunct.c + ..\..\..\src\defunct.c @@ -785,7 +785,7 @@ idle.c 1 - ..\..\src\idle.c + ..\..\..\src\idle.c @@ -804,7 +804,7 @@ ipc.c 1 - ..\..\src\ipc.c + ..\..\..\src\ipc.c @@ -823,7 +823,7 @@ irq.c 1 - ..\..\src\irq.c + ..\..\..\src\irq.c @@ -842,7 +842,7 @@ kservice.c 1 - ..\..\src\kservice.c + ..\..\..\src\kservice.c @@ -861,7 +861,7 @@ mem.c 1 - ..\..\src\mem.c + ..\..\..\src\mem.c @@ -880,7 +880,7 @@ memheap.c 1 - ..\..\src\memheap.c + ..\..\..\src\memheap.c @@ -899,7 +899,7 @@ mempool.c 1 - ..\..\src\mempool.c + ..\..\..\src\mempool.c @@ -918,7 +918,7 @@ object.c 1 - ..\..\src\object.c + ..\..\..\src\object.c @@ -937,7 +937,7 @@ scheduler_comm.c 1 - ..\..\src\scheduler_comm.c + ..\..\..\src\scheduler_comm.c @@ -956,7 +956,7 @@ scheduler_up.c 1 - ..\..\src\scheduler_up.c + ..\..\..\src\scheduler_up.c @@ -975,7 +975,7 @@ thread.c 1 - ..\..\src\thread.c + ..\..\..\src\thread.c @@ -994,7 +994,7 @@ timer.c 1 - ..\..\src\timer.c + ..\..\..\src\timer.c @@ -1016,91 +1016,91 @@ syscall_mem.c 1 - ..\..\components\libc\compilers\armlibc\syscall_mem.c + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c syscalls.c 1 - ..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\components\libc\compilers\armlibc\syscalls.c cctype.c 1 - ..\..\components\libc\compilers\common\cctype.c + ..\..\..\components\libc\compilers\common\cctype.c cstdlib.c 1 - ..\..\components\libc\compilers\common\cstdlib.c + ..\..\..\components\libc\compilers\common\cstdlib.c cstring.c 1 - ..\..\components\libc\compilers\common\cstring.c + ..\..\..\components\libc\compilers\common\cstring.c ctime.c 1 - ..\..\components\libc\compilers\common\ctime.c + ..\..\..\components\libc\compilers\common\ctime.c cunistd.c 1 - ..\..\components\libc\compilers\common\cunistd.c + ..\..\..\components\libc\compilers\common\cunistd.c cwchar.c 1 - ..\..\components\libc\compilers\common\cwchar.c + ..\..\..\components\libc\compilers\common\cwchar.c kerrno.c 1 - ..\..\src\klibc\kerrno.c + ..\..\..\src\klibc\kerrno.c kstdio.c 1 - ..\..\src\klibc\kstdio.c + ..\..\..\src\klibc\kstdio.c kstring.c 1 - ..\..\src\klibc\kstring.c + ..\..\..\src\klibc\kstring.c rt_vsnprintf_tiny.c 1 - ..\..\src\klibc\rt_vsnprintf_tiny.c + ..\..\..\src\klibc\rt_vsnprintf_tiny.c rt_vsscanf.c 1 - ..\..\src\klibc\rt_vsscanf.c + ..\..\..\src\klibc\rt_vsscanf.c diff --git a/bsp/mm32l3xx/rtconfig.h b/bsp/mm32/mm32l3xx/rtconfig.h similarity index 99% rename from bsp/mm32l3xx/rtconfig.h rename to bsp/mm32/mm32l3xx/rtconfig.h index 6d4a2bdedd8..cc4ed3c3ace 100644 --- a/bsp/mm32l3xx/rtconfig.h +++ b/bsp/mm32/mm32l3xx/rtconfig.h @@ -414,6 +414,8 @@ /* end of UART Drivers */ /* end of On-chip Peripheral Drivers */ /* end of Hardware Drivers Config */ +#define SOC_FAMILY_MM32 +#define SOC_SERIES_MM32L3 #define SOC_MM32L373 #endif diff --git a/bsp/mm32l3xx/rtconfig.py b/bsp/mm32/mm32l3xx/rtconfig.py similarity index 92% rename from bsp/mm32l3xx/rtconfig.py rename to bsp/mm32/mm32l3xx/rtconfig.py index 78f52f55e96..16ca92fcedf 100644 --- a/bsp/mm32l3xx/rtconfig.py +++ b/bsp/mm32/mm32l3xx/rtconfig.py @@ -45,7 +45,7 @@ DEVICE = ' -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -Wall' CFLAGS = DEVICE + ' -std=c99' AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' - LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T drivers/linker_scripts/link.lds' + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T board/linker_scripts/link.lds' CPATH = '' LPATH = '' @@ -68,7 +68,7 @@ DEVICE = ' --cpu ' + CPU CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99' AFLAGS = DEVICE + ' --apcs=interwork ' - LFLAGS = DEVICE + ' --scatter "drivers/linker_scripts/link.sct" --info sizes --info totals --info unused --info veneers --list rtthread.map --strict' + LFLAGS = DEVICE + ' --scatter "board/linker_scripts/link.sct" --info sizes --info totals --info unused --info veneers --list rtthread.map --strict' CFLAGS += ' -I' + EXEC_PATH + '/ARM/ARMCC/INC' LFLAGS += ' --libpath ' + EXEC_PATH + '/ARM/ARMCC/LIB' @@ -127,7 +127,7 @@ else: CFLAGS += ' -Oh' - LFLAGS = ' --config "drivers/linker_scripts/link.icf"' + LFLAGS = ' --config "board/linker_scripts/link.icf"' LFLAGS += ' --entry __iar_program_start' #LFLAGS += ' --silent' diff --git a/bsp/mm32l3xx/template.ewp b/bsp/mm32/mm32l3xx/template.ewp similarity index 97% rename from bsp/mm32l3xx/template.ewp rename to bsp/mm32/mm32l3xx/template.ewp index 27d0fdc7b77..343796a1ab1 100644 --- a/bsp/mm32l3xx/template.ewp +++ b/bsp/mm32/mm32l3xx/template.ewp @@ -1,2040 +1,2040 @@ - - - 3 - - rt-thread - - ARM - - 1 - - General - 3 - - 30 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Release - - ARM - - 0 - - General - 3 - - 30 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - BILINK - 0 - - - - + + + 3 + + rt-thread + + ARM + + 1 + + General + 3 + + 30 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 30 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + diff --git a/bsp/mm32l3xx/template.eww b/bsp/mm32/mm32l3xx/template.eww similarity index 100% rename from bsp/mm32l3xx/template.eww rename to bsp/mm32/mm32l3xx/template.eww diff --git a/bsp/mm32l3xx/template.uvopt b/bsp/mm32/mm32l3xx/template.uvopt similarity index 100% rename from bsp/mm32l3xx/template.uvopt rename to bsp/mm32/mm32l3xx/template.uvopt diff --git a/bsp/mm32l3xx/template.uvoptx b/bsp/mm32/mm32l3xx/template.uvoptx similarity index 100% rename from bsp/mm32l3xx/template.uvoptx rename to bsp/mm32/mm32l3xx/template.uvoptx diff --git a/bsp/mm32l3xx/template.uvprojx b/bsp/mm32/mm32l3xx/template.uvprojx similarity index 99% rename from bsp/mm32l3xx/template.uvprojx rename to bsp/mm32/mm32l3xx/template.uvprojx index b2e4a198d3d..eb94fc2273e 100644 --- a/bsp/mm32l3xx/template.uvprojx +++ b/bsp/mm32/mm32l3xx/template.uvprojx @@ -369,7 +369,7 @@ 0x00000000 0x20000000 - .\drivers\linker_scripts\link.sct + .\board\linker_scripts\link.sct diff --git a/bsp/mm32f103x/drivers/SConscript b/bsp/mm32f103x/drivers/SConscript deleted file mode 100644 index e7e064caf18..00000000000 --- a/bsp/mm32f103x/drivers/SConscript +++ /dev/null @@ -1,24 +0,0 @@ -# RT-Thread building script for component - -from building import * - -cwd = GetCurrentDir() - -# add the general drivers. -src = Split(""" -board.c -""") - -# add serial driver code -if GetDepend('BSP_USING_UART1') or GetDepend('BSP_USING_UART2'): - src += ['drv_uart.c'] - -# add gpio driver code -if GetDepend(['BSP_USING_GPIO']): - src += ['drv_gpio.c'] - -CPPPATH = [cwd] - -group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) - -Return('group') diff --git a/bsp/mm32f103x/drivers/drv_gpio.c b/bsp/mm32f103x/drivers/drv_gpio.c deleted file mode 100644 index 7db8bd95a95..00000000000 --- a/bsp/mm32f103x/drivers/drv_gpio.c +++ /dev/null @@ -1,544 +0,0 @@ -/* - * Copyright (c) 2006-2018, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-08-04 stackRyan first version - */ -#include -#include -#include -#include - -#define MM32_PIN(index, rcc, gpio, gpio_index) { 0, RCC_##rcc##Periph_GPIO##gpio, GPIO##gpio, GPIO_Pin_##gpio_index, GPIO_PortSourceGPIO##gpio, GPIO_PinSource##gpio_index} -#define MM32_PIN_DEFAULT {-1, 0, 0, 0, 0, 0} -/* MM32 GPIO driver */ -struct pin_index -{ - int index; - uint32_t rcc; - GPIO_TypeDef *gpio; - uint32_t pin; - uint8_t port_source; - uint8_t pin_source; -}; -static const struct pin_index mm32_pin_map[] = -{ - MM32_PIN_DEFAULT, - MM32_PIN(1, APB2, A, 0), - MM32_PIN(2, APB2, A, 1), - MM32_PIN(3, APB2, A, 2), - MM32_PIN(4, APB2, A, 3), - MM32_PIN(5, APB2, A, 4), - MM32_PIN(6, APB2, A, 5), - MM32_PIN(7, APB2, A, 6), - MM32_PIN(8, APB2, A, 7), - MM32_PIN(9, APB2, A, 8), - MM32_PIN(10, APB2, A, 9), - MM32_PIN(11, APB2, A, 10), - MM32_PIN(12, APB2, A, 11), - MM32_PIN(13, APB2, A, 12), - MM32_PIN(14, APB2, A, 13), - MM32_PIN(15, APB2, A, 14), - MM32_PIN(16, APB2, A, 15), - MM32_PIN(17, APB2, B, 0), - MM32_PIN(18, APB2, B, 1), - MM32_PIN(19, APB2, B, 2), - MM32_PIN(20, APB2, B, 3), - MM32_PIN(21, APB2, B, 4), - MM32_PIN(22, APB2, B, 5), - MM32_PIN(23, APB2, B, 6), - MM32_PIN(24, APB2, B, 7), - MM32_PIN(25, APB2, B, 8), - MM32_PIN(26, APB2, B, 9), - MM32_PIN(27, APB2, B, 10), - MM32_PIN(28, APB2, B, 11), - MM32_PIN(29, APB2, B, 12), - MM32_PIN(30, APB2, B, 13), - MM32_PIN(31, APB2, B, 14), - MM32_PIN(32, APB2, B, 15), - MM32_PIN(33, APB2, C, 0), - MM32_PIN(34, APB2, C, 1), - MM32_PIN(35, APB2, C, 2), - MM32_PIN(36, APB2, C, 3), - MM32_PIN(37, APB2, C, 4), - MM32_PIN(38, APB2, C, 5), - MM32_PIN(39, APB2, C, 6), - MM32_PIN(40, APB2, C, 7), - MM32_PIN(41, APB2, C, 8), - MM32_PIN(42, APB2, C, 9), - MM32_PIN(43, APB2, C, 10), - MM32_PIN(44, APB2, C, 11), - MM32_PIN(45, APB2, C, 12), - MM32_PIN(46, APB2, C, 13), - MM32_PIN(47, APB2, C, 14), - MM32_PIN(48, APB2, C, 15), - MM32_PIN(49, APB2, D, 0), - MM32_PIN(50, APB2, D, 1), - MM32_PIN(51, APB2, D, 2), - MM32_PIN(52, APB2, D, 3), - MM32_PIN(53, APB2, D, 4), - MM32_PIN(54, APB2, D, 5), - MM32_PIN(55, APB2, D, 6), - MM32_PIN(56, APB2, D, 7), - MM32_PIN(57, APB2, D, 8), - MM32_PIN(58, APB2, D, 9), - MM32_PIN(59, APB2, D, 10), - MM32_PIN(60, APB2, D, 11), - MM32_PIN(61, APB2, D, 12), - MM32_PIN(62, APB2, D, 13), - MM32_PIN(63, APB2, D, 14), - MM32_PIN(64, APB2, D, 15), -}; - -struct pin_irq_map -{ - rt_uint16_t pinbit; - rt_uint32_t irqbit; - enum IRQn irqno; -}; -const struct pin_irq_map mm32_pin_irq_map[] = -{ - {GPIO_Pin_0, EXTI_Line0, EXTI0_IRQn }, - {GPIO_Pin_1, EXTI_Line1, EXTI1_IRQn }, - {GPIO_Pin_2, EXTI_Line2, EXTI2_IRQn }, - {GPIO_Pin_3, EXTI_Line3, EXTI3_IRQn }, - {GPIO_Pin_4, EXTI_Line4, EXTI4_IRQn }, - {GPIO_Pin_5, EXTI_Line5, EXTI9_5_IRQn }, - {GPIO_Pin_6, EXTI_Line6, EXTI9_5_IRQn }, - {GPIO_Pin_7, EXTI_Line7, EXTI9_5_IRQn }, - {GPIO_Pin_8, EXTI_Line8, EXTI9_5_IRQn }, - {GPIO_Pin_9, EXTI_Line9, EXTI9_5_IRQn }, - {GPIO_Pin_10, EXTI_Line10, EXTI15_10_IRQn}, - {GPIO_Pin_11, EXTI_Line11, EXTI15_10_IRQn}, - {GPIO_Pin_12, EXTI_Line12, EXTI15_10_IRQn}, - {GPIO_Pin_13, EXTI_Line13, EXTI15_10_IRQn}, - {GPIO_Pin_14, EXTI_Line14, EXTI15_10_IRQn}, - {GPIO_Pin_15, EXTI_Line15, EXTI15_10_IRQn}, -}; -struct rt_pin_irq_hdr mm32_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}, - {-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}, - {-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}, - {-1, 0, RT_NULL, RT_NULL}, -}; -#define ITEM_NUM(items) sizeof(items) / sizeof(items[0]) -const struct pin_index *get_pin(uint8_t pin) -{ - const struct pin_index *index; - - if (pin < ITEM_NUM(mm32_pin_map)) - { - index = &mm32_pin_map[pin]; - if (index->gpio == 0) - index = RT_NULL; - } - else - { - index = RT_NULL; - } - - return index; -}; - -void mm32_pin_write(rt_device_t dev, rt_base_t pin, rt_uint8_t value) -{ - const struct pin_index *index; - - index = get_pin(pin); - if (index == RT_NULL) - { - return; - } - if (value == PIN_LOW) - { - GPIO_ResetBits(index->gpio, index->pin); - } - else - { - GPIO_SetBits(index->gpio, index->pin); - } -} - -rt_ssize_t mm32_pin_read(rt_device_t dev, rt_base_t pin) -{ - rt_ssize_t value; - const struct pin_index *index; - - value = PIN_LOW; - index = get_pin(pin); - if (index == RT_NULL) - { - return -RT_EINVAL; - } - if (GPIO_ReadInputDataBit(index->gpio, index->pin) == Bit_RESET) - { - value = PIN_LOW; - } - else - { - value = PIN_HIGH; - } - return value; -} - -void mm32_pin_mode(rt_device_t dev, rt_base_t pin, rt_uint8_t mode) -{ - const struct pin_index *index; - GPIO_InitTypeDef GPIO_InitStructure; - - index = get_pin(pin); - if (index == RT_NULL) - { - return; - } - /* GPIO Periph clock enable */ - RCC_APB2PeriphClockCmd(index->rcc, ENABLE); - /* Configure GPIO_InitStructure */ - GPIO_InitStructure.GPIO_Pin = index->pin; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - if (mode == PIN_MODE_OUTPUT) - { - /* output setting */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - } - else if (mode == PIN_MODE_OUTPUT_OD) - { - /* output setting: od. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; - } - else if (mode == PIN_MODE_INPUT) - { - /* input setting: not pull. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; - } - else if (mode == PIN_MODE_INPUT_PULLUP) - { - /* input setting: pull up. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; - } - else - { - /* input setting:default. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; - } - GPIO_Init( index->gpio, &GPIO_InitStructure); -} -rt_inline rt_int32_t bit2bitno(rt_uint32_t bit) -{ - int i; - for (i = 0; i < 32; i++) - { - if ((0x01 << i) == bit) - { - return i; - } - } - return -1; -} -rt_inline const struct pin_irq_map *get_pin_irq_map(uint32_t pinbit) -{ - rt_int32_t mapindex = bit2bitno(pinbit); - if (mapindex < 0 || mapindex >= ITEM_NUM(mm32_pin_irq_map)) - { - return RT_NULL; - } - return &mm32_pin_irq_map[mapindex]; -}; -rt_err_t mm32_pin_attach_irq(struct rt_device *device, rt_base_t pin, - rt_uint8_t mode, void (*hdr)(void *args), void *args) -{ - const struct pin_index *index; - rt_base_t level; - rt_int32_t irqindex = -1; - - index = get_pin(pin); - if (index == RT_NULL) - { - return -RT_ENOSYS; - } - irqindex = bit2bitno(index->pin); - if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) - { - return -RT_ENOSYS; - } - - level = rt_hw_interrupt_disable(); - if (mm32_pin_irq_hdr_tab[irqindex].pin == pin && - mm32_pin_irq_hdr_tab[irqindex].hdr == hdr && - mm32_pin_irq_hdr_tab[irqindex].mode == mode && - mm32_pin_irq_hdr_tab[irqindex].args == args - ) - { - rt_hw_interrupt_enable(level); - return RT_EOK; - } - if (mm32_pin_irq_hdr_tab[irqindex].pin != -1) - { - rt_hw_interrupt_enable(level); - return -RT_EBUSY; - } - mm32_pin_irq_hdr_tab[irqindex].pin = pin; - mm32_pin_irq_hdr_tab[irqindex].hdr = hdr; - mm32_pin_irq_hdr_tab[irqindex].mode = mode; - mm32_pin_irq_hdr_tab[irqindex].args = args; - rt_hw_interrupt_enable(level); - - return RT_EOK; -} -rt_err_t mm32_pin_detach_irq(struct rt_device *device, rt_base_t pin) -{ - const struct pin_index *index; - rt_base_t level; - rt_int32_t irqindex = -1; - - index = get_pin(pin); - if (index == RT_NULL) - { - return -RT_ENOSYS; - } - irqindex = bit2bitno(index->pin); - if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) - { - return -RT_ENOSYS; - } - - level = rt_hw_interrupt_disable(); - if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) - { - rt_hw_interrupt_enable(level); - return RT_EOK; - } - mm32_pin_irq_hdr_tab[irqindex].pin = -1; - mm32_pin_irq_hdr_tab[irqindex].hdr = RT_NULL; - mm32_pin_irq_hdr_tab[irqindex].mode = 0; - mm32_pin_irq_hdr_tab[irqindex].args = RT_NULL; - rt_hw_interrupt_enable(level); - - return RT_EOK; -} -rt_err_t mm32_pin_irq_enable(struct rt_device *device, rt_base_t pin, - rt_uint8_t enabled) -{ - const struct pin_index *index; - const struct pin_irq_map *irqmap; - rt_base_t level; - rt_int32_t irqindex = -1; - GPIO_InitTypeDef GPIO_InitStructure; - NVIC_InitTypeDef NVIC_InitStructure; - EXTI_InitTypeDef EXTI_InitStructure; - - index = get_pin(pin); - if (index == RT_NULL) - { - return -RT_ENOSYS; - } - if (enabled == PIN_IRQ_ENABLE) - { - irqindex = bit2bitno(index->pin); - if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) - { - return -RT_ENOSYS; - } - level = rt_hw_interrupt_disable(); - if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) - { - rt_hw_interrupt_enable(level); - return -RT_ENOSYS; - } - irqmap = &mm32_pin_irq_map[irqindex]; - /* GPIO Periph clock enable */ - RCC_APB2PeriphClockCmd(index->rcc, ENABLE); - /* Configure GPIO_InitStructure */ - GPIO_InitStructure.GPIO_Pin = index->pin; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_Init(index->gpio, &GPIO_InitStructure); - - NVIC_InitStructure.NVIC_IRQChannel = irqmap->irqno; - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; - NVIC_Init(&NVIC_InitStructure); - - GPIO_EXTILineConfig(index->port_source, index->pin_source); - EXTI_InitStructure.EXTI_Line = irqmap->irqbit; - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - switch (mm32_pin_irq_hdr_tab[irqindex].mode) - { - case PIN_IRQ_MODE_RISING: - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; - break; - case PIN_IRQ_MODE_FALLING: - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; - break; - case PIN_IRQ_MODE_RISING_FALLING: - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; - break; - } - EXTI_InitStructure.EXTI_LineCmd = ENABLE; - EXTI_Init(&EXTI_InitStructure); - rt_hw_interrupt_enable(level); - } - else if (enabled == PIN_IRQ_DISABLE) - { - irqmap = get_pin_irq_map(index->pin); - if (irqmap == RT_NULL) - { - return -RT_ENOSYS; - } - EXTI_InitStructure.EXTI_Line = irqmap->irqbit; - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; - EXTI_InitStructure.EXTI_LineCmd = DISABLE; - EXTI_Init(&EXTI_InitStructure); - } - else - { - return -RT_ENOSYS; - } - - return RT_EOK; -} -const static struct rt_pin_ops _mm32_pin_ops = -{ - mm32_pin_mode, - mm32_pin_write, - mm32_pin_read, - mm32_pin_attach_irq, - mm32_pin_detach_irq, - mm32_pin_irq_enable, - RT_NULL, -}; - -int rt_hw_pin_init(void) -{ - int result; - - result = rt_device_pin_register("pin", &_mm32_pin_ops, RT_NULL); - return result; -} -INIT_BOARD_EXPORT(rt_hw_pin_init); - -rt_inline void pin_irq_hdr(int irqno) -{ - EXTI_ClearITPendingBit(mm32_pin_irq_map[irqno].irqbit); - if (mm32_pin_irq_hdr_tab[irqno].hdr) - { - mm32_pin_irq_hdr_tab[irqno].hdr(mm32_pin_irq_hdr_tab[irqno].args); - } -} -void EXTI0_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(0); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI1_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(1); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI2_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(2); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI3_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(3); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI4_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(4); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI9_5_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - if (EXTI_GetITStatus(EXTI_Line5) != RESET) - { - pin_irq_hdr(5); - } - if (EXTI_GetITStatus(EXTI_Line6) != RESET) - { - pin_irq_hdr(6); - } - if (EXTI_GetITStatus(EXTI_Line7) != RESET) - { - pin_irq_hdr(7); - } - if (EXTI_GetITStatus(EXTI_Line8) != RESET) - { - pin_irq_hdr(8); - } - if (EXTI_GetITStatus(EXTI_Line9) != RESET) - { - pin_irq_hdr(9); - } - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI15_10_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - if (EXTI_GetITStatus(EXTI_Line10) != RESET) - { - pin_irq_hdr(10); - } - if (EXTI_GetITStatus(EXTI_Line11) != RESET) - { - pin_irq_hdr(11); - } - if (EXTI_GetITStatus(EXTI_Line12) != RESET) - { - pin_irq_hdr(12); - } - if (EXTI_GetITStatus(EXTI_Line13) != RESET) - { - pin_irq_hdr(13); - } - if (EXTI_GetITStatus(EXTI_Line14) != RESET) - { - pin_irq_hdr(14); - } - if (EXTI_GetITStatus(EXTI_Line15) != RESET) - { - pin_irq_hdr(15); - } - /* leave interrupt */ - rt_interrupt_leave(); -} diff --git a/bsp/mm32f103x/drivers/drv_gpio.h b/bsp/mm32f103x/drivers/drv_gpio.h deleted file mode 100644 index 09de5d6e9b3..00000000000 --- a/bsp/mm32f103x/drivers/drv_gpio.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) 2006-2018, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2019-04-02 henryhuang the first version - */ -#ifndef DRV_GPIO_H__ -#define DRV_GPIO_H__ - -int rt_hw_pin_init(void); - -#endif diff --git a/bsp/mm32f103x/drivers/drv_uart.c b/bsp/mm32f103x/drivers/drv_uart.c deleted file mode 100644 index 22a80a1b33c..00000000000 --- a/bsp/mm32f103x/drivers/drv_uart.c +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Copyright (c) 2006-2018, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-08-04 stackRyan first version - */ -#include -#include -#include "drv_uart.h" - -/* UART1 */ -#define UART1_GPIO_TX GPIO_Pin_9 -#define UART1_GPIO_TX_SOURCE GPIO_PinSource9 -#define UART1_GPIO_RX GPIO_Pin_10 -#define UART1_GPIO_RX_SOURCE GPIO_PinSource10 -#define UART1_GPIO_AF GPIO_AF_1 -#define UART1_GPIO GPIOA - -/* UART2 */ -#define UART2_GPIO_TX GPIO_Pin_2 -#define UART2_GPIO_TX_SOURCE GPIO_PinSource2 -#define UART2_GPIO_RX GPIO_Pin_3 -#define UART2_GPIO_RX_SOURCE GPIO_PinSource3 -#define UART2_GPIO_AF GPIO_AF_1 -#define UART2_GPIO GPIOA - -/* uart driver */ -struct mm32_uart -{ - UART_TypeDef *uart; - IRQn_Type irq; -}; - -static rt_err_t mm32_uart_configure(struct rt_serial_device *serial, struct serial_configure *cfg) -{ - struct mm32_uart *uart; - UART_InitTypeDef UART_InitStructure; - RT_ASSERT(serial != RT_NULL); - RT_ASSERT(cfg != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - UART_InitStructure.UART_BaudRate = cfg->baud_rate; - if (cfg->data_bits == DATA_BITS_8) - UART_InitStructure.UART_WordLength = UART_WordLength_8b; - if (cfg->stop_bits == STOP_BITS_1) - UART_InitStructure.UART_StopBits = UART_StopBits_1; - else if (cfg->stop_bits == STOP_BITS_2) - UART_InitStructure.UART_StopBits = UART_StopBits_2; - UART_InitStructure.UART_Parity = UART_Parity_No; - UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None; - UART_InitStructure.UART_Mode = UART_Mode_Rx | UART_Mode_Tx; - UART_Init(uart->uart, &UART_InitStructure); - /* Enable UART */ - UART_Cmd(uart->uart, ENABLE); - return RT_EOK; -} - -static rt_err_t mm32_uart_control(struct rt_serial_device *serial, int cmd, void *arg) -{ - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - switch (cmd) - { - case RT_DEVICE_CTRL_CLR_INT: - /* disable rx irq */ - NVIC_DisableIRQ(uart->irq); - UART_ITConfig(uart->uart, UART_IT_RXIEN, DISABLE); - break; - case RT_DEVICE_CTRL_SET_INT: - /* enable rx irq */ - NVIC_EnableIRQ(uart->irq); - /* enable interrupt */ - UART_ITConfig(uart->uart, UART_IT_RXIEN, ENABLE); - break; - } - return RT_EOK; -} - -static int mm32_uart_putc(struct rt_serial_device *serial, char c) -{ - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - while ((uart->uart->CSR & UART_IT_TXIEN) == 0); - uart->uart->TDR = (c & (uint16_t)0x00FF); - return 1; -} - -static int mm32_uart_getc(struct rt_serial_device *serial) -{ - int ch; - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - ch = -1; - if (uart->uart->CSR & UART_FLAG_RXAVL) - { - ch = uart->uart->RDR & 0xff; - } - return ch; -} - -static const struct rt_uart_ops mm32_uart_ops = -{ - mm32_uart_configure, - mm32_uart_control, - mm32_uart_putc, - mm32_uart_getc, -}; - -#if defined(BSP_USING_UART1) -/* UART1 device driver structure */ -static struct mm32_uart uart1; -struct rt_serial_device serial1; -void UART1_IRQHandler(void) -{ - struct mm32_uart *uart; - uart = &uart1; - /* enter interrupt */ - rt_interrupt_enter(); - if (UART_GetITStatus(uart->uart, UART_IT_RXIEN) != RESET) - { - UART_ClearITPendingBit(uart->uart, UART_IT_RXIEN); - rt_hw_serial_isr(&serial1, RT_SERIAL_EVENT_RX_IND); - } - if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) - { - /* clear interrupt */ - UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); - } - /* leave interrupt */ - rt_interrupt_leave(); -} -#endif /* BSP_USING_UART1 */ - -#if defined(BSP_USING_UART2) -/* UART2 device driver structure */ -static struct mm32_uart uart2; -struct rt_serial_device serial2; -void UART2_IRQHandler(void) -{ - struct mm32_uart *uart; - uart = &uart2; - /* enter interrupt */ - rt_interrupt_enter(); - if (UART_GetITStatus(uart->uart, UART_IT_RXIEN) != RESET) - { - UART_ClearITPendingBit(uart->uart, UART_IT_RXIEN); - rt_hw_serial_isr(&serial2, RT_SERIAL_EVENT_RX_IND); - } - if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) - { - /* clear interrupt */ - UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); - } - /* leave interrupt */ - rt_interrupt_leave(); -} -#endif /* BSP_USING_UART2 */ - -#ifdef BSP_USING_UART1 -static void UART1PINconfigStepA(void) -{ - /* Enable UART clock */ - RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1 | RCC_APB2Periph_GPIOA, ENABLE); -} - -static void UART1PINconfigStepB(void) -{ - - GPIO_InitTypeDef GPIO_InitStructure; - /* Configure USART Rx/tx PIN */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOA, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init(GPIOA, &GPIO_InitStructure); - -} -#endif - -#ifdef BSP_USING_UART2 -static void UART2PINconfigStepA(void) -{ - /* Enable UART clock */ - RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART2, ENABLE); - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); -} - -static void UART2PINconfigStepB(void) -{ - GPIO_InitTypeDef GPIO_InitStructure; - /* Configure USART Rx/tx PIN */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOA, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init(GPIOA, &GPIO_InitStructure); - -} -#endif - -int rt_hw_uart_init(void) -{ - struct mm32_uart *uart; - struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; -#ifdef BSP_USING_UART1 - UART1PINconfigStepA(); - uart = &uart1; - uart->uart = UART1; - uart->irq = UART1_IRQn; - config.baud_rate = BAUD_RATE_115200; - serial1.ops = &mm32_uart_ops; - serial1.config = config; - /* register UART1 device */ - rt_hw_serial_register(&serial1, "uart1", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, - uart); - UART1PINconfigStepB(); -#endif /* BSP_USING_UART1 */ - -#ifdef BSP_USING_UART2 - UART2PINconfigStepA(); - uart = &uart2; - uart->uart = UART2; - uart->irq = UART2_IRQn; - config.baud_rate = BAUD_RATE_115200; - serial2.ops = &mm32_uart_ops; - serial2.config = config; - /* register UART2 device */ - rt_hw_serial_register(&serial2, "uart2", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, - uart); - UART2PINconfigStepB(); -#endif /* BSP_USING_UART2 */ - return 0; -} -//INIT_BOARD_EXPORT(rt_hw_uart_init); -//attention: uart init hardware problems occure on mm32f103 -//recommand manually initialize uart in rt_hw_board_init() -//see in rt_hw_board_init() learn more on rt_hw_uart_init() detials. diff --git a/bsp/mm32f103x/drivers/drv_uart.h b/bsp/mm32f103x/drivers/drv_uart.h deleted file mode 100644 index 5f0d14b4851..00000000000 --- a/bsp/mm32f103x/drivers/drv_uart.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2017-2019, MindMotion AE Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2019-03-13 henryhuang first version - */ - -#ifndef DRV_UART_H__ -#define DRV_UART_H__ - -int rt_hw_uart_init(void); - -#endif diff --git a/bsp/mm32f327x/drivers/SConscript b/bsp/mm32f327x/drivers/SConscript deleted file mode 100644 index be3a6f1ff22..00000000000 --- a/bsp/mm32f327x/drivers/SConscript +++ /dev/null @@ -1,31 +0,0 @@ -# RT-Thread building script for component - -from building import * - -cwd = GetCurrentDir() - -# add the general drivers. -src = Split(""" -board.c -""") - -# add serial driver code -if GetDepend('BSP_USING_UART1') or GetDepend('BSP_USING_UART2'): - src += ['drv_uart.c'] - -# add gpio driver code -if GetDepend(['BSP_USING_GPIO']): - src += ['drv_gpio.c'] - -# add adc driver code -if GetDepend(['BSP_USING_ADC']): - src += ['drv_adc.c'] - -# add flash driver code -if GetDepend(['BSP_USING_OCFLASH']): - src += ['drv_flash.c'] -CPPPATH = [cwd] - -group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) - -Return('group') diff --git a/bsp/mm32f327x/drivers/drv_adc.c b/bsp/mm32f327x/drivers/drv_adc.c deleted file mode 100644 index 15d86d03b2e..00000000000 --- a/bsp/mm32f327x/drivers/drv_adc.c +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023-03-17 letian first version - */ -#include -#include -#include "drv_adc.h" -#include -#include -#include -#include - -#if defined(BSP_USING_ADC) - -#define ADC_CONFIG_GPIORCC RCC_AHBENR_GPIOA -#define ADC_CONFIG_GPIOX GPIOA -#define ADC_CONFIG_IOX GPIO_Pin_5 | GPIO_Pin_4 - -struct mm32_adc -{ - struct rt_adc_device mm32_adc_device; - ADC_TypeDef *adc_x; - char *name; -}; - -#if defined(BSP_USING_ADC1) -struct mm32_adc mm32_adc1_config = { - .adc_x = ADC1, - .name = "adc1", -}; -#endif /* BSP_USING_ADC1 */ - -#if defined(BSP_USING_ADC2) -struct mm32_adc mm32_adc2_config = { - .adc_x = ADC2, - .name = "adc2", -}; -#endif /* BSP_USING_ADC2 */ - -static void ADCxChannelEnable(ADC_TypeDef* ADCn, ADCCHANNEL_TypeDef channel) -{ - ADCn->CHSR &= ~(1 << channel); - ADCn->CHSR |= (1 << channel); -} - -static rt_err_t mm32_adc_init(struct rt_adc_device *device, rt_uint32_t channel, rt_bool_t enabled) -{ - ADC_InitTypeDef ADC_InitStruct; - ADC_TypeDef *adc_x; - RT_ASSERT(device != RT_NULL); - adc_x = device->parent.user_data; - - #if defined(BSP_USING_ADC1) - RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC1, ENABLE); //Enable ADC1 clock - #endif /* BSP_USING_ADC1 */ - - #if defined(BSP_USING_ADC2) - RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC2, ENABLE); //Enable ADC2 clock - #endif /* BSP_USING_ADC2 */ - - ADC_StructInit(&ADC_InitStruct); - ADC_InitStruct.ADC_Resolution = ADC_Resolution_12b; - ADC_InitStruct.ADC_PRESCARE = ADC_PCLK2_PRESCARE_16; //ADC prescale factor - ADC_InitStruct.ADC_Mode = ADC_Mode_Continue; //Set ADC mode to continuous conversion mode - ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right; //AD data right-justified - ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; - ADC_Init(adc_x, &ADC_InitStruct); - - ADC_RegularChannelConfig(adc_x, channel, 0, ADC_Samctl_239_5); - ADC_Cmd(adc_x, ENABLE); - ADCxChannelEnable(adc_x, channel); - - //config gpio - GPIO_InitTypeDef GPIO_InitStruct; - GPIO_StructInit(&GPIO_InitStruct); - - RCC_AHBPeriphClockCmd(ADC_CONFIG_GPIORCC, ENABLE); - GPIO_InitStruct.GPIO_Pin = ADC_CONFIG_IOX; - GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN; - GPIO_Init(ADC_CONFIG_GPIOX, &GPIO_InitStruct); - - return RT_EOK; -} - -static rt_err_t mm32_get_adc_value(struct rt_adc_device *device, rt_uint32_t channel, rt_uint32_t *value) -{ - ADC_TypeDef *adc_x; - RT_ASSERT(device != RT_NULL); - adc_x = device->parent.user_data; - - ADC_SoftwareStartConvCmd(adc_x, ENABLE); - while(ADC_GetFlagStatus(adc_x, ADC_IT_EOC) == 0); - ADC_ClearFlag(adc_x, ADC_IT_EOC); - *value = ADC_GetConversionValue(adc_x); - return RT_EOK; -} - -static rt_uint8_t mm32_adc_get_resolution(struct rt_adc_device *device) -{ - ADC_TypeDef *adc_x = device->parent.user_data; - - RT_ASSERT(device != RT_NULL); - - switch( ((adc_x->CFGR)&(0x00000380)) ) - { - case ADC_Resolution_12b: - return 12; - case ADC_Resolution_11b: - return 11; - case ADC_Resolution_10b: - return 10; - case ADC_Resolution_9b: - return 9; - case ADC_Resolution_8b: - return 8; - default: - return 0; - } -} - -static rt_int16_t mm32_adc_get_vref(struct rt_adc_device *device) -{ - if(device == RT_NULL) - return -RT_ERROR; - - return 3300; -} - -static const struct rt_adc_ops mm32_adc_ops = -{ - .enabled = mm32_adc_init, - .convert = mm32_get_adc_value, - .get_resolution = mm32_adc_get_resolution, - .get_vref = mm32_adc_get_vref, -}; - -int rt_hw_adc_init(void) -{ - #if defined(BSP_USING_ADC1) - rt_hw_adc_register(&mm32_adc1_config.mm32_adc_device, mm32_adc1_config.name, &mm32_adc_ops, mm32_adc1_config.adc_x); - #endif /* BSP_USING_ADC1 */ - - #if defined(BSP_USING_ADC2) - rt_hw_adc_register(&mm32_adc2_config.mm32_adc_device, mm32_adc2_config.name, &mm32_adc_ops, mm32_adc2_config.adc_x); - #endif /* BSP_USING_ADC2 */ - - return RT_EOK; -} -INIT_BOARD_EXPORT(rt_hw_adc_init); - -#endif /* BSP_USING_ADC */ diff --git a/bsp/mm32f327x/drivers/drv_adc.h b/bsp/mm32f327x/drivers/drv_adc.h deleted file mode 100644 index 9812cdf3cdb..00000000000 --- a/bsp/mm32f327x/drivers/drv_adc.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2023-03-17 letian first version - */ - -#ifndef __DRV_ADC_H__ -#define __DRV_ADC_H__ - -int rt_hw_adc_init(void); - -#endif diff --git a/bsp/mm32f327x/drivers/drv_flash.c b/bsp/mm32f327x/drivers/drv_flash.c deleted file mode 100644 index 7ccc05ebbb8..00000000000 --- a/bsp/mm32f327x/drivers/drv_flash.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-08-05 mazhiyuan first version - */ - - -#include -#include "hal_flash.h" -#include "drv_flash.h" - -#define OCFLASH_BLK_SIZE 1024 -#define OCFLASH_LEN 1024*512 -#define OCFLASH_ADDR 0x08000000 - -#ifdef OCFLASH_USE_FAL - #include -#endif - -#ifdef OCFLASH_USE_LFS - #include - #define FS_PARTITION_NAME "filesystem" -#endif - -static int init(void) -{ - /* do nothing now */ - return 0; -} - -static int read(long offset, uint8_t *buf, size_t size) -{ - size_t i; - uint32_t addr = OCFLASH_ADDR + offset; - for (i = 0; i < size; i++) - { - *buf = *(__IO uint8_t *)addr; - buf++; - addr++; - } - return size; -} - -static int write(long offset, const uint8_t *buf, size_t size) -{ - size_t i; - uint32_t addr = OCFLASH_ADDR + offset; - - FLASH->KEYR = 0x45670123; - FLASH->KEYR = 0xCDEF89AB; - FLASH->SR = 0x00000001 | 0x00000004 | 0x00000010; - FLASH->CR |= 0x1; - - i = 0; - while (i < size) - { - *(__IO uint16_t *)addr = *buf | *(buf + 1) << 8; - addr = addr + 2; - buf += 2; - i += 2; - } - //Lock flash - FLASH->CR |= 0x00000080; - - return size; -} - -static int erase(long offset, size_t size) -{ - int len; - RT_ASSERT(offset > 0 && offset < OCFLASH_LEN); - int page_addr = (offset >> 10) << 10; - len = size + (offset - page_addr); - while (len > 0) - { - FLASH_Unlock(); - FLASH_ErasePage(page_addr); - FLASH_Lock(); - len -= OCFLASH_BLK_SIZE; - page_addr += OCFLASH_BLK_SIZE; - } - - return size; -} - -#ifdef OCFLASH_USE_FAL -const struct fal_flash_dev mm32_onchip_flash = -{ - .name = "mm32_onchip", - .addr = 0x08000000, - .len = 1024 * 512, - .blk_size = 1024, - .ops = {init, read, write, erase}, - .write_gran = 2 -}; -#endif - -int flash_init(void) -{ -#ifdef OCFLASH_USE_FAL - fal_init(); -#endif -#ifdef OCFLASH_USE_LFS - struct rt_device *flash_dev = fal_mtd_nor_device_create(FS_PARTITION_NAME); - - if (flash_dev == NULL) - { - rt_kprintf("Can't create a mtd device on '%s' partition.\n", FS_PARTITION_NAME); - } - else - { - rt_kprintf("Create a mtd device on the %s partition of flash successful.\n", FS_PARTITION_NAME); - } - - if (rt_device_find(FS_PARTITION_NAME) != RT_NULL) - { - if (dfs_mount(FS_PARTITION_NAME, "/", "lfs", 0, 0) == RT_EOK) - { - rt_kprintf("onchip lfs filesystem mount to '/'\n"); - } - else - { - dfs_mkfs("lfs", FS_PARTITION_NAME); - if (dfs_mount(FS_PARTITION_NAME, "/", "lfs", 0, 0) == RT_EOK) - { - rt_kprintf("onchip lfs filesystem mount to '/' with mkfs\n"); - } - else - { - rt_kprintf("onchip lfs filesystem mount to '/' failed!\n"); - } - } - } - else - { - rt_kprintf("find filesystem portion failed\r\n"); - } -#endif - return 0; -} -INIT_APP_EXPORT(flash_init); diff --git a/bsp/mm32f327x/drivers/drv_flash.h b/bsp/mm32f327x/drivers/drv_flash.h deleted file mode 100644 index 0cdbf5d4881..00000000000 --- a/bsp/mm32f327x/drivers/drv_flash.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-08-05 mazhiyuan first version - */ - -#ifndef __DRV_FLASH_H__ -#define __DRV_FLASH_H__ - -#include - -struct spi_flash_device -{ - struct rt_device flash_device; - struct rt_device_blk_geometry geometry; - struct rt_spi_device *rt_spi_device; - struct rt_mutex lock; - void *user_data; -}; - -int flash_init(void); - -#endif diff --git a/bsp/mm32f327x/drivers/drv_gpio.c b/bsp/mm32f327x/drivers/drv_gpio.c deleted file mode 100644 index a3374960cbb..00000000000 --- a/bsp/mm32f327x/drivers/drv_gpio.c +++ /dev/null @@ -1,538 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-08-05 mazhiyuan first version - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#define MM32_PIN(index, rcc, gpio, gpio_index) \ - { \ - 0, RCC_##rcc##Periph_GPIO##gpio, GPIO##gpio, GPIO_Pin_##gpio_index, GPIO_PortSourceGPIO##gpio, GPIO_PinSource##gpio_index \ - } -#define MM32_PIN_DEFAULT \ - { \ - -1, 0, 0, 0, 0, 0 \ - } -/* MM32 GPIO driver */ -struct pin_index -{ - int index; - uint32_t rcc; - GPIO_TypeDef *gpio; - uint32_t pin; - uint8_t port_source; - uint8_t pin_source; -}; -static const struct pin_index mm32_pin_map[] = -{ - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, - MM32_PIN(2, AHB, C, 13), - MM32_PIN(3, AHB, C, 14), - MM32_PIN(4, AHB, C, 15), - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, - MM32_PIN(10, AHB, A, 0), - MM32_PIN(11, AHB, A, 1), - MM32_PIN(12, AHB, A, 2), - MM32_PIN(13, AHB, A, 3), - MM32_PIN(14, AHB, A, 4), - MM32_PIN(15, AHB, A, 5), - MM32_PIN(16, AHB, A, 6), - MM32_PIN(17, AHB, A, 7), - MM32_PIN(18, AHB, B, 0), - MM32_PIN(19, AHB, B, 1), - MM32_PIN(20, AHB, B, 2), - MM32_PIN(21, AHB, B, 10), - MM32_PIN(22, AHB, B, 11), - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, - MM32_PIN(25, AHB, B, 12), - MM32_PIN(26, AHB, B, 13), - MM32_PIN(27, AHB, B, 14), - MM32_PIN(28, AHB, B, 15), - MM32_PIN(29, AHB, A, 8), - MM32_PIN(30, AHB, A, 9), - MM32_PIN(31, AHB, A, 10), - MM32_PIN(32, AHB, A, 11), - MM32_PIN(33, AHB, A, 12), - MM32_PIN(34, AHB, A, 13), - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, - MM32_PIN(37, AHB, A, 14), - MM32_PIN(38, AHB, A, 15), - MM32_PIN(39, AHB, B, 3), - MM32_PIN(40, AHB, B, 4), - MM32_PIN(41, AHB, B, 5), - MM32_PIN(42, AHB, B, 6), - MM32_PIN(43, AHB, B, 7), - MM32_PIN_DEFAULT, - MM32_PIN(45, AHB, B, 8), - MM32_PIN(46, AHB, B, 9), - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, -}; - -struct pin_irq_map -{ - rt_uint16_t pinbit; - rt_uint32_t irqbit; - enum IRQn irqno; -}; -const struct pin_irq_map mm32_pin_irq_map[] = -{ - {GPIO_Pin_0, EXTI_Line0, EXTI0_IRQn}, - {GPIO_Pin_1, EXTI_Line1, EXTI1_IRQn}, - {GPIO_Pin_2, EXTI_Line2, EXTI2_IRQn}, - {GPIO_Pin_3, EXTI_Line3, EXTI3_IRQn}, - {GPIO_Pin_4, EXTI_Line4, EXTI4_IRQn}, - {GPIO_Pin_5, EXTI_Line5, EXTI9_5_IRQn}, - {GPIO_Pin_6, EXTI_Line6, EXTI9_5_IRQn}, - {GPIO_Pin_7, EXTI_Line7, EXTI9_5_IRQn}, - {GPIO_Pin_8, EXTI_Line8, EXTI9_5_IRQn}, - {GPIO_Pin_9, EXTI_Line9, EXTI9_5_IRQn}, - {GPIO_Pin_10, EXTI_Line10, EXTI15_10_IRQn}, - {GPIO_Pin_11, EXTI_Line11, EXTI15_10_IRQn}, - {GPIO_Pin_12, EXTI_Line12, EXTI15_10_IRQn}, - {GPIO_Pin_13, EXTI_Line13, EXTI15_10_IRQn}, - {GPIO_Pin_14, EXTI_Line14, EXTI15_10_IRQn}, - {GPIO_Pin_15, EXTI_Line15, EXTI15_10_IRQn}, -}; -struct rt_pin_irq_hdr mm32_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}, - {-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}, - {-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}, - {-1, 0, RT_NULL, RT_NULL}, -}; -#define ITEM_NUM(items) sizeof(items) / sizeof(items[0]) -const struct pin_index *get_pin(uint8_t pin) -{ - const struct pin_index *index; - - if (pin < ITEM_NUM(mm32_pin_map)) - { - index = &mm32_pin_map[pin]; - if (index->gpio == 0) - index = RT_NULL; - } - else - { - index = RT_NULL; - } - - return index; -}; - -void mm32_pin_write(rt_device_t dev, rt_base_t pin, rt_uint8_t value) -{ - const struct pin_index *index; - - index = get_pin(pin); - if (index == RT_NULL) - { - return; - } - if (value == PIN_LOW) - { - GPIO_ResetBits(index->gpio, index->pin); - } - else - { - - GPIO_SetBits(index->gpio, index->pin); - } -} - -rt_ssize_t mm32_pin_read(rt_device_t dev, rt_base_t pin) -{ - rt_ssize_t value; - const struct pin_index *index; - - value = PIN_LOW; - index = get_pin(pin); - if (index == RT_NULL) - { - return -RT_EINVAL; - } - if (GPIO_ReadInputDataBit(index->gpio, index->pin) == Bit_RESET) - { - value = PIN_LOW; - } - else - { - value = PIN_HIGH; - } - return value; -} - -void mm32_pin_mode(rt_device_t dev, rt_base_t pin, rt_uint8_t mode) -{ - const struct pin_index *index; - GPIO_InitTypeDef GPIO_InitStructure; - - index = get_pin(pin); - if (index == RT_NULL) - { - return; - } - /* GPIO Periph clock enable */ - RCC_AHBPeriphClockCmd(index->rcc, ENABLE); - /* Configure GPIO_InitStructure */ - GPIO_InitStructure.GPIO_Pin = index->pin; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - if (mode == PIN_MODE_OUTPUT) - { - /* output setting */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - } - else if (mode == PIN_MODE_OUTPUT_OD) - { - /* output setting: od. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; - } - else if (mode == PIN_MODE_INPUT) - { - /* input setting: not pull. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; - } - else if (mode == PIN_MODE_INPUT_PULLUP) - { - /* input setting: pull up. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; - } - else - { - /* input setting:default. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; - } - GPIO_Init(index->gpio, &GPIO_InitStructure); -} -rt_inline rt_int32_t bit2bitno(rt_uint32_t bit) -{ - int i; - for (i = 0; i < 32; i++) - { - if ((0x01 << i) == bit) - { - return i; - } - } - return -1; -} -rt_inline const struct pin_irq_map *get_pin_irq_map(uint32_t pinbit) -{ - rt_int32_t mapindex = bit2bitno(pinbit); - if (mapindex < 0 || mapindex >= ITEM_NUM(mm32_pin_irq_map)) - { - return RT_NULL; - } - return &mm32_pin_irq_map[mapindex]; -}; -rt_err_t mm32_pin_attach_irq(struct rt_device *device, rt_base_t pin, - rt_uint8_t mode, void (*hdr)(void *args), void *args) -{ - const struct pin_index *index; - rt_base_t level; - rt_int32_t irqindex = -1; - - index = get_pin(pin); - if (index == RT_NULL) - { - return -RT_ENOSYS; - } - irqindex = bit2bitno(index->pin); - if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) - { - return -RT_ENOSYS; - } - - level = rt_hw_interrupt_disable(); - if (mm32_pin_irq_hdr_tab[irqindex].pin == pin && - mm32_pin_irq_hdr_tab[irqindex].hdr == hdr && - mm32_pin_irq_hdr_tab[irqindex].mode == mode && - mm32_pin_irq_hdr_tab[irqindex].args == args) - { - rt_hw_interrupt_enable(level); - return RT_EOK; - } - if (mm32_pin_irq_hdr_tab[irqindex].pin != -1) - { - rt_hw_interrupt_enable(level); - return -RT_EBUSY; - } - mm32_pin_irq_hdr_tab[irqindex].pin = pin; - mm32_pin_irq_hdr_tab[irqindex].hdr = hdr; - mm32_pin_irq_hdr_tab[irqindex].mode = mode; - mm32_pin_irq_hdr_tab[irqindex].args = args; - rt_hw_interrupt_enable(level); - - return RT_EOK; -} -rt_err_t mm32_pin_detach_irq(struct rt_device *device, rt_base_t pin) -{ - const struct pin_index *index; - rt_base_t level; - rt_int32_t irqindex = -1; - - index = get_pin(pin); - if (index == RT_NULL) - { - return -RT_ENOSYS; - } - irqindex = bit2bitno(index->pin); - if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) - { - return -RT_ENOSYS; - } - - level = rt_hw_interrupt_disable(); - if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) - { - rt_hw_interrupt_enable(level); - return RT_EOK; - } - mm32_pin_irq_hdr_tab[irqindex].pin = -1; - mm32_pin_irq_hdr_tab[irqindex].hdr = RT_NULL; - mm32_pin_irq_hdr_tab[irqindex].mode = 0; - mm32_pin_irq_hdr_tab[irqindex].args = RT_NULL; - rt_hw_interrupt_enable(level); - - return RT_EOK; -} -rt_err_t mm32_pin_irq_enable(struct rt_device *device, rt_base_t pin, - rt_uint8_t enabled) -{ - const struct pin_index *index; - const struct pin_irq_map *irqmap; - rt_base_t level; - rt_int32_t irqindex = -1; - GPIO_InitTypeDef GPIO_InitStructure; - NVIC_InitTypeDef NVIC_InitStructure; - EXTI_InitTypeDef EXTI_InitStructure; - - index = get_pin(pin); - if (index == RT_NULL) - { - return -RT_ENOSYS; - } - if (enabled == PIN_IRQ_ENABLE) - { - irqindex = bit2bitno(index->pin); - if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) - { - return -RT_ENOSYS; - } - level = rt_hw_interrupt_disable(); - if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) - { - rt_hw_interrupt_enable(level); - return -RT_ENOSYS; - } - irqmap = &mm32_pin_irq_map[irqindex]; - /* GPIO Periph clock enable */ - RCC_APB2PeriphClockCmd(index->rcc, ENABLE); - /* Configure GPIO_InitStructure */ - GPIO_InitStructure.GPIO_Pin = index->pin; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_Init(index->gpio, &GPIO_InitStructure); - - NVIC_InitStructure.NVIC_IRQChannel = irqmap->irqno; - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; - NVIC_Init(&NVIC_InitStructure); - - EXTI_InitStructure.EXTI_Line = irqmap->irqbit; - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - switch (mm32_pin_irq_hdr_tab[irqindex].mode) - { - case PIN_IRQ_MODE_RISING: - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; - break; - case PIN_IRQ_MODE_FALLING: - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; - break; - case PIN_IRQ_MODE_RISING_FALLING: - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; - break; - } - EXTI_InitStructure.EXTI_LineCmd = ENABLE; - EXTI_Init(&EXTI_InitStructure); - rt_hw_interrupt_enable(level); - } - else if (enabled == PIN_IRQ_DISABLE) - { - irqmap = get_pin_irq_map(index->pin); - if (irqmap == RT_NULL) - { - return -RT_ENOSYS; - } - EXTI_InitStructure.EXTI_Line = irqmap->irqbit; - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; - EXTI_InitStructure.EXTI_LineCmd = DISABLE; - EXTI_Init(&EXTI_InitStructure); - } - else - { - return -RT_ENOSYS; - } - - return RT_EOK; -} -const static struct rt_pin_ops _mm32_pin_ops = -{ - mm32_pin_mode, - mm32_pin_write, - mm32_pin_read, - mm32_pin_attach_irq, - mm32_pin_detach_irq, - mm32_pin_irq_enable, - RT_NULL, -}; - -int rt_hw_pin_init(void) -{ - int result; - - result = rt_device_pin_register("pin", &_mm32_pin_ops, RT_NULL); - return result; -} -INIT_BOARD_EXPORT(rt_hw_pin_init); - -rt_inline void pin_irq_hdr(int irqno) -{ - EXTI_ClearITPendingBit(mm32_pin_irq_map[irqno].irqbit); - if (mm32_pin_irq_hdr_tab[irqno].hdr) - { - mm32_pin_irq_hdr_tab[irqno].hdr(mm32_pin_irq_hdr_tab[irqno].args); - } -} -void EXTI0_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(0); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI1_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(1); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI2_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(2); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI3_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(3); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI4_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(4); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI9_5_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - if (EXTI_GetITStatus(EXTI_Line5) != RESET) - { - pin_irq_hdr(5); - } - if (EXTI_GetITStatus(EXTI_Line6) != RESET) - { - pin_irq_hdr(6); - } - if (EXTI_GetITStatus(EXTI_Line7) != RESET) - { - pin_irq_hdr(7); - } - if (EXTI_GetITStatus(EXTI_Line8) != RESET) - { - pin_irq_hdr(8); - } - if (EXTI_GetITStatus(EXTI_Line9) != RESET) - { - pin_irq_hdr(9); - } - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI15_10_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - if (EXTI_GetITStatus(EXTI_Line10) != RESET) - { - pin_irq_hdr(10); - } - if (EXTI_GetITStatus(EXTI_Line11) != RESET) - { - pin_irq_hdr(11); - } - if (EXTI_GetITStatus(EXTI_Line12) != RESET) - { - pin_irq_hdr(12); - } - if (EXTI_GetITStatus(EXTI_Line13) != RESET) - { - pin_irq_hdr(13); - } - if (EXTI_GetITStatus(EXTI_Line14) != RESET) - { - pin_irq_hdr(14); - } - if (EXTI_GetITStatus(EXTI_Line15) != RESET) - { - pin_irq_hdr(15); - } - /* leave interrupt */ - rt_interrupt_leave(); -} diff --git a/bsp/mm32f327x/drivers/drv_gpio.h b/bsp/mm32f327x/drivers/drv_gpio.h deleted file mode 100644 index 57626b4a39d..00000000000 --- a/bsp/mm32f327x/drivers/drv_gpio.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-08-05 mazhiyuan first version - */ - -#ifndef __DRV_GPIO_H__ -#define __DRV_GPIO_H__ - -int rt_hw_pin_init(void); - -#endif diff --git a/bsp/mm32f327x/drivers/drv_uart.c b/bsp/mm32f327x/drivers/drv_uart.c deleted file mode 100644 index 44c4a176197..00000000000 --- a/bsp/mm32f327x/drivers/drv_uart.c +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-08-05 mazhiyuan first version - */ -#include -#include -#include "drv_uart.h" -#include -#include -#include -#include - -/* UART1 */ -#define UART1_GPIO_TX GPIO_Pin_9 -#define UART1_GPIO_TX_SOURCE GPIO_PinSource9 -#define UART1_GPIO_RX GPIO_Pin_10 -#define UART1_GPIO_RX_SOURCE GPIO_PinSource10 -#define UART1_GPIO_AF GPIO_AF_1 -#define UART1_GPIO GPIOA - -/* UART2 */ -#define UART2_GPIO_TX GPIO_Pin_2 -#define UART2_GPIO_TX_SOURCE GPIO_PinSource2 -#define UART2_GPIO_RX GPIO_Pin_3 -#define UART2_GPIO_RX_SOURCE GPIO_PinSource3 -#define UART2_GPIO_AF GPIO_AF_1 -#define UART2_GPIO GPIOA - -/* uart driver */ -struct mm32_uart -{ - UART_TypeDef *uart; - IRQn_Type irq; -}; - -static rt_err_t mm32_uart_configure(struct rt_serial_device *serial, struct serial_configure *cfg) -{ - struct mm32_uart *uart; - UART_InitTypeDef UART_InitStructure; - RT_ASSERT(serial != RT_NULL); - RT_ASSERT(cfg != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - UART_InitStructure.UART_BaudRate = cfg->baud_rate; - if (cfg->data_bits == DATA_BITS_8) - UART_InitStructure.UART_WordLength = UART_WordLength_8b; - if (cfg->stop_bits == STOP_BITS_1) - UART_InitStructure.UART_StopBits = UART_StopBits_1; - else if (cfg->stop_bits == STOP_BITS_2) - UART_InitStructure.UART_StopBits = UART_StopBits_2; - UART_InitStructure.UART_Parity = UART_Parity_No; - UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None; - UART_InitStructure.UART_Mode = UART_Mode_Rx | UART_Mode_Tx; - UART_Init(uart->uart, &UART_InitStructure); - /* Enable UART */ - UART_Cmd(uart->uart, ENABLE); - - return RT_EOK; -} - -static rt_err_t mm32_uart_control(struct rt_serial_device *serial, int cmd, void *arg) -{ - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - switch (cmd) - { - case RT_DEVICE_CTRL_CLR_INT: - /* disable rx irq */ - NVIC_DisableIRQ(uart->irq); - UART_ITConfig(uart->uart, UART_IT_RXIEN, DISABLE); - break; - case RT_DEVICE_CTRL_SET_INT: - /* enable rx irq */ - NVIC_EnableIRQ(uart->irq); - /* enable interrupt */ - UART_ITConfig(uart->uart, UART_IT_RXIEN, ENABLE); - break; - } - return RT_EOK; -} - -static int mm32_uart_putc(struct rt_serial_device *serial, char c) -{ - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - while ((uart->uart->CSR & UART_CSR_TXC) == 0) - ; - uart->uart->TDR = c; - return 1; -} - -static int mm32_uart_getc(struct rt_serial_device *serial) -{ - int ch; - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - ch = -1; - if (uart->uart->CSR & UART_FLAG_RXAVL) - { - ch = uart->uart->RDR & 0xff; - } - return ch; -} - -static const struct rt_uart_ops mm32_uart_ops = -{ - mm32_uart_configure, - mm32_uart_control, - mm32_uart_putc, - mm32_uart_getc, -}; - -#if defined(BSP_USING_UART1) -/* UART1 device driver structure */ -static struct mm32_uart uart1; -struct rt_serial_device serial1; -void UART1_IRQHandler(void) -{ - struct mm32_uart *uart; - uart = &uart1; - /* enter interrupt */ - rt_interrupt_enter(); - if (UART_GetITStatus(uart->uart, UART_IT_RXIEN) != RESET) - { - UART_ClearITPendingBit(uart->uart, UART_IT_RXIEN); - rt_hw_serial_isr(&serial1, RT_SERIAL_EVENT_RX_IND); - } - if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) - { - /* clear interrupt */ - UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); - } - /* leave interrupt */ - rt_interrupt_leave(); -} -#endif /* BSP_USING_UART1 */ - -#if defined(BSP_USING_UART2) -/* UART2 device driver structure */ -static struct mm32_uart uart2; -struct rt_serial_device serial2; -void UART2_IRQHandler(void) -{ - struct mm32_uart *uart; - uart = &uart2; - /* enter interrupt */ - rt_interrupt_enter(); - if (UART_GetITStatus(uart->uart, UART_IT_RXIEN) != RESET) - { - UART_ClearITPendingBit(uart->uart, UART_IT_RXIEN); - rt_hw_serial_isr(&serial2, RT_SERIAL_EVENT_RX_IND); - } - if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) - { - /* clear interrupt */ - UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); - } - /* leave interrupt */ - rt_interrupt_leave(); -} -#endif /* BSP_USING_UART2 */ - -#ifdef BSP_USING_UART1 -static void UART1PINconfigStepA(void) -{ - /* Enable UART clock */ - RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE); - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); -} - -static void UART1PINconfigStepB(void) -{ - - GPIO_InitTypeDef GPIO_InitStructure; - /* Configure USART Rx/tx PIN */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOA, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; - GPIO_Init(GPIOA, &GPIO_InitStructure); - GPIO_PinAFConfig(GPIOA, 9, GPIO_AF_7); - GPIO_PinAFConfig(GPIOA, 10, GPIO_AF_7); -} -#endif - -#ifdef BSP_USING_UART2 -static void UART2PINconfigStepA(void) -{ - /* Enable UART clock */ - RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART2, ENABLE); - RCC_AHB2PeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); -} - -static void UART2PINconfigStepB(void) -{ - GPIO_InitTypeDef GPIO_InitStructure; - /* Configure USART Rx/tx PIN */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOA, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init(GPIOA, &GPIO_InitStructure); - GPIO_PinAFConfig(GPIOA, 2, GPIO_AF_7); - GPIO_PinAFConfig(GPIOA, 3, GPIO_AF_7); -} -#endif - -int rt_hw_uart_init(void) -{ - struct mm32_uart *uart; - struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; -#ifdef BSP_USING_UART1 - UART1PINconfigStepA(); - uart = &uart1; - uart->uart = UART1; - uart->irq = UART1_IRQn; - config.baud_rate = BAUD_RATE_115200; - serial1.ops = &mm32_uart_ops; - serial1.config = config; - /* register UART1 device */ - rt_hw_serial_register(&serial1, "uart1", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, - uart); - UART1PINconfigStepB(); -#endif /* BSP_USING_UART1 */ - -#ifdef BSP_USING_UART2 - UART2PINconfigStepA(); - uart = &uart2; - uart->uart = UART2; - uart->irq = UART2_IRQn; - config.baud_rate = BAUD_RATE_115200; - serial2.ops = &mm32_uart_ops; - serial2.config = config; - /* register UART2 device */ - rt_hw_serial_register(&serial2, "uart2", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, - uart); - UART2PINconfigStepB(); -#endif /* BSP_USING_UART2 */ - return 0; -} -INIT_BOARD_EXPORT(rt_hw_uart_init); diff --git a/bsp/mm32f327x/drivers/drv_uart.h b/bsp/mm32f327x/drivers/drv_uart.h deleted file mode 100644 index f2110db45a2..00000000000 --- a/bsp/mm32f327x/drivers/drv_uart.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-08-05 mazhiyuan first version - */ - -#ifndef __DRV_UART_H__ -#define __DRV_UART_H__ - -int rt_hw_uart_init(void); - -#endif diff --git a/bsp/mm32f327x/drivers/fal_cfg.h b/bsp/mm32f327x/drivers/fal_cfg.h deleted file mode 100644 index 22e77992a75..00000000000 --- a/bsp/mm32f327x/drivers/fal_cfg.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-08-05 mazhiyuan first version - */ - -#ifndef _FAL_CFG_H_ -#define _FAL_CFG_H_ - -#include -#include - - -/* ===================== Flash device Configuration ========================= */ -extern const struct fal_flash_dev mm32_onchip_flash; -extern struct fal_flash_dev nor_flash0; - -/* flash device table */ -#define FAL_FLASH_DEV_TABLE \ -{ \ - &mm32_onchip_flash, \ -} -/* ====================== Partition Configuration ========================== */ -#ifdef FAL_PART_HAS_TABLE_CFG -/* partition table */ -#define FAL_PART_TABLE \ -{ \ - {FAL_PART_MAGIC_WORD, "bl", "mm32_onchip", 0, 128*1024, 0}, \ - {FAL_PART_MAGIC_WORD, "filesystem", "mm32_onchip", 128*1024, 255*1024, 0}, \ -} -#endif /* FAL_PART_HAS_TABLE_CFG */ - -#endif /* _FAL_CFG_H_ */ diff --git a/bsp/mm32f526x/drivers/SConscript b/bsp/mm32f526x/drivers/SConscript deleted file mode 100644 index cf1314a9b80..00000000000 --- a/bsp/mm32f526x/drivers/SConscript +++ /dev/null @@ -1,33 +0,0 @@ -# RT-Thread building script for component - -import os -import rtconfig -from building import * - -cwd = GetCurrentDir() - -# add the general drivers. -src = [] - -# add serial driver code -if GetDepend('BSP_USING_UART1') or GetDepend('BSP_USING_UART2') or GetDepend('BSP_USING_UART3'): - src += ['drv_uart.c'] - -# add gpio driver code -if GetDepend(['BSP_USING_GPIO']): - src += ['drv_gpio.c'] - -# add adc driver code -if GetDepend(['BSP_USING_ADC']): - src += ['drv_adc.c'] - -# add flash driver code -if GetDepend(['BSP_USING_OCFLASH']): - src += ['drv_flash.c'] - -CPPPATH = [cwd] - - -group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) - -Return('group') diff --git a/bsp/mm32f526x/drivers/drv_adc.c b/bsp/mm32f526x/drivers/drv_adc.c deleted file mode 100644 index 233921fe392..00000000000 --- a/bsp/mm32f526x/drivers/drv_adc.c +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (c) 2022-2025, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2025-01-22 chasel first version - * 2025-02-10 chasel fix adc calibration did not clear flag bits - */ -#include -#include "board.h" -#include "drv_adc.h" -#include -#include -#include -#include - -#if defined(BSP_USING_ADC) - -struct mm32_adc -{ - struct rt_adc_device mm32_adc_device; - ADC_TypeDef *adc_x; - char *name; -}; - -#if defined(BSP_USING_ADC1) -struct mm32_adc mm32_adc1_config = { - .adc_x = ADC1, - .name = "adc1", -}; -#endif /* BSP_USING_ADC1 */ - -#if defined(BSP_USING_ADC2) -struct mm32_adc mm32_adc2_config = { - .adc_x = ADC2, - .name = "adc2", -}; -#endif /* BSP_USING_ADC2 */ - -static void ADCxChannelEnable(ADC_TypeDef* ADCn, rt_uint32_t channel) -{ - ADCn->ADCHS &= ~(1 << channel); - ADCn->ADCHS |= (1 << channel); -} - -static rt_err_t mm32_adc_init(struct rt_adc_device *device, rt_int8_t channel, rt_bool_t enabled) -{ - ADC_InitTypeDef ADC_InitStruct; - ADC_TypeDef *adc_x; - RT_ASSERT(device != RT_NULL); - adc_x = device->parent.user_data; - - if (enabled) { - mm32_msp_adc_init((void *)adc_x); - - ADC_CalibrationConfig(adc_x, 0x1FE); - - ADC_StructInit(&ADC_InitStruct); - ADC_InitStruct.ADC_Resolution = ADC_Resolution_12b; - ADC_InitStruct.ADC_Prescaler = ADC_Prescaler_16; //ADC prescale factor - ADC_InitStruct.ADC_Mode = ADC_Mode_Scan; //Set ADC mode to scan conversion mode - ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right; //AD data right-justified - ADC_Init(adc_x, &ADC_InitStruct); - - ADC_SampleTimeConfig(adc_x, channel, ADC_SampleTime_240_5); - - ADC_ChannelCmd(adc_x, channel, ENABLE); - - ADC_DifferentialConversionConfig(adc_x, ADC_Pseudo_Differential_Conversion_4_5); - - ADC_Cmd(adc_x, ENABLE); - } else { - #if defined(BSP_USING_ADC1) - RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, DISABLE); //disable ADC1 clock - #endif /* BSP_USING_ADC1 */ - - #if defined(BSP_USING_ADC2) - RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2, DISABLE); //disable ADC2 clock - #endif /* BSP_USING_ADC2 */ - - ADC_DeInit(adc_x); - ADC_Cmd(adc_x, DISABLE); - } - - return RT_EOK; -} - -static rt_err_t mm32_get_adc_value(struct rt_adc_device *device, rt_int8_t channel, rt_uint32_t *value) -{ - ADC_TypeDef *adc_x; - RT_ASSERT(device != RT_NULL); - adc_x = device->parent.user_data; - - ADC_SoftwareStartConvCmd(adc_x, ENABLE); - - while(ADC_GetFlagStatus(adc_x, ADC_FLAG_EOC) == 0); - ADC_ClearFlag(adc_x, ADC_FLAG_EOC); - - *value = ADC_GetChannelConvertedValue(adc_x, channel); - return RT_EOK; -} - -static rt_uint8_t mm32_adc_get_resolution(struct rt_adc_device *device) -{ - ADC_TypeDef *adc_x = device->parent.user_data; - - RT_ASSERT(device != RT_NULL); - - switch( ((adc_x->ADCFG)&(0x00000380)) ) - { - case ADC_Resolution_12b: - return 12; - case ADC_Resolution_11b: - return 11; - case ADC_Resolution_10b: - return 10; - case ADC_Resolution_9b: - return 9; - case ADC_Resolution_8b: - return 8; - default: - return 12; - } -} - -static rt_int16_t mm32_adc_get_vref(struct rt_adc_device *device) -{ - if(device == RT_NULL) - return -RT_ERROR; - - return 3300; -} - -static const struct rt_adc_ops mm32_adc_ops = -{ - .enabled = mm32_adc_init, - .convert = mm32_get_adc_value, - .get_resolution = mm32_adc_get_resolution, - .get_vref = mm32_adc_get_vref, -}; - -int rt_hw_adc_init(void) -{ - #if defined(BSP_USING_ADC1) - rt_hw_adc_register(&mm32_adc1_config.mm32_adc_device, mm32_adc1_config.name, &mm32_adc_ops, mm32_adc1_config.adc_x); - #endif /* BSP_USING_ADC1 */ - - #if defined(BSP_USING_ADC2) - rt_hw_adc_register(&mm32_adc2_config.mm32_adc_device, mm32_adc2_config.name, &mm32_adc_ops, mm32_adc2_config.adc_x); - #endif /* BSP_USING_ADC2 */ - - return RT_EOK; -} -INIT_BOARD_EXPORT(rt_hw_adc_init); - -#endif /* BSP_USING_ADC */ diff --git a/bsp/mm32f526x/drivers/drv_adc.h b/bsp/mm32f526x/drivers/drv_adc.h deleted file mode 100644 index 1987ae551a5..00000000000 --- a/bsp/mm32f526x/drivers/drv_adc.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2022-2025, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2025-01-22 chasel first version - */ - -#ifndef __DRV_ADC_H__ -#define __DRV_ADC_H__ - -int rt_hw_adc_init(void); - -#endif diff --git a/bsp/mm32f526x/drivers/drv_flash.c b/bsp/mm32f526x/drivers/drv_flash.c deleted file mode 100644 index 6b69cad87eb..00000000000 --- a/bsp/mm32f526x/drivers/drv_flash.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright (c) 2022-2025, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2025-01-22 chasel first version - */ - - -#include -#include "hal_flash.h" -#include "drv_flash.h" - -#define OCFLASH_BLK_SIZE 1024 -#define OCFLASH_LEN 1024*256 -#define OCFLASH_ADDR 0x08000000 - -#ifdef OCFLASH_USE_FAL - #include -#endif - -#ifdef OCFLASH_USE_LFS - #include - #define FS_PARTITION_NAME "filesystem" -#endif - -static int init(void) -{ - /* do nothing now */ - return 0; -} - -static int read(long offset, uint8_t *buf, size_t size) -{ - size_t i; - uint32_t addr = OCFLASH_ADDR + offset; - for (i = 0; i < size; i++) - { - *buf = *(__IO uint8_t *)addr; - buf++; - addr++; - } - return size; -} - -static int write(long offset, const uint8_t *buf, size_t size) -{ - size_t i; - uint32_t addr = OCFLASH_ADDR + offset; - - FLASH->KEYR = 0x45670123; - FLASH->KEYR = 0xCDEF89AB; - FLASH->SR = 0x00000001 | 0x00000004 | 0x00000010; - FLASH->CR |= 0x1; - - i = 0; - while (i < size) - { - *(__IO uint16_t *)addr = *buf | *(buf + 1) << 8; - addr = addr + 2; - buf += 2; - i += 2; - } - //Lock flash - FLASH->CR |= 0x00000080; - - return size; -} - -static int erase(long offset, size_t size) -{ - int len; - RT_ASSERT(offset > 0 && offset < OCFLASH_LEN); - int page_addr = (offset >> 10) << 10; - len = size + (offset - page_addr); - while (len > 0) - { - FLASH_Unlock(); - FLASH_ErasePage(page_addr); - FLASH_Lock(); - len -= OCFLASH_BLK_SIZE; - page_addr += OCFLASH_BLK_SIZE; - } - - return size; -} - -#ifdef OCFLASH_USE_FAL -const struct fal_flash_dev mm32_onchip_flash = -{ - .name = "mm32_onchip", - .addr = 0x08000000, - .len = 1024 * 512, - .blk_size = 1024, - .ops = {init, read, write, erase}, - .write_gran = 2 -}; -#endif - -int flash_init(void) -{ -#ifdef OCFLASH_USE_FAL - fal_init(); -#endif -#ifdef OCFLASH_USE_LFS - struct rt_device *flash_dev = fal_mtd_nor_device_create(FS_PARTITION_NAME); - - if (flash_dev == NULL) - { - rt_kprintf("Can't create a mtd device on '%s' partition.\n", FS_PARTITION_NAME); - } - else - { - rt_kprintf("Create a mtd device on the %s partition of flash successful.\n", FS_PARTITION_NAME); - } - - if (rt_device_find(FS_PARTITION_NAME) != RT_NULL) - { - if (dfs_mount(FS_PARTITION_NAME, "/", "lfs", 0, 0) == RT_EOK) - { - rt_kprintf("onchip lfs filesystem mount to '/'\n"); - } - else - { - dfs_mkfs("lfs", FS_PARTITION_NAME); - if (dfs_mount(FS_PARTITION_NAME, "/", "lfs", 0, 0) == RT_EOK) - { - rt_kprintf("onchip lfs filesystem mount to '/' with mkfs\n"); - } - else - { - rt_kprintf("onchip lfs filesystem mount to '/' failed!\n"); - } - } - } - else - { - rt_kprintf("find filesystem portion failed\r\n"); - } -#endif - return 0; -} -INIT_APP_EXPORT(flash_init); diff --git a/bsp/mm32f526x/drivers/drv_flash.h b/bsp/mm32f526x/drivers/drv_flash.h deleted file mode 100644 index 0eb44eb726e..00000000000 --- a/bsp/mm32f526x/drivers/drv_flash.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2022-2025, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2025-01-22 chasel first version - */ - -#ifndef __DRV_FLASH_H__ -#define __DRV_FLASH_H__ - -#include - -struct spi_flash_device -{ - struct rt_device flash_device; - struct rt_device_blk_geometry geometry; - struct rt_spi_device *rt_spi_device; - struct rt_mutex lock; - void *user_data; -}; - -int flash_init(void); - -#endif diff --git a/bsp/mm32f526x/drivers/drv_gpio.c b/bsp/mm32f526x/drivers/drv_gpio.c deleted file mode 100644 index 4f27103d581..00000000000 --- a/bsp/mm32f526x/drivers/drv_gpio.c +++ /dev/null @@ -1,489 +0,0 @@ -/* - * Copyright (c) 2022-2025, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2025-01-22 chasel first version - */ - -#include -#include -#include "drv_gpio.h" -#include -#include -#include -#include -#include -#include - -#define PIN_NUM(port, no) (((((port) & 0xFu) << 4) | ((no) & 0xFu))) -#define PIN_PORT(pin) ((uint8_t)(((pin) >> 4) & 0xFu)) -#define PIN_NO(pin) ((uint8_t)((pin) & 0xFu)) -#define RCC_PIN_PORT(pin) ((uint32_t)(0x01u << (PIN_PORT(pin)))) - -#define PIN_ATPORTSOURCE(pin) ((uint8_t)(((pin) & 0xF0u) >> 4)) -#define PIN_ATPINSOURCE(pin) ((uint8_t)((pin) & 0xFu)) - -#define PIN_ATPORT(pin) ((GPIO_TypeDef *)(GPIOA_BASE + (0x400u * PIN_PORT(pin)))) -#define PIN_ATPIN(pin) ((uint16_t)(1u << PIN_NO(pin))) - -/* mm32f5265 pin port */ -#define __MM32_PORT_MAX 6u - -#define PIN_ATPORT_MAX __MM32_PORT_MAX - -struct pin_irq_map -{ - rt_uint16_t pinbit; - rt_uint32_t irqbit; - enum IRQn irqno; -}; -const struct pin_irq_map mm32_pin_irq_map[] = -{ - {GPIO_Pin_0, EXTI_Line0, EXTI0_IRQn}, - {GPIO_Pin_1, EXTI_Line1, EXTI1_IRQn}, - {GPIO_Pin_2, EXTI_Line2, EXTI2_IRQn}, - {GPIO_Pin_3, EXTI_Line3, EXTI3_IRQn}, - {GPIO_Pin_4, EXTI_Line4, EXTI4_IRQn}, - {GPIO_Pin_5, EXTI_Line5, EXTI9_5_IRQn}, - {GPIO_Pin_6, EXTI_Line6, EXTI9_5_IRQn}, - {GPIO_Pin_7, EXTI_Line7, EXTI9_5_IRQn}, - {GPIO_Pin_8, EXTI_Line8, EXTI9_5_IRQn}, - {GPIO_Pin_9, EXTI_Line9, EXTI9_5_IRQn}, - {GPIO_Pin_10, EXTI_Line10, EXTI15_10_IRQn}, - {GPIO_Pin_11, EXTI_Line11, EXTI15_10_IRQn}, - {GPIO_Pin_12, EXTI_Line12, EXTI15_10_IRQn}, - {GPIO_Pin_13, EXTI_Line13, EXTI15_10_IRQn}, - {GPIO_Pin_14, EXTI_Line14, EXTI15_10_IRQn}, - {GPIO_Pin_15, EXTI_Line15, EXTI15_10_IRQn}, -}; -struct rt_pin_irq_hdr mm32_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}, - {-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}, - {-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}, - {-1, 0, RT_NULL, RT_NULL}, -}; - -#define ITEM_NUM(items) sizeof(items) / sizeof(items[0]) - -static rt_base_t mm32_pin_get(const char *name) -{ - rt_base_t pin = 0; - int hw_port_num, hw_pin_num = 0; - int i, name_len; - - name_len = rt_strlen(name); - - if ((name_len < 4) || (name_len >= 6)) { - return -RT_EINVAL; - } - - if ((name[0] != 'P') || (name[2] != '.')) { - return -RT_EINVAL; - } - - if ((name[1] >= 'A') && (name[1] <= 'Z')) { - hw_port_num = (int)(name[1] - 'A'); - } else { - return -RT_EINVAL; - } - - for (i = 3; i < name_len; i++) { - hw_pin_num *= 10; - hw_pin_num += name[i] - '0'; - } - - pin = PIN_NUM(hw_port_num, hw_pin_num); - - return pin; -} - -void mm32_pin_write(rt_device_t dev, rt_base_t pin, rt_uint8_t value) -{ - GPIO_TypeDef *gpio_port; - - uint16_t gpio_pin; - if (PIN_PORT(pin) < PIN_ATPORT_MAX) { - gpio_port = PIN_ATPORT(pin); - gpio_pin = PIN_ATPIN(pin); - } else { - return; - } - - GPIO_WriteBit(gpio_port, gpio_pin, (PIN_LOW == value) ? Bit_RESET : Bit_SET); -} - -rt_ssize_t mm32_pin_read(rt_device_t dev, rt_base_t pin) -{ - GPIO_TypeDef *gpio_port; - uint16_t gpio_pin; - int value; - - value = PIN_LOW; - - if (PIN_PORT(pin) < PIN_ATPORT_MAX) { - gpio_port = PIN_ATPORT(pin); - gpio_pin = PIN_ATPIN(pin); - value = GPIO_ReadInputDataBit(gpio_port, gpio_pin); - } else { - return -RT_EINVAL; - } - - return value; -} - -void mm32_pin_mode(rt_device_t dev, rt_base_t pin, rt_uint8_t mode) -{ - GPIO_TypeDef *gpio_port; - uint16_t gpio_pin; - GPIO_InitTypeDef GPIO_InitStructure; - - if (PIN_PORT(pin) < PIN_ATPORT_MAX) { - gpio_port = PIN_ATPORT(pin); - gpio_pin = PIN_ATPIN(pin); - } else { - return; - } - - /* GPIO Periph clock enable */ - RCC_AHBPeriphClockCmd(RCC_PIN_PORT(pin), ENABLE); - - /* Configure GPIO_InitStructure */ - GPIO_InitStructure.GPIO_Pin = gpio_pin; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_High; - - if (mode == PIN_MODE_OUTPUT) { - /* output setting */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - } else if (mode == PIN_MODE_OUTPUT_OD) { - /* output setting: od. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; - } else if (mode == PIN_MODE_INPUT) { - /* input setting: not pull. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_FLOATING; - } else if (mode == PIN_MODE_INPUT_PULLUP) { - /* input setting: pull up. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; - } else { - /* input setting:default. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; - } - - GPIO_Init(gpio_port, &GPIO_InitStructure); -} - -rt_inline rt_int32_t bit2bitno(rt_uint32_t bit) -{ - int i; - for (i = 0; i < 32; i++) { - if ((0x01 << i) == bit) { - return i; - } - } - - return -1; -} - -rt_inline const struct pin_irq_map *get_pin_irq_map(uint32_t pinbit) -{ - rt_int32_t mapindex = bit2bitno(pinbit); - if (mapindex < 0 || mapindex >= ITEM_NUM(mm32_pin_irq_map)) { - return RT_NULL; - } - return &mm32_pin_irq_map[mapindex]; -}; - -rt_err_t mm32_pin_attach_irq(struct rt_device *device, rt_base_t pin, - rt_uint8_t mode, void (*hdr)(void *args), void *args) -{ - uint16_t gpio_pin; - rt_base_t level; - rt_int32_t irqindex = -1; - - if (PIN_PORT(pin) < PIN_ATPORT_MAX) { - gpio_pin = PIN_ATPIN(pin); - } else { - return -RT_EINVAL; - } - - irqindex = bit2bitno(gpio_pin); - if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) { - return -RT_ENOSYS; - } - - level = rt_hw_interrupt_disable(); - if (mm32_pin_irq_hdr_tab[irqindex].pin == pin && - mm32_pin_irq_hdr_tab[irqindex].hdr == hdr && - mm32_pin_irq_hdr_tab[irqindex].mode == mode && - mm32_pin_irq_hdr_tab[irqindex].args == args) - { - rt_hw_interrupt_enable(level); - return RT_EOK; - } - - if (mm32_pin_irq_hdr_tab[irqindex].pin != -1) { - rt_hw_interrupt_enable(level); - return -RT_EBUSY; - } - - mm32_pin_irq_hdr_tab[irqindex].pin = pin; - mm32_pin_irq_hdr_tab[irqindex].hdr = hdr; - mm32_pin_irq_hdr_tab[irqindex].mode = mode; - mm32_pin_irq_hdr_tab[irqindex].args = args; - rt_hw_interrupt_enable(level); - - return RT_EOK; -} -rt_err_t mm32_pin_detach_irq(struct rt_device *device, rt_base_t pin) -{ - uint16_t gpio_pin; - rt_base_t level; - rt_int32_t irqindex = -1; - - if (PIN_PORT(pin) < PIN_ATPORT_MAX) { - gpio_pin = PIN_ATPIN(pin); - } else { - return -RT_EINVAL; - } - - irqindex = bit2bitno(gpio_pin); - if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) { - return -RT_ENOSYS; - } - - level = rt_hw_interrupt_disable(); - if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) { - rt_hw_interrupt_enable(level); - return RT_EOK; - } - - mm32_pin_irq_hdr_tab[irqindex].pin = -1; - mm32_pin_irq_hdr_tab[irqindex].hdr = RT_NULL; - mm32_pin_irq_hdr_tab[irqindex].mode = 0; - mm32_pin_irq_hdr_tab[irqindex].args = RT_NULL; - rt_hw_interrupt_enable(level); - - return RT_EOK; -} - -rt_err_t mm32_pin_irq_enable(struct rt_device *device, rt_base_t pin, - rt_uint8_t enabled) -{ - GPIO_TypeDef *gpio_port; - uint16_t gpio_pin; - const struct pin_irq_map *irqmap; - rt_base_t level; - rt_int32_t irqindex = -1; - GPIO_InitTypeDef GPIO_InitStructure; - NVIC_InitTypeDef NVIC_InitStructure; - EXTI_InitTypeDef EXTI_InitStructure; - - if (PIN_PORT(pin) < PIN_ATPORT_MAX) { - gpio_port = PIN_ATPORT(pin); - gpio_pin = PIN_ATPIN(pin); - } else { - return -RT_EINVAL; - } - - if (enabled == PIN_IRQ_ENABLE) - { - irqindex = bit2bitno(gpio_pin); - if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) { - return -RT_ENOSYS; - } - level = rt_hw_interrupt_disable(); - if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) { - rt_hw_interrupt_enable(level); - return -RT_ENOSYS; - } - irqmap = &mm32_pin_irq_map[irqindex]; - - /* GPIO Periph clock enable */ - RCC_AHBPeriphClockCmd(RCC_PIN_PORT(pin), ENABLE); - - /* Configure GPIO_InitStructure */ - GPIO_InitStructure.GPIO_Pin = gpio_pin; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_High; - GPIO_Init(gpio_port, &GPIO_InitStructure); - - NVIC_InitStructure.NVIC_IRQChannel = irqmap->irqno; - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; - NVIC_Init(&NVIC_InitStructure); - - EXTI_InitStructure.EXTI_Line = irqmap->irqbit; - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - switch (mm32_pin_irq_hdr_tab[irqindex].mode) { - case PIN_IRQ_MODE_RISING: - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; - break; - case PIN_IRQ_MODE_FALLING: - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; - break; - case PIN_IRQ_MODE_RISING_FALLING: - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; - break; - } - EXTI_InitStructure.EXTI_LineCmd = ENABLE; - EXTI_Init(&EXTI_InitStructure); - rt_hw_interrupt_enable(level); - } else if (enabled == PIN_IRQ_DISABLE) { - irqmap = get_pin_irq_map(gpio_pin); - if (irqmap == RT_NULL) { - return -RT_ENOSYS; - } - EXTI_InitStructure.EXTI_Line = irqmap->irqbit; - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; - EXTI_InitStructure.EXTI_LineCmd = DISABLE; - EXTI_Init(&EXTI_InitStructure); - } else { - return -RT_ENOSYS; - } - - return RT_EOK; -} -const static struct rt_pin_ops _mm32_pin_ops = -{ - mm32_pin_mode, - mm32_pin_write, - mm32_pin_read, - mm32_pin_attach_irq, - mm32_pin_detach_irq, - mm32_pin_irq_enable, - mm32_pin_get, -}; - -int rt_hw_pin_init(void) -{ - int result; - - result = rt_device_pin_register("pin", &_mm32_pin_ops, RT_NULL); - return result; -} - -rt_inline void pin_irq_hdr(int irqno) -{ - EXTI_ClearITPendingBit(mm32_pin_irq_map[irqno].irqbit); - if (mm32_pin_irq_hdr_tab[irqno].hdr) - { - mm32_pin_irq_hdr_tab[irqno].hdr(mm32_pin_irq_hdr_tab[irqno].args); - } -} -void EXTI0_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(0); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI1_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(1); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI2_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(2); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI3_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(3); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI4_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(4); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI9_5_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - if (EXTI_GetITStatus(EXTI_Line5) != RESET) - { - pin_irq_hdr(5); - } - if (EXTI_GetITStatus(EXTI_Line6) != RESET) - { - pin_irq_hdr(6); - } - if (EXTI_GetITStatus(EXTI_Line7) != RESET) - { - pin_irq_hdr(7); - } - if (EXTI_GetITStatus(EXTI_Line8) != RESET) - { - pin_irq_hdr(8); - } - if (EXTI_GetITStatus(EXTI_Line9) != RESET) - { - pin_irq_hdr(9); - } - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI15_10_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - if (EXTI_GetITStatus(EXTI_Line10) != RESET) - { - pin_irq_hdr(10); - } - if (EXTI_GetITStatus(EXTI_Line11) != RESET) - { - pin_irq_hdr(11); - } - if (EXTI_GetITStatus(EXTI_Line12) != RESET) - { - pin_irq_hdr(12); - } - if (EXTI_GetITStatus(EXTI_Line13) != RESET) - { - pin_irq_hdr(13); - } - if (EXTI_GetITStatus(EXTI_Line14) != RESET) - { - pin_irq_hdr(14); - } - if (EXTI_GetITStatus(EXTI_Line15) != RESET) - { - pin_irq_hdr(15); - } - /* leave interrupt */ - rt_interrupt_leave(); -} - diff --git a/bsp/mm32f526x/drivers/drv_gpio.h b/bsp/mm32f526x/drivers/drv_gpio.h deleted file mode 100644 index 22350a6f4d0..00000000000 --- a/bsp/mm32f526x/drivers/drv_gpio.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2022-2025, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2025-01-22 chasel first version - */ - -#ifndef __DRV_GPIO_H__ -#define __DRV_GPIO_H__ - -int rt_hw_pin_init(void); - -#endif - diff --git a/bsp/mm32f526x/drivers/drv_uart.c b/bsp/mm32f526x/drivers/drv_uart.c deleted file mode 100644 index f801f87125d..00000000000 --- a/bsp/mm32f526x/drivers/drv_uart.c +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Copyright (c) 2022-2025, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2025-01-22 chasel first version - */ -#include "board.h" -#include -#include -#include "drv_uart.h" -#include -#include -#include -#include - -/* uart driver */ -struct mm32_uart -{ - UART_TypeDef *uart; - IRQn_Type irq; -}; - -static rt_err_t mm32_uart_configure(struct rt_serial_device *serial, struct serial_configure *cfg) -{ - struct mm32_uart *uart; - UART_InitTypeDef UART_InitStructure; - RT_ASSERT(serial != RT_NULL); - RT_ASSERT(cfg != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - UART_InitStructure.BaudRate = cfg->baud_rate; - if (cfg->data_bits == DATA_BITS_8) - UART_InitStructure.WordLength = UART_WordLength_8b; - if (cfg->stop_bits == STOP_BITS_1) - UART_InitStructure.StopBits = UART_StopBits_1; - else if (cfg->stop_bits == STOP_BITS_2) - UART_InitStructure.StopBits = UART_StopBits_2; - UART_InitStructure.Parity = UART_Parity_No; - UART_InitStructure.HWFlowControl = UART_HWFlowControl_None; - UART_InitStructure.Mode = UART_Mode_Rx | UART_Mode_Tx; - UART_Init(uart->uart, &UART_InitStructure); - - /* Enable UART */ - UART_Cmd(uart->uart, ENABLE); - - return RT_EOK; -} - -static rt_err_t mm32_uart_control(struct rt_serial_device *serial, int cmd, void *arg) -{ - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - switch (cmd) - { - case RT_DEVICE_CTRL_CLR_INT: - /* disable rx irq */ - NVIC_DisableIRQ(uart->irq); - UART_ITConfig(uart->uart, UART_IT_RX, DISABLE); - break; - case RT_DEVICE_CTRL_SET_INT: - /* enable rx irq */ - NVIC_EnableIRQ(uart->irq); - /* enable interrupt */ - UART_ITConfig(uart->uart, UART_IT_RX, ENABLE); - break; - } - return RT_EOK; -} - -static int mm32_uart_putc(struct rt_serial_device *serial, char c) -{ - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - while ((uart->uart->CSR & UART_CSR_TXC_Msk) == 0) - ; - uart->uart->TDR = c; - return 1; -} - -static int mm32_uart_getc(struct rt_serial_device *serial) -{ - int ch; - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - ch = -1; - if (uart->uart->CSR & UART_FLAG_RXAVL) - { - ch = uart->uart->RDR & 0xff; - } - return ch; -} - -static const struct rt_uart_ops mm32_uart_ops = -{ - mm32_uart_configure, - mm32_uart_control, - mm32_uart_putc, - mm32_uart_getc, -}; - -#if defined(BSP_USING_UART1) -/* UART1 device driver structure */ -static struct mm32_uart uart1; -struct rt_serial_device serial1; -void UART1_IRQHandler(void) -{ - struct mm32_uart *uart; - uart = &uart1; - /* enter interrupt */ - rt_interrupt_enter(); - if (UART_GetITStatus(uart->uart, UART_IT_RX) != RESET) - { - UART_ClearITPendingBit(uart->uart, UART_IT_RX); - rt_hw_serial_isr(&serial1, RT_SERIAL_EVENT_RX_IND); - } - if (UART_GetITStatus(uart->uart, UART_IT_TX) != RESET) - { - /* clear interrupt */ - UART_ClearITPendingBit(uart->uart, UART_IT_TX); - } - /* leave interrupt */ - rt_interrupt_leave(); -} -#endif /* BSP_USING_UART1 */ - -#if defined(BSP_USING_UART2) -/* UART2 device driver structure */ -static struct mm32_uart uart2; -struct rt_serial_device serial2; -void UART2_IRQHandler(void) -{ - struct mm32_uart *uart; - uart = &uart2; - /* enter interrupt */ - rt_interrupt_enter(); - if (UART_GetITStatus(uart->uart, UART_IT_RX) != RESET) - { - UART_ClearITPendingBit(uart->uart, UART_IT_RX); - rt_hw_serial_isr(&serial2, RT_SERIAL_EVENT_RX_IND); - } - if (UART_GetITStatus(uart->uart, UART_IT_TX) != RESET) - { - /* clear interrupt */ - UART_ClearITPendingBit(uart->uart, UART_IT_TX); - } - /* leave interrupt */ - rt_interrupt_leave(); -} -#endif /* BSP_USING_UART2 */ - -#if defined(BSP_USING_UART3) -/* UART3 device driver structure */ -static struct mm32_uart uart3; -struct rt_serial_device serial3; -void UART3_IRQHandler(void) -{ - struct mm32_uart *uart; - uart = &uart3; - /* enter interrupt */ - rt_interrupt_enter(); - if (UART_GetITStatus(uart->uart, UART_IT_RX) != RESET) - { - UART_ClearITPendingBit(uart->uart, UART_IT_RX); - rt_hw_serial_isr(&serial3, RT_SERIAL_EVENT_RX_IND); - } - if (UART_GetITStatus(uart->uart, UART_IT_TX) != RESET) - { - /* clear interrupt */ - UART_ClearITPendingBit(uart->uart, UART_IT_TX); - } - /* leave interrupt */ - rt_interrupt_leave(); -} -#endif /* BSP_USING_UART3 */ - -int rt_hw_uart_init(void) -{ - struct mm32_uart *uart; - struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; -#ifdef BSP_USING_UART1 - mm32_msp_uart_init((void *)UART1); - - uart = &uart1; - uart->uart = UART1; - uart->irq = UART1_IRQn; - config.baud_rate = BAUD_RATE_115200; - serial1.ops = &mm32_uart_ops; - serial1.config = config; - /* register UART1 device */ - rt_hw_serial_register(&serial1, "uart1", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, - uart); -#endif /* BSP_USING_UART1 */ - -#ifdef BSP_USING_UART2 - mm32_msp_uart_init((void *)UART2); - - uart = &uart2; - uart->uart = UART2; - uart->irq = UART2_IRQn; - config.baud_rate = BAUD_RATE_115200; - serial2.ops = &mm32_uart_ops; - serial2.config = config; - /* register UART2 device */ - rt_hw_serial_register(&serial2, "uart2", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, - uart); -#endif /* BSP_USING_UART2 */ - -#ifdef BSP_USING_UART3 - mm32_msp_uart_init((void *)UART3); - - uart = &uart3; - uart->uart = UART3; - uart->irq = UART3_IRQn; - config.baud_rate = BAUD_RATE_115200; - serial3.ops = &mm32_uart_ops; - serial3.config = config; - /* register UART2 device */ - rt_hw_serial_register(&serial3, "uart3", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, - uart); -#endif /* BSP_USING_UART3 */ - - return 0; -} diff --git a/bsp/mm32f526x/drivers/drv_uart.h b/bsp/mm32f526x/drivers/drv_uart.h deleted file mode 100644 index 523598a0a34..00000000000 --- a/bsp/mm32f526x/drivers/drv_uart.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2022-2025, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2025-01-22 chasel first version - */ - -#ifndef __DRV_UART_H__ -#define __DRV_UART_H__ - -int rt_hw_uart_init(void); - -#endif diff --git a/bsp/mm32f526x/drivers/fal_cfg.h b/bsp/mm32f526x/drivers/fal_cfg.h deleted file mode 100644 index 22e77992a75..00000000000 --- a/bsp/mm32f526x/drivers/fal_cfg.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-08-05 mazhiyuan first version - */ - -#ifndef _FAL_CFG_H_ -#define _FAL_CFG_H_ - -#include -#include - - -/* ===================== Flash device Configuration ========================= */ -extern const struct fal_flash_dev mm32_onchip_flash; -extern struct fal_flash_dev nor_flash0; - -/* flash device table */ -#define FAL_FLASH_DEV_TABLE \ -{ \ - &mm32_onchip_flash, \ -} -/* ====================== Partition Configuration ========================== */ -#ifdef FAL_PART_HAS_TABLE_CFG -/* partition table */ -#define FAL_PART_TABLE \ -{ \ - {FAL_PART_MAGIC_WORD, "bl", "mm32_onchip", 0, 128*1024, 0}, \ - {FAL_PART_MAGIC_WORD, "filesystem", "mm32_onchip", 128*1024, 255*1024, 0}, \ -} -#endif /* FAL_PART_HAS_TABLE_CFG */ - -#endif /* _FAL_CFG_H_ */ diff --git a/bsp/mm32f526x/drivers/linker_scripts/link.icf b/bsp/mm32f526x/drivers/linker_scripts/link.icf deleted file mode 100644 index 0bf4088b258..00000000000 --- a/bsp/mm32f526x/drivers/linker_scripts/link.icf +++ /dev/null @@ -1,34 +0,0 @@ -/*###ICF### Section handled by ICF editor, don't touch! ****/ -/*-Editor annotation file-*/ -/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_4.xml" */ -/*-Specials-*/ -define symbol __ICFEDIT_intvec_start__ = 0x08000000; -/*-Memory Regions-*/ -define symbol __ICFEDIT_region_IROM_start__ = 0x08000000; -define symbol __ICFEDIT_region_IROM_end__ = 0x0003FFFF; -define symbol __ICFEDIT_region_IRAM_start__ = 0x30000000; -define symbol __ICFEDIT_region_IRAM_end__ = 0x3001FFFF; -/*-Sizes-*/ -define symbol __ICFEDIT_size_cstack__ = 0x0800; -define symbol __ICFEDIT_size_proc_stack__ = 0x0; -define symbol __ICFEDIT_size_heap__ = 0x0800; -/**** End of ICF editor section. ###ICF###*/ -define memory mem with size = 4G; -define region IROM_region = mem:[from __ICFEDIT_region_IROM_start__ to __ICFEDIT_region_IROM_end__]; -define region IRAM_region = mem:[from __ICFEDIT_region_IRAM_start__ to __ICFEDIT_region_IRAM_end__]; -define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; -define block PROC_STACK with alignment = 8, size = __ICFEDIT_size_proc_stack__ { }; -define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; - -do not initialize { section .noinit }; -initialize by copy { readwrite }; -if (isdefinedsymbol(__USE_DLIB_PERTHREAD)) -{ - // Required in a multi-threaded application - initialize by copy with packing = none { section __DLIB_PERTHREAD }; -} - -place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; - -place in IROM_region { readonly }; -place in IRAM_region { readwrite, block CSTACK, block PROC_STACK, block HEAP }; diff --git a/bsp/mm32f526x/drivers/linker_scripts/link.lds b/bsp/mm32f526x/drivers/linker_scripts/link.lds deleted file mode 100644 index d32c5247671..00000000000 --- a/bsp/mm32f526x/drivers/linker_scripts/link.lds +++ /dev/null @@ -1,268 +0,0 @@ - - -/* - *-------- <<< Use Configuration Wizard in Context Menu >>> ------------------- - */ - -/*---------------------- Flash Configuration ---------------------------------- - Flash Configuration - Flash Base Address <0x0-0xFFFFFFFF:8> - Flash Size (in Bytes) <0x0-0xFFFFFFFF:8> - - -----------------------------------------------------------------------------*/ -__ROM_BASE = 0x08000000; -__ROM_SIZE = 0x00040000; - -/*--------------------- Embedded RAM Configuration ---------------------------- - RAM Configuration - RAM Base Address <0x0-0xFFFFFFFF:8> - RAM Size (in Bytes) <0x0-0xFFFFFFFF:8> - - -----------------------------------------------------------------------------*/ -__RAM_BASE = 0x30000000; -__RAM_SIZE = 0x0001C000; - -/*--------------------- Stack / Heap Configuration ---------------------------- - Stack / Heap Configuration - Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> - Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> - - -----------------------------------------------------------------------------*/ -__STACK_SIZE = 0x00001000; -/*__HEAP_SIZE = 0x00001000;*/ - -/* - *-------------------- <<< end of configuration section >>> ------------------- - */ - -/* ARMv8-M stack sealing: - to use ARMv8-M stack sealing set __STACKSEAL_SIZE to 8 otherwise keep 0 - */ -__STACKSEAL_SIZE = 0; - - -MEMORY -{ - FLASH (rx) : ORIGIN = __ROM_BASE, LENGTH = __ROM_SIZE - RAM (rwx) : ORIGIN = __RAM_BASE, LENGTH = __RAM_SIZE -} - -/* Linker script to place sections and symbol values. Should be used together - * with other linker script that defines memory regions FLASH and RAM. - * It references following symbols, which must be defined in code: - * Reset_Handler : Entry of reset handler - * - * It defines following symbols, which code can use without definition: - * __exidx_start - * __exidx_end - * __copy_table_start__ - * __copy_table_end__ - * __zero_table_start__ - * __zero_table_end__ - * __etext - * __data_start__ - * __preinit_array_start - * __preinit_array_end - * __init_array_start - * __init_array_end - * __fini_array_start - * __fini_array_end - * __data_end__ - * __bss_start__ - * __bss_end__ - * __end__ - * end - * __HeapLimit - * __StackLimit - * __StackTop - * __stack - * __StackSeal (only if ARMv8-M stack sealing is used) - */ -ENTRY(Reset_Handler) - -SECTIONS -{ - .text : - { - . = ALIGN(4); - KEEP(*(.vectors)) - . = ALIGN(4); - *(.text) /* remaining code */ - *(.text.*) /* remaining code */ - *(.rodata) /* read-only data (constants) */ - *(.rodata*) - *(.glue_7) - *(.glue_7t) - *(.gnu.linkonce.t*) - - /* section information for finsh shell */ - . = ALIGN(4); - __fsymtab_start = .; - KEEP(*(FSymTab)) - __fsymtab_end = .; - - . = ALIGN(4); - __vsymtab_start = .; - KEEP(*(VSymTab)) - __vsymtab_end = .; - - /* section information for initial. */ - . = ALIGN(4); - __rt_init_start = .; - KEEP(*(SORT(.rti_fn*))) - __rt_init_end = .; - - . = ALIGN(4); - - PROVIDE(__ctors_start__ = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - PROVIDE(__ctors_end__ = .); - - . = ALIGN(4); - - _etext = .; - } > FLASH - - /* - * SG veneers: - * All SG veneers are placed in the special output section .gnu.sgstubs. Its start address - * must be set, either with the command line option ��--section-start�� or in a linker script, - * to indicate where to place these veneers in memory. - */ -/* - .gnu.sgstubs : - { - . = ALIGN(32); - } > FLASH -*/ - .ARM.extab : - { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } > FLASH - - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - - /* This is used by the startup in order to initialize the .data secion */ - _sidata = .; - } > FLASH - __exidx_end = .; - - __etext = ALIGN (4); - - .data : AT (__etext) - { - . = ALIGN(4); - /* This is used by the startup in order to initialize the .data secion */ - _sdata = . ; - - *(.data) - *(.data.*) - *(.gnu.linkonce.d*) - - PROVIDE(__dtors_start__ = .); - KEEP(*(SORT(.dtors.*))) - KEEP(*(.dtors)) - PROVIDE(__dtors_end__ = .); - - . = ALIGN(4); - /* This is used by the startup in order to initialize the .data secion */ - _edata = . ; - - } > RAM - - /* - * Secondary data section, optional - * - * Remember to add each additional data section - * to the .copy.table above to asure proper - * initialization during startup. - */ -/* - __etext2 = ALIGN (4); - - .data2 : AT (__etext2) - { - . = ALIGN(4); - __data2_start__ = .; - *(.data2) - *(.data2.*) - . = ALIGN(4); - __data2_end__ = .; - - } > RAM2 -*/ - -/* - .heap (COPY) : - { - . = ALIGN(8); - __end__ = .; - PROVIDE(end = .); - . = . + __HEAP_SIZE; - . = ALIGN(8); - __HeapLimit = .; - } > RAM - */ - - - /* ARMv8-M stack sealing: - to use ARMv8-M stack sealing uncomment '.stackseal' section - */ -/* - .stackseal : - { - . = ALIGN(8); - __StackSeal = .; - . = . + 8; - . = ALIGN(8); - } > RAM -*/ - - .stack : - { - . = ALIGN(8); - _sstack = .; - . = . + __STACK_SIZE; - . = ALIGN(8); - _estack = .; - } > RAM - - __bss_start__ = .; - .bss : - { - . = ALIGN(4); - _sbss = .; - - *(.bss) - *(.bss.*) - *(COMMON) - . = ALIGN(4); - _ebss = . ; - - *(.bss.init) - } > RAM - __bss_end__ = .; - - /* - * Secondary bss section, optional - * - * Remember to add each additional bss section - * to the .zero.table above to asure proper - * initialization during startup. - */ -/* - .bss2 : - { - . = ALIGN(4); - __bss2_start__ = .; - *(.bss2) - *(.bss2.*) - . = ALIGN(4); - __bss2_end__ = .; - } > RAM2 AT > RAM2 -*/ -} diff --git a/bsp/mm32f526x/drivers/linker_scripts/link.sct b/bsp/mm32f526x/drivers/linker_scripts/link.sct deleted file mode 100644 index 59105a68037..00000000000 --- a/bsp/mm32f526x/drivers/linker_scripts/link.sct +++ /dev/null @@ -1,114 +0,0 @@ -; ************************************************************* -; *** Scatter-Loading Description File generated by uVision *** -; ************************************************************* - -#! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-m33 -xc -; command above MUST be in first line (no comment above!) - -/* -;-------- <<< Use Configuration Wizard in Context Menu >>> ------------------- -*/ - -/*--------------------- Flash Configuration ---------------------------------- -; Flash Configuration -; Flash Base Address <0x0-0xFFFFFFFF:8> -; Flash Size (in Bytes) <0x0-0xFFFFFFFF:8> -; - *----------------------------------------------------------------------------*/ -#define __ROM_BASE 0x008000000 -#define __ROM_SIZE 0x000040000 - -/*---------------------------- ITCM Configuration ----------------------------- -; ITCM Configuration -; ITCM Base Address <0x0-0xFFFFFFFF:8> -; ITCM Size (in Bytes) <0x0-0xFFFFFFFF:8> -; - *----------------------------------------------------------------------------*/ -#define __ITCM_BASE 0x00000000 -#define __ITCM_SIZE 0x00008000 - -/*---------------------------- DTCM Configuration ----------------------------- -; DTCM Configuration -; DTCM Base Address <0x0-0xFFFFFFFF:8> -; DTCM Size (in Bytes) <0x0-0xFFFFFFFF:8> -; - *----------------------------------------------------------------------------*/ -#define __DTCM_BASE 0x20000000 -#define __DTCM_SIZE 0x00008000 - -/*--------------------- Embedded RAM1 Configuration --------------------------- -; RAM Configuration -; RAM1 Base Address <0x0-0xFFFFFFFF:8> -; RAM1 Size (in Bytes) <0x0-0xFFFFFFFF:8> -; - *----------------------------------------------------------------------------*/ -#define __RAM1_BASE 0x30000000 -#define __RAM1_SIZE 0x0001C000 - -/*--------------------- Embedded RAM2 Configuration --------------------------- -; RAM Configuration -; RAM2 Base Address <0x0-0xFFFFFFFF:8> -; RAM2 Size (in Bytes) <0x0-0xFFFFFFFF:8> -; - *----------------------------------------------------------------------------*/ -#define __RAM2_BASE 0x3001C000 -#define __RAM2_SIZE 0x00004000 - - -/*--------------------- Stack / Heap Configuration --------------------------- -; Stack / Heap Configuration -; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> -; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> -; - *----------------------------------------------------------------------------*/ -#define __STACK_SIZE 0x00000800 -#define __HEAP_SIZE 0x00000C00 - - -/*---------------------------------------------------------------------------- - User Stack & Heap boundary definition - *----------------------------------------------------------------------------*/ -#define __STACK_TOP (__RAM1_BASE + __RAM1_SIZE) /* starts at end of RAM */ -#define __HEAP_BASE (AlignExpr(+0, 8)) /* starts after RW_RAM section, 8 byte aligned */ - - -/*---------------------------------------------------------------------------- - Scatter File Definitions definition - *----------------------------------------------------------------------------*/ -#define __RO_BASE __ROM_BASE -#define __RO_SIZE __ROM_SIZE - -LR_ROM __RO_BASE __RO_SIZE { ; load region size_region - ER_ROM __RO_BASE __RO_SIZE { ; load address = execution address - *.o (RESET, +First) - *(InRoot$$Sections) -; *(Veneer$$CMSE) ; uncomment for secure applications - .ANY (+RO) - .ANY (+XO) - } - - RW_ITCM __ITCM_BASE __ITCM_SIZE { ; RW data - .ANY (+RW +ZI) - } - - RW_DTCM __DTCM_BASE __DTCM_SIZE { ; RW data - .ANY (+RW +ZI) - } - - RW_RAM1 __RAM1_BASE (__RAM1_SIZE - __STACK_SIZE - __HEAP_SIZE) { ; RW data - .ANY (+RW +ZI) - } - - RW_RAM2 __RAM2_BASE __RAM2_SIZE { ; RW data - .ANY (+RW +ZI) - } - -#if __HEAP_SIZE > 0 - ARM_LIB_HEAP __HEAP_BASE EMPTY __HEAP_SIZE { ; Reserve empty region for heap - } -#endif - - ARM_LIB_STACK __STACK_TOP EMPTY -__STACK_SIZE { ; Reserve empty region for stack - } -} - diff --git a/bsp/mm32l07x/drivers/SConscript b/bsp/mm32l07x/drivers/SConscript deleted file mode 100644 index 6cbaa4bd993..00000000000 --- a/bsp/mm32l07x/drivers/SConscript +++ /dev/null @@ -1,20 +0,0 @@ -# RT-Thread building script for component - -from building import * - -cwd = GetCurrentDir() - -# add the general drivers. -src = Split(""" -board.c -""") - -# add serial driver code -if GetDepend('BSP_USING_UART1') or GetDepend('BSP_USING_UART2'): - src += ['drv_uart.c'] - -CPPPATH = [cwd] - -group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) - -Return('group') diff --git a/bsp/mm32l07x/drivers/drv_uart.c b/bsp/mm32l07x/drivers/drv_uart.c deleted file mode 100644 index 82007ed29b7..00000000000 --- a/bsp/mm32l07x/drivers/drv_uart.c +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Copyright (c) 2006-2018, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2013-11-15 bright the first version - */ - -#include -#include -#include "drv_uart.h" - -/* UART1 */ -#define UART1_GPIO_TX GPIO_Pin_9 -#define UART1_GPIO_TX_SOURCE GPIO_PinSource9 -#define UART1_GPIO_RX GPIO_Pin_10 -#define UART1_GPIO_RX_SOURCE GPIO_PinSource10 -#define UART1_GPIO_AF GPIO_AF_1 -#define UART1_GPIO GPIOA - -/* UART2 */ -#define UART2_GPIO_TX GPIO_Pin_2 -#define UART2_GPIO_TX_SOURCE GPIO_PinSource2 -#define UART2_GPIO_RX GPIO_Pin_3 -#define UART2_GPIO_RX_SOURCE GPIO_PinSource3 -#define UART2_GPIO_AF GPIO_AF_1 -#define UART2_GPIO GPIOA - -/* uart driver */ -struct mm32_uart -{ - UART_TypeDef *uart; - IRQn_Type irq; -}; - -static rt_err_t mm32_uart_configure(struct rt_serial_device *serial, - struct serial_configure *cfg) -{ - struct mm32_uart *uart; - UART_InitTypeDef UART_InitStructure; - RT_ASSERT(serial != RT_NULL); - RT_ASSERT(cfg != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - UART_InitStructure.UART_BaudRate = cfg->baud_rate; - if (cfg->data_bits == DATA_BITS_8) - UART_InitStructure.UART_WordLength = UART_WordLength_8b; - if (cfg->stop_bits == STOP_BITS_1) - UART_InitStructure.UART_StopBits = UART_StopBits_1; - else if (cfg->stop_bits == STOP_BITS_2) - UART_InitStructure.UART_StopBits = UART_StopBits_2; - UART_InitStructure.UART_Parity = UART_Parity_No; - UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None; - UART_InitStructure.UART_Mode = UART_Mode_Rx | UART_Mode_Tx; - UART_Init(uart->uart, &UART_InitStructure); - /* Enable UART */ - UART_Cmd(uart->uart, ENABLE); - return RT_EOK; -} - -static rt_err_t mm32_uart_control(struct rt_serial_device *serial, - int cmd, void *arg) -{ - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - switch (cmd) - { - case RT_DEVICE_CTRL_CLR_INT: - /* disable rx irq */ - NVIC_DisableIRQ(uart->irq); - UART_ITConfig(uart->uart, UART_IT_RXIEN, DISABLE); - break; - case RT_DEVICE_CTRL_SET_INT: - /* enable rx irq */ - NVIC_EnableIRQ(uart->irq); - /* enable interrupt */ - UART_ITConfig(uart->uart, UART_IT_RXIEN, ENABLE); - break; - } - return RT_EOK; -} - -static int mm32_uart_putc(struct rt_serial_device *serial, char c) -{ - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - while ((uart->uart->CSR & UART_CSR_TXC) == 0); - uart->uart->TDR = c; - return 1; -} - -static int mm32_uart_getc(struct rt_serial_device *serial) -{ - int ch; - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - ch = -1; - if (uart->uart->CSR & UART_FLAG_RXAVL) - { - ch = uart->uart->RDR & 0xff; - } - return ch; -} - -static const struct rt_uart_ops mm32_uart_ops = -{ - mm32_uart_configure, - mm32_uart_control, - mm32_uart_putc, - mm32_uart_getc, -}; - -#if defined(BSP_USING_UART1) -/* UART1 device driver structure */ -static struct mm32_uart uart1; -struct rt_serial_device serial1; -void UART1_IRQHandler(void) -{ - struct mm32_uart *uart; - uart = &uart1; - /* enter interrupt */ - rt_interrupt_enter(); - if (UART_GetITStatus(uart->uart, UART_IT_RXIEN) != RESET) - { - UART_ClearITPendingBit(uart->uart, UART_IT_RXIEN); - rt_hw_serial_isr(&serial1, RT_SERIAL_EVENT_RX_IND); - } - if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) - { - /* clear interrupt */ - UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); - } - /* leave interrupt */ - rt_interrupt_leave(); -} -#endif /* BSP_USING_UART1 */ -#if defined(BSP_USING_UART2) -/* UART2 device driver structure */ -static struct mm32_uart uart2; -struct rt_serial_device serial2; -void UART2_IRQHandler(void) -{ - struct mm32_uart *uart; - uart = &uart2; - /* enter interrupt */ - rt_interrupt_enter(); - if (UART_GetITStatus(uart->uart_device, UART_IT_RXIEN) != RESET) - { - UART_ClearITPendingBit(uart->uart_device, UART_IT_RXIEN); - rt_hw_serial_isr(&serial2, RT_SERIAL_EVENT_RX_IND); - } - if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) - { - /* clear interrupt */ - UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); - } - /* leave interrupt */ - rt_interrupt_leave(); -} -#endif /* BSP_USING_UART2 */ - -#ifdef BSP_USING_UART1 -static void UART1PINconfigStepA(void) -{ - /* Enable UART clock */ - RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE); - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); - GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1); - GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1); -} -static void UART1PINconfigStepB(void) -{ - GPIO_InitTypeDef GPIO_InitStructure; - /* Configure USART Rx/tx PIN */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOA, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init(GPIOA, &GPIO_InitStructure); -} -#endif -#ifdef BSP_USING_UART2 -static void UART2PINconfigStepA(void) -{ - /* Enable UART clock */ - RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART2, ENABLE); - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); - GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_1); - GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_1); -} -static void UART2PINconfigStepB(void) -{ - GPIO_InitTypeDef GPIO_InitStructure; - /* Configure USART Rx/tx PIN */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOA, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init(GPIOA, &GPIO_InitStructure); -} -#endif - -int rt_hw_uart_init(void) -{ - struct mm32_uart *uart; - struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; -#ifdef BSP_USING_UART1 - UART1PINconfigStepA(); - uart = &uart1; - uart->uart = UART1; - uart->irq = UART1_IRQn; - config.baud_rate = BAUD_RATE_115200; - serial1.ops = &mm32_uart_ops; - serial1.config = config; - /* register UART1 device */ - rt_hw_serial_register(&serial1, "uart1", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, - uart); - UART1PINconfigStepB(); -#endif /* BSP_USING_UART1 */ -#ifdef BSP_USING_UART2 - UART2PINconfigStepA(); - uart = &uart2; - uart->uart = UART2; - uart->irq = UART2_IRQn; - config.baud_rate = BAUD_RATE_115200; - serial2.ops = &mm32_uart_ops; - serial2.config = config; - /* register UART1 device */ - rt_hw_serial_register(&serial2, "uart2", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, - uart); - UART2PINconfigStepB(); -#endif /* BSP_USING_UART2 */ - return 0; -} -INIT_BOARD_EXPORT(rt_hw_uart_init); diff --git a/bsp/mm32l07x/drivers/drv_uart.h b/bsp/mm32l07x/drivers/drv_uart.h deleted file mode 100644 index 5f0d14b4851..00000000000 --- a/bsp/mm32l07x/drivers/drv_uart.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2017-2019, MindMotion AE Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2019-03-13 henryhuang first version - */ - -#ifndef DRV_UART_H__ -#define DRV_UART_H__ - -int rt_hw_uart_init(void); - -#endif diff --git a/bsp/mm32l3xx/SConstruct b/bsp/mm32l3xx/SConstruct deleted file mode 100644 index 35a7f75de0e..00000000000 --- a/bsp/mm32l3xx/SConstruct +++ /dev/null @@ -1,40 +0,0 @@ -import os -import sys -import rtconfig - -if os.getenv('RTT_ROOT'): - RTT_ROOT = os.getenv('RTT_ROOT') -else: - RTT_ROOT = os.path.normpath(os.getcwd() + '/../..') - -sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] -try: - from building import * -except: - print('Cannot found RT-Thread root directory, please check RTT_ROOT') - print(RTT_ROOT) - exit(-1) - -TARGET = 'rtthread.' + rtconfig.TARGET_EXT - -DefaultEnvironment(tools=[]) -env = Environment(tools = ['mingw'], - AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, - CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS, - AR = rtconfig.AR, ARFLAGS = '-rc', - LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) -env.PrependENVPath('PATH', rtconfig.EXEC_PATH) - -if rtconfig.PLATFORM in ['iccarm']: - env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) - env.Replace(ARFLAGS = ['']) - env.Replace(LINKCOM = env["LINKCOM"] + ' --map project.map') - -Export('RTT_ROOT') -Export('rtconfig') - -# prepare building environment -objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) - -# make a building -DoBuilding(TARGET, objs) diff --git a/bsp/mm32l3xx/drivers/SConscript b/bsp/mm32l3xx/drivers/SConscript deleted file mode 100644 index e7e064caf18..00000000000 --- a/bsp/mm32l3xx/drivers/SConscript +++ /dev/null @@ -1,24 +0,0 @@ -# RT-Thread building script for component - -from building import * - -cwd = GetCurrentDir() - -# add the general drivers. -src = Split(""" -board.c -""") - -# add serial driver code -if GetDepend('BSP_USING_UART1') or GetDepend('BSP_USING_UART2'): - src += ['drv_uart.c'] - -# add gpio driver code -if GetDepend(['BSP_USING_GPIO']): - src += ['drv_gpio.c'] - -CPPPATH = [cwd] - -group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) - -Return('group') diff --git a/bsp/mm32l3xx/drivers/drv_gpio.c b/bsp/mm32l3xx/drivers/drv_gpio.c deleted file mode 100644 index 57256dced60..00000000000 --- a/bsp/mm32l3xx/drivers/drv_gpio.c +++ /dev/null @@ -1,529 +0,0 @@ -/* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2019-04-02 henryhuang the first version - */ -#include -#include -#include -#include - -#define MM32_PIN(index, rcc, gpio, gpio_index) { 0, RCC_##rcc##Periph_GPIO##gpio, GPIO##gpio, GPIO_Pin_##gpio_index, GPIO_PortSourceGPIO##gpio, GPIO_PinSource##gpio_index} -#define MM32_PIN_DEFAULT {-1, 0, 0, 0, 0, 0} -/* MM32 GPIO driver */ -struct pin_index -{ - int index; - uint32_t rcc; - GPIO_TypeDef *gpio; - uint32_t pin; - uint8_t port_source; - uint8_t pin_source; -}; -static const struct pin_index mm32_pin_map[] = -{ - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, - MM32_PIN(2, APB2, C, 13), - MM32_PIN(3, APB2, C, 14), - MM32_PIN(4, APB2, C, 15), - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, - MM32_PIN(10, APB2, A, 0), - MM32_PIN(11, APB2, A, 1), - MM32_PIN(12, APB2, A, 2), - MM32_PIN(13, APB2, A, 3), - MM32_PIN(14, APB2, A, 4), - MM32_PIN(15, APB2, A, 5), - MM32_PIN(16, APB2, A, 6), - MM32_PIN(17, APB2, A, 7), - MM32_PIN(18, APB2, B, 0), - MM32_PIN(19, APB2, B, 1), - MM32_PIN(20, APB2, B, 2), - MM32_PIN(21, APB2, B, 10), - MM32_PIN(22, APB2, B, 11), - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, - MM32_PIN(25, APB2, B, 12), - MM32_PIN(26, APB2, B, 13), - MM32_PIN(27, APB2, B, 14), - MM32_PIN(28, APB2, B, 15), - MM32_PIN(29, APB2, A, 8), - MM32_PIN(30, APB2, A, 9), - MM32_PIN(31, APB2, A, 10), - MM32_PIN(32, APB2, A, 11), - MM32_PIN(33, APB2, A, 12), - MM32_PIN(34, APB2, A, 13), - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, - MM32_PIN(37, APB2, A, 14), - MM32_PIN(38, APB2, A, 15), - MM32_PIN(39, APB2, B, 3), - MM32_PIN(40, APB2, B, 4), - MM32_PIN(41, APB2, B, 5), - MM32_PIN(42, APB2, B, 6), - MM32_PIN(43, APB2, B, 7), - MM32_PIN_DEFAULT, - MM32_PIN(45, APB2, B, 8), - MM32_PIN(46, APB2, B, 9), - MM32_PIN_DEFAULT, - MM32_PIN_DEFAULT, -}; - -struct pin_irq_map -{ - rt_uint16_t pinbit; - rt_uint32_t irqbit; - enum IRQn irqno; -}; -const struct pin_irq_map mm32_pin_irq_map[] = -{ - {GPIO_Pin_0, EXTI_Line0, EXTI0_IRQn }, - {GPIO_Pin_1, EXTI_Line1, EXTI1_IRQn }, - {GPIO_Pin_2, EXTI_Line2, EXTI2_IRQn }, - {GPIO_Pin_3, EXTI_Line3, EXTI3_IRQn }, - {GPIO_Pin_4, EXTI_Line4, EXTI4_IRQn }, - {GPIO_Pin_5, EXTI_Line5, EXTI9_5_IRQn }, - {GPIO_Pin_6, EXTI_Line6, EXTI9_5_IRQn }, - {GPIO_Pin_7, EXTI_Line7, EXTI9_5_IRQn }, - {GPIO_Pin_8, EXTI_Line8, EXTI9_5_IRQn }, - {GPIO_Pin_9, EXTI_Line9, EXTI9_5_IRQn }, - {GPIO_Pin_10, EXTI_Line10, EXTI15_10_IRQn}, - {GPIO_Pin_11, EXTI_Line11, EXTI15_10_IRQn}, - {GPIO_Pin_12, EXTI_Line12, EXTI15_10_IRQn}, - {GPIO_Pin_13, EXTI_Line13, EXTI15_10_IRQn}, - {GPIO_Pin_14, EXTI_Line14, EXTI15_10_IRQn}, - {GPIO_Pin_15, EXTI_Line15, EXTI15_10_IRQn}, -}; -struct rt_pin_irq_hdr mm32_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}, - {-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}, - {-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}, - {-1, 0, RT_NULL, RT_NULL}, -}; -#define ITEM_NUM(items) sizeof(items) / sizeof(items[0]) -const struct pin_index *get_pin(uint8_t pin) -{ - const struct pin_index *index; - - if (pin < ITEM_NUM(mm32_pin_map)) - { - index = &mm32_pin_map[pin]; - if (index->gpio == 0) - index = RT_NULL; - } - else - { - index = RT_NULL; - } - - return index; -}; - -void mm32_pin_write(rt_device_t dev, rt_base_t pin, rt_uint8_t value) -{ - const struct pin_index *index; - - index = get_pin(pin); - if (index == RT_NULL) - { - return; - } - if (value == PIN_LOW) - { - GPIO_ResetBits(index->gpio, index->pin); - } - else - { - - GPIO_SetBits(index->gpio, index->pin); - } -} - -rt_ssize_t mm32_pin_read(rt_device_t dev, rt_base_t pin) -{ - rt_ssize_t value; - const struct pin_index *index; - - value = PIN_LOW; - index = get_pin(pin); - if (index == RT_NULL) - { - return -RT_EINVAL; - } - if (GPIO_ReadInputDataBit(index->gpio, index->pin) == Bit_RESET) - { - value = PIN_LOW; - } - else - { - value = PIN_HIGH; - } - return value; -} - -void mm32_pin_mode(rt_device_t dev, rt_base_t pin, rt_uint8_t mode) -{ - const struct pin_index *index; - GPIO_InitTypeDef GPIO_InitStructure; - - index = get_pin(pin); - if (index == RT_NULL) - { - return; - } - /* GPIO Periph clock enable */ - RCC_APB2PeriphClockCmd(index->rcc, ENABLE); - /* Configure GPIO_InitStructure */ - GPIO_InitStructure.GPIO_Pin = index->pin; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - if (mode == PIN_MODE_OUTPUT) - { - /* output setting */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; - } - else if (mode == PIN_MODE_OUTPUT_OD) - { - /* output setting: od. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; - } - else if (mode == PIN_MODE_INPUT) - { - /* input setting: not pull. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; - } - else if (mode == PIN_MODE_INPUT_PULLUP) - { - /* input setting: pull up. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; - } - else - { - /* input setting:default. */ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; - } - GPIO_Init( index->gpio, &GPIO_InitStructure); -} -rt_inline rt_int32_t bit2bitno(rt_uint32_t bit) -{ - int i; - for (i = 0; i < 32; i++) - { - if ((0x01 << i) == bit) - { - return i; - } - } - return -1; -} -rt_inline const struct pin_irq_map *get_pin_irq_map(uint32_t pinbit) -{ - rt_int32_t mapindex = bit2bitno(pinbit); - if (mapindex < 0 || mapindex >= ITEM_NUM(mm32_pin_irq_map)) - { - return RT_NULL; - } - return &mm32_pin_irq_map[mapindex]; -}; -rt_err_t mm32_pin_attach_irq(struct rt_device *device, rt_base_t pin, - rt_uint8_t mode, void (*hdr)(void *args), void *args) -{ - const struct pin_index *index; - rt_base_t level; - rt_int32_t irqindex = -1; - - index = get_pin(pin); - if (index == RT_NULL) - { - return -RT_ENOSYS; - } - irqindex = bit2bitno(index->pin); - if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) - { - return -RT_ENOSYS; - } - - level = rt_hw_interrupt_disable(); - if (mm32_pin_irq_hdr_tab[irqindex].pin == pin && - mm32_pin_irq_hdr_tab[irqindex].hdr == hdr && - mm32_pin_irq_hdr_tab[irqindex].mode == mode && - mm32_pin_irq_hdr_tab[irqindex].args == args - ) - { - rt_hw_interrupt_enable(level); - return RT_EOK; - } - if (mm32_pin_irq_hdr_tab[irqindex].pin != -1) - { - rt_hw_interrupt_enable(level); - return -RT_EBUSY; - } - mm32_pin_irq_hdr_tab[irqindex].pin = pin; - mm32_pin_irq_hdr_tab[irqindex].hdr = hdr; - mm32_pin_irq_hdr_tab[irqindex].mode = mode; - mm32_pin_irq_hdr_tab[irqindex].args = args; - rt_hw_interrupt_enable(level); - - return RT_EOK; -} -rt_err_t mm32_pin_detach_irq(struct rt_device *device, rt_base_t pin) -{ - const struct pin_index *index; - rt_base_t level; - rt_int32_t irqindex = -1; - - index = get_pin(pin); - if (index == RT_NULL) - { - return -RT_ENOSYS; - } - irqindex = bit2bitno(index->pin); - if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) - { - return -RT_ENOSYS; - } - - level = rt_hw_interrupt_disable(); - if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) - { - rt_hw_interrupt_enable(level); - return RT_EOK; - } - mm32_pin_irq_hdr_tab[irqindex].pin = -1; - mm32_pin_irq_hdr_tab[irqindex].hdr = RT_NULL; - mm32_pin_irq_hdr_tab[irqindex].mode = 0; - mm32_pin_irq_hdr_tab[irqindex].args = RT_NULL; - rt_hw_interrupt_enable(level); - - return RT_EOK; -} -rt_err_t mm32_pin_irq_enable(struct rt_device *device, rt_base_t pin, - rt_uint8_t enabled) -{ - const struct pin_index *index; - const struct pin_irq_map *irqmap; - rt_base_t level; - rt_int32_t irqindex = -1; - GPIO_InitTypeDef GPIO_InitStructure; - NVIC_InitTypeDef NVIC_InitStructure; - EXTI_InitTypeDef EXTI_InitStructure; - - index = get_pin(pin); - if (index == RT_NULL) - { - return -RT_ENOSYS; - } - if (enabled == PIN_IRQ_ENABLE) - { - irqindex = bit2bitno(index->pin); - if (irqindex < 0 || irqindex >= ITEM_NUM(mm32_pin_irq_map)) - { - return -RT_ENOSYS; - } - level = rt_hw_interrupt_disable(); - if (mm32_pin_irq_hdr_tab[irqindex].pin == -1) - { - rt_hw_interrupt_enable(level); - return -RT_ENOSYS; - } - irqmap = &mm32_pin_irq_map[irqindex]; - /* GPIO Periph clock enable */ - RCC_APB2PeriphClockCmd(index->rcc, ENABLE); - /* Configure GPIO_InitStructure */ - GPIO_InitStructure.GPIO_Pin = index->pin; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_Init(index->gpio, &GPIO_InitStructure); - - NVIC_InitStructure.NVIC_IRQChannel = irqmap->irqno; - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; - NVIC_Init(&NVIC_InitStructure); - - GPIO_EXTILineConfig(index->port_source, index->pin_source); - EXTI_InitStructure.EXTI_Line = irqmap->irqbit; - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - switch (mm32_pin_irq_hdr_tab[irqindex].mode) - { - case PIN_IRQ_MODE_RISING: - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; - break; - case PIN_IRQ_MODE_FALLING: - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; - break; - case PIN_IRQ_MODE_RISING_FALLING: - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; - break; - } - EXTI_InitStructure.EXTI_LineCmd = ENABLE; - EXTI_Init(&EXTI_InitStructure); - rt_hw_interrupt_enable(level); - } - else if (enabled == PIN_IRQ_DISABLE) - { - irqmap = get_pin_irq_map(index->pin); - if (irqmap == RT_NULL) - { - return -RT_ENOSYS; - } - EXTI_InitStructure.EXTI_Line = irqmap->irqbit; - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; - EXTI_InitStructure.EXTI_LineCmd = DISABLE; - EXTI_Init(&EXTI_InitStructure); - } - else - { - return -RT_ENOSYS; - } - - return RT_EOK; -} -const static struct rt_pin_ops _mm32_pin_ops = -{ - mm32_pin_mode, - mm32_pin_write, - mm32_pin_read, - mm32_pin_attach_irq, - mm32_pin_detach_irq, - mm32_pin_irq_enable, - RT_NULL, -}; - -int rt_hw_pin_init(void) -{ - int result; - - result = rt_device_pin_register("pin", &_mm32_pin_ops, RT_NULL); - return result; -} -INIT_BOARD_EXPORT(rt_hw_pin_init); - -rt_inline void pin_irq_hdr(int irqno) -{ - EXTI_ClearITPendingBit(mm32_pin_irq_map[irqno].irqbit); - if (mm32_pin_irq_hdr_tab[irqno].hdr) - { - mm32_pin_irq_hdr_tab[irqno].hdr(mm32_pin_irq_hdr_tab[irqno].args); - } -} -void EXTI0_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(0); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI1_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(1); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI2_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(2); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI3_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(3); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI4_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - pin_irq_hdr(4); - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI9_5_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - if (EXTI_GetITStatus(EXTI_Line5) != RESET) - { - pin_irq_hdr(5); - } - if (EXTI_GetITStatus(EXTI_Line6) != RESET) - { - pin_irq_hdr(6); - } - if (EXTI_GetITStatus(EXTI_Line7) != RESET) - { - pin_irq_hdr(7); - } - if (EXTI_GetITStatus(EXTI_Line8) != RESET) - { - pin_irq_hdr(8); - } - if (EXTI_GetITStatus(EXTI_Line9) != RESET) - { - pin_irq_hdr(9); - } - /* leave interrupt */ - rt_interrupt_leave(); -} -void EXTI15_10_IRQHandler(void) -{ - /* enter interrupt */ - rt_interrupt_enter(); - if (EXTI_GetITStatus(EXTI_Line10) != RESET) - { - pin_irq_hdr(10); - } - if (EXTI_GetITStatus(EXTI_Line11) != RESET) - { - pin_irq_hdr(11); - } - if (EXTI_GetITStatus(EXTI_Line12) != RESET) - { - pin_irq_hdr(12); - } - if (EXTI_GetITStatus(EXTI_Line13) != RESET) - { - pin_irq_hdr(13); - } - if (EXTI_GetITStatus(EXTI_Line14) != RESET) - { - pin_irq_hdr(14); - } - if (EXTI_GetITStatus(EXTI_Line15) != RESET) - { - pin_irq_hdr(15); - } - /* leave interrupt */ - rt_interrupt_leave(); -} diff --git a/bsp/mm32l3xx/drivers/drv_gpio.h b/bsp/mm32l3xx/drivers/drv_gpio.h deleted file mode 100644 index 09de5d6e9b3..00000000000 --- a/bsp/mm32l3xx/drivers/drv_gpio.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) 2006-2018, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2019-04-02 henryhuang the first version - */ -#ifndef DRV_GPIO_H__ -#define DRV_GPIO_H__ - -int rt_hw_pin_init(void); - -#endif diff --git a/bsp/mm32l3xx/drivers/drv_uart.c b/bsp/mm32l3xx/drivers/drv_uart.c deleted file mode 100644 index 4ac6923bb59..00000000000 --- a/bsp/mm32l3xx/drivers/drv_uart.c +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright (c) 2006-2018, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2019-04-02 henryhuang the first version - */ -#include -#include -#include "drv_uart.h" - -/* UART1 */ -#define UART1_GPIO_TX GPIO_Pin_9 -#define UART1_GPIO_TX_SOURCE GPIO_PinSource9 -#define UART1_GPIO_RX GPIO_Pin_10 -#define UART1_GPIO_RX_SOURCE GPIO_PinSource10 -#define UART1_GPIO_AF GPIO_AF_1 -#define UART1_GPIO GPIOA - -/* UART2 */ -#define UART2_GPIO_TX GPIO_Pin_2 -#define UART2_GPIO_TX_SOURCE GPIO_PinSource2 -#define UART2_GPIO_RX GPIO_Pin_3 -#define UART2_GPIO_RX_SOURCE GPIO_PinSource3 -#define UART2_GPIO_AF GPIO_AF_1 -#define UART2_GPIO GPIOA - -/* uart driver */ -struct mm32_uart -{ - UART_TypeDef *uart; - IRQn_Type irq; -}; - -static rt_err_t mm32_uart_configure(struct rt_serial_device *serial, struct serial_configure *cfg) -{ - struct mm32_uart *uart; - UART_InitTypeDef UART_InitStructure; - RT_ASSERT(serial != RT_NULL); - RT_ASSERT(cfg != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - UART_InitStructure.UART_BaudRate = cfg->baud_rate; - if (cfg->data_bits == DATA_BITS_8) - UART_InitStructure.UART_WordLength = UART_WordLength_8b; - if (cfg->stop_bits == STOP_BITS_1) - UART_InitStructure.UART_StopBits = UART_StopBits_1; - else if (cfg->stop_bits == STOP_BITS_2) - UART_InitStructure.UART_StopBits = UART_StopBits_2; - UART_InitStructure.UART_Parity = UART_Parity_No; - UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None; - UART_InitStructure.UART_Mode = UART_Mode_Rx | UART_Mode_Tx; - UART_Init(uart->uart, &UART_InitStructure); - /* Enable UART */ - UART_Cmd(uart->uart, ENABLE); - return RT_EOK; -} - -static rt_err_t mm32_uart_control(struct rt_serial_device *serial, int cmd, void *arg) -{ - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - switch (cmd) - { - case RT_DEVICE_CTRL_CLR_INT: - /* disable rx irq */ - NVIC_DisableIRQ(uart->irq); - UART_ITConfig(uart->uart, UART_IT_RXIEN, DISABLE); - break; - case RT_DEVICE_CTRL_SET_INT: - /* enable rx irq */ - NVIC_EnableIRQ(uart->irq); - /* enable interrupt */ - UART_ITConfig(uart->uart, UART_IT_RXIEN, ENABLE); - break; - } - return RT_EOK; -} - -static int mm32_uart_putc(struct rt_serial_device *serial, char c) -{ - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - while ((uart->uart->CSR & UART_CSR_TXC) == 0); - uart->uart->TDR = c; - return 1; -} - -static int mm32_uart_getc(struct rt_serial_device *serial) -{ - int ch; - struct mm32_uart *uart; - RT_ASSERT(serial != RT_NULL); - uart = (struct mm32_uart *)serial->parent.user_data; - ch = -1; - if (uart->uart->CSR & UART_FLAG_RXAVL) - { - ch = uart->uart->RDR & 0xff; - } - return ch; -} - -static const struct rt_uart_ops mm32_uart_ops = -{ - mm32_uart_configure, - mm32_uart_control, - mm32_uart_putc, - mm32_uart_getc, -}; - -#if defined(BSP_USING_UART1) -/* UART1 device driver structure */ -static struct mm32_uart uart1; -struct rt_serial_device serial1; -void UART1_IRQHandler(void) -{ - struct mm32_uart *uart; - uart = &uart1; - /* enter interrupt */ - rt_interrupt_enter(); - if (UART_GetITStatus(uart->uart, UART_IT_RXIEN) != RESET) - { - UART_ClearITPendingBit(uart->uart, UART_IT_RXIEN); - rt_hw_serial_isr(&serial1, RT_SERIAL_EVENT_RX_IND); - } - if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) - { - /* clear interrupt */ - UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); - } - /* leave interrupt */ - rt_interrupt_leave(); -} -#endif /* BSP_USING_UART1 */ - -#if defined(BSP_USING_UART2) -/* UART2 device driver structure */ -static struct mm32_uart uart2; -struct rt_serial_device serial2; -void UART2_IRQHandler(void) -{ - struct mm32_uart *uart; - uart = &uart2; - /* enter interrupt */ - rt_interrupt_enter(); - if (UART_GetITStatus(uart->uart, UART_IT_RXIEN) != RESET) - { - UART_ClearITPendingBit(uart->uart, UART_IT_RXIEN); - rt_hw_serial_isr(&serial2, RT_SERIAL_EVENT_RX_IND); - } - if (UART_GetITStatus(uart->uart, UART_IT_TXIEN) != RESET) - { - /* clear interrupt */ - UART_ClearITPendingBit(uart->uart, UART_IT_TXIEN); - } - /* leave interrupt */ - rt_interrupt_leave(); -} -#endif /* BSP_USING_UART2 */ - -#ifdef BSP_USING_UART1 -static void UART1PINconfigStepA(void) -{ - /* Enable UART clock */ - RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE); - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); - RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); - GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); -} - -static void UART1PINconfigStepB(void) -{ - - GPIO_InitTypeDef GPIO_InitStructure; - /* Configure USART Rx/tx PIN */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOA, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init(GPIOA, &GPIO_InitStructure); - -} -#endif - -#ifdef BSP_USING_UART2 -static void UART2PINconfigStepA(void) -{ - /* Enable UART clock */ - RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART2, ENABLE); - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); - RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); - GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); -} - -static void UART2PINconfigStepB(void) -{ - GPIO_InitTypeDef GPIO_InitStructure; - /* Configure USART Rx/tx PIN */ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; - GPIO_Init(GPIOA, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init(GPIOA, &GPIO_InitStructure); - -} -#endif - -int rt_hw_uart_init(void) -{ - struct mm32_uart *uart; - struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; -#ifdef BSP_USING_UART1 - UART1PINconfigStepA(); - uart = &uart1; - uart->uart = UART1; - uart->irq = UART1_IRQn; - config.baud_rate = BAUD_RATE_115200; - serial1.ops = &mm32_uart_ops; - serial1.config = config; - /* register UART1 device */ - rt_hw_serial_register(&serial1, "uart1", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, - uart); - UART1PINconfigStepB(); -#endif /* BSP_USING_UART1 */ - -#ifdef BSP_USING_UART2 - UART2PINconfigStepA(); - uart = &uart2; - uart->uart = UART2; - uart->irq = UART2_IRQn; - config.baud_rate = BAUD_RATE_115200; - serial2.ops = &mm32_uart_ops; - serial2.config = config; - /* register UART2 device */ - rt_hw_serial_register(&serial2, "uart2", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, - uart); - UART2PINconfigStepB(); -#endif /* BSP_USING_UART2 */ - return 0; -} -INIT_BOARD_EXPORT(rt_hw_uart_init); diff --git a/bsp/mm32l3xx/drivers/drv_uart.h b/bsp/mm32l3xx/drivers/drv_uart.h deleted file mode 100644 index 5f0d14b4851..00000000000 --- a/bsp/mm32l3xx/drivers/drv_uart.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2017-2019, MindMotion AE Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2019-03-13 henryhuang first version - */ - -#ifndef DRV_UART_H__ -#define DRV_UART_H__ - -int rt_hw_uart_init(void); - -#endif