Страница 1 из 3

Простой универсальный MCUCube

Добавлено: Вт сен 01, 2026 13:39:51
silentsin
Всем привет!
Изображение
Для тех, кто возится с самоделками на микроконтроллерах, часто требуется понимание, а где, собственно, на каких пинах расположена та периферия, которую я намереваюсь использовать? И чем более новые "камни" появляются, тем больше запутано там с выводами, схемами, ремапами. Предлагаемая программа позволяет быстро выбрать модуль, его ремап, если архитектура подразумевает это, и увидеть конфликты наглядно. Софт не привязан к каким-либо конкретным производителям и, обладая небольшим кругозором и изобретательностью, можно этим же софтом "описать" нужный вам контроллер. Собственно, прилагаю к сему малую библиотеку используемых мной MCU. Пользуйтесь. Задавайте вопросы.

Локализация: русский по умолчанию и английский. Переключается приложением, ну или уберите xml файлы из папки Config...
Спасибо за внимание. Да, архив во вложениях.

Re: Простой универсальный MCUCube

Добавлено: Вт сен 01, 2026 18:02:48
Zikon
Программа не актуальна - надо перерабатывать на новый лад
когда каждый пин можно по отдельности ремапить на возможные функции (AF)
и сейчас многие делают собственные Кубы с отображением что и как

Ремапинг по группам - это отголоски старого STM32F103
и CH32V (RISC-V) зачем-то сохранили это,
наверно в CH32F103 (Cortex-M3) сделали - так и оставили
хотя уже в STM32F0,G0,F4,G4 и прочих ремапинг через AF

Изучаю сейчас PUYA PY32F0xx , NSING(Nations) N32G4xx и другие
PUYA и NSING сделали свои программы PY32Studio, N32Cube

Попробуйте в свою программу завести вот эти простые чипы

https://github.com/Xiamatsu/MCU_Pinout

Думаю скоро и WCH подтянется и сделает своё подобие Куба

Re: Простой универсальный MCUCube

Добавлено: Ср сен 02, 2026 06:23:27
silentsin
Zikon писал(а): Вт сен 01, 2026 18:02:48 Программа не актуальна - надо перерабатывать на новый лад
когда каждый пин можно по отдельности ремапить на возможные функции (AF)
и сейчас многие делают собственные Кубы с отображением что и как

Ремапинг по группам - это отголоски старого STM32F103
и CH32V (RISC-V) зачем-то сохранили это,
наверно в CH32F103 (Cortex-M3) сделали - так и оставили
хотя уже в STM32F0,G0,F4,G4 и прочих ремапинг через AF

Изучаю сейчас PUYA PY32F0xx , NSING(Nations) N32G4xx и другие
PUYA и NSING сделали свои программы PY32Studio, N32Cube

Попробуйте в свою программу завести вот эти простые чипы

https://github.com/Xiamatsu/MCU_Pinout

Думаю скоро и WCH подтянется и сделает своё подобие Куба
Конфликты тоже сами собой разрешаются? WCH слишком долго собирается. Эти чипы "завести" - легко. Реально, никаких проблем, прога для этого и предназначена. Не для генерации кода, который все равно нафиг не нужен, ибо все по библам давно распихано, а чтобы выделить каждый пин под указанную функцию и получить наглядную их карту. Вам это, вероятно не нужно, а вот другим людям пригодится. К тому же я сказал, что прога - универсальна, в ней можно завести любой stm/pic/wch совместимый MCU. Вы просто не смотрели её пристально... а таких инструментов, и не только таких, порой просто не хватает...

ЗЫ И да, здесь каждый пин любой периферии можно выбрать отдельно.
ЗЗЫ У некоторых кирпичей внутри корпуса скроссированы некоторые порты. И это тоже поддерживается, хоть их десяток там будет, на каждом физическом пине. Посмотрите на X033, там шесть пар таких точно есть. И вы это увидите при расчетах, если ненароком повесите на такой (не указанный на корпусе) пин что-то еще...

Re: Простой универсальный MCUCube

Добавлено: Ср сен 02, 2026 08:43:23
Adrift
silentsin писал(а): Ср сен 02, 2026 06:23:27К тому же я сказал, что прога - универсальна, в ней можно завести любой stm/pic/wch совместимый MCU.
Ага, только у вас самый большой корпус - это LQFP32, а если нужны LQFP48/64/80/100/144, то пользователи должны сами LQFP48.xml и т.д. добавлять, помимо самих мк? Вот вам, для примера, STM32H563Vx.csv который куб генерит:
Спойлер

Код: Выделить всё

"Position","Name","Type","Signal","Label","AF0","AF1","AF2","AF3","AF4","AF5","AF6","AF7","AF8","AF9","AF10","AF11","AF12","AF13","AF14","AF15"
"1","PE2","I/O","","","DEBUG_TRACECLK","LPTIM1_IN2","SAI1_CK1","","","SPI4_SCK","SAI1_MCLK_A","USART10_RX","UART8_TX","OCTOSPI1_IO2","","ETH_TXD3","FMC_A23","DCMI_D3/PSSI_D3","","EVENTOUT"
"2","PE3","I/O","","","DEBUG_TRACED0","","","","TIM15_BKIN","","SAI1_SD_B","USART10_TX","","","","","FMC_A19","","","EVENTOUT"
"3","PE4","I/O","","","DEBUG_TRACED1","","SAI1_D2","","TIM15_CH1N","SPI4_NSS","SAI1_FS_A","","","","","","FMC_A20","DCMI_D4/PSSI_D4","","EVENTOUT"
"4","PE5","I/O","","","DEBUG_TRACED2","","SAI1_CK2","","TIM15_CH1","SPI4_MISO","SAI1_SCK_A","","","","","","FMC_A21","DCMI_D6/PSSI_D6","","EVENTOUT"
"5","PE6","I/O","","","DEBUG_TRACED3","TIM1_BKIN2","SAI1_D1","","TIM15_CH2","SPI4_MOSI","SAI1_SD_A","","","","SAI2_MCLK_B","","FMC_A22","DCMI_D7/PSSI_D7","","EVENTOUT"
"6","VBAT","Power","","","","","","","","","","","","","","","","","",""
"7","PC13","I/O","","","","","","","","","","","","","","","","","","EVENTOUT"
"8","PC14-OSC32_IN(OSC32_IN)","I/O","","","","","","","","","","","","","","","","","","EVENTOUT"
"9","PC15-OSC32_OUT(OSC32_OUT)","I/O","","","","","","","","","","","","","","","","","","EVENTOUT"
"10","VSS","Power","","","","","","","","","","","","","","","","","",""
"11","VDD","Power","","","","","","","","","","","","","","","","","",""
"12","PH0-OSC_IN(PH0)","I/O","","","","","","","","","","","","","","","","","","EVENTOUT"
"13","PH1-OSC_OUT(PH1)","I/O","","","","","","","","","","","","","","","","","","EVENTOUT"
"14","NRST","Reset","","","","","","","","","","","","","","","","","",""
"15","PC0","I/O","","","","TIM16_BKIN","","","","","SAI1_MCLK_A","SPI2_RDY","SAI2_FS_B","FMC_A25","OCTOSPI1_IO7","","FMC_SDNWE","","","EVENTOUT"
"16","PC1","I/O","","","DEBUG_TRACED0","","SAI1_D1","","","I2S2_SDO/SPI2_MOSI","SAI1_SD_A","USART11_DE/USART11_RTS","SAI2_SD_A","","OCTOSPI1_IO4","ETH_MDC","","","","EVENTOUT"
"17","PC2","I/O","","","PWR_CSLEEP","TIM17_CH1","TIM4_CH4","","","I2S2_SDI/SPI2_MISO","OCTOSPI1_IO5","","","OCTOSPI1_IO2","","ETH_TXD2","FMC_SDNE0","","","EVENTOUT"
"18","PC3","I/O","","","PWR_CSTOP","","SAI1_D3","LPTIM3_CH1","","I2S2_SDO/SPI2_MOSI","OCTOSPI1_IO6","","","OCTOSPI1_IO0","","ETH_TX_CLK","FMC_SDCKE0","","","EVENTOUT"
"19","VSSA","Power","","","","","","","","","","","","","","","","","",""
"20","VREF-","Power","","","","","","","","","","","","","","","","","",""
"21","VREF+","Power","","","","","","","","","","","","","","","","","",""
"22","VDDA","Power","","","","","","","","","","","","","","","","","",""
"23","PA0","I/O","","","","TIM2_CH1","TIM5_CH1","TIM8_ETR","TIM15_BKIN","SPI6_NSS","SPI3_RDY","USART2_CTS/USART2_NSS","UART4_TX","","SAI2_SD_B","ETH_CRS","","","TIM2_ETR","EVENTOUT"
"24","PA1","I/O","","","","TIM2_CH2","TIM5_CH2","","TIM15_CH1N","LPTIM1_IN1","OCTOSPI1_DQS","USART2_DE/USART2_RTS","UART4_RX","OCTOSPI1_IO3","SAI2_MCLK_B","ETH_REF_CLK/ETH_RX_CLK","","","","EVENTOUT"
"25","PA2","I/O","","","","TIM2_CH3","TIM5_CH3","","TIM15_CH1","LPTIM1_IN2","","USART2_TX","SAI2_SCK_B","","","ETH_MDIO","","","","EVENTOUT"
"26","PA3","I/O","","","","TIM2_CH4","TIM5_CH4","OCTOSPI1_CLK","TIM15_CH2","I2S2_WS/SPI2_NSS","SAI1_SD_B","USART2_RX","","","","ETH_COL","","","","EVENTOUT"
"27","VSS","Power","","","","","","","","","","","","","","","","","",""
"28","VDD","Power","","","","","","","","","","","","","","","","","",""
"29","PA4","I/O","","","","","TIM5_ETR","LPTIM2_CH1","","I2S1_WS/SPI1_NSS","I2S3_WS/SPI3_NSS","USART2_CK","SPI6_NSS","","","","","DCMI_HSYNC/PSSI_DE","","EVENTOUT"
"30","PA5","I/O","","","","TIM2_CH1","","TIM8_CH1N","","I2S1_CK/SPI1_SCK","","","SPI6_SCK","","","ETH_TX_EN","","PSSI_D14","TIM2_ETR","EVENTOUT"
"31","PA6","I/O","","","","TIM1_BKIN","TIM3_CH1","TIM8_BKIN","","I2S1_SDI/SPI1_MISO","OCTOSPI1_IO3","USART11_TX","SPI6_MISO","TIM13_CH1","","","","DCMI_PIXCLK/PSSI_PDCK","","EVENTOUT"
"32","PA7","I/O","","","","TIM1_CH1N","TIM3_CH2","TIM8_CH1N","","I2S1_SDO/SPI1_MOSI","","USART11_RX","SPI6_MOSI","TIM14_CH1","OCTOSPI1_IO2","ETH_CRS_DV/ETH_RX_DV","FMC_SDNWE","FMC_NWE","","EVENTOUT"
"33","PC4","I/O","","","","TIM2_CH4","SAI1_CK1","LPTIM2_ETR","","I2S1_MCK","","USART3_RX","","","","ETH_RXD0","FMC_SDNE0","","","EVENTOUT"
"34","PC5","I/O","","","","TIM1_CH4N","SAI1_D3","","PSSI_D15","","SAI1_FS_A","UART12_DE/UART12_RTS","","","OCTOSPI1_DQS","ETH_RXD1","FMC_SDCKE0","","","EVENTOUT"
"35","PB0","I/O","","","","TIM1_CH2N","TIM3_CH3","TIM8_CH2N","","","OCTOSPI1_IO1","USART11_CK","UART4_CTS","","","ETH_RXD2","","","LPTIM3_CH1","EVENTOUT"
"36","PB1","I/O","","","","TIM1_CH3N","TIM3_CH4","TIM8_CH3N","","","OCTOSPI1_IO0","","","","","ETH_RXD3","","","LPTIM3_CH2","EVENTOUT"
"37","PB2","I/O","","","RTC_OUT2","","SAI1_D1","TIM8_CH4N","SPI1_RDY","LPTIM1_CH1","SAI1_SD_A","I2S3_SDO/SPI3_MOSI","","OCTOSPI1_CLK","OCTOSPI1_DQS","","SDMMC1_CMD","LPTIM5_ETR","","EVENTOUT"
"38","PE7","I/O","","","","TIM1_ETR","","","","","UART12_DE/UART12_RTS","UART7_RX","","","OCTOSPI1_IO4","","FMC_D4/FMC_DA4","","","EVENTOUT"
"39","PE8","I/O","","","","TIM1_CH1N","","","","","UART12_CTS","UART7_TX","","","OCTOSPI1_IO5","","FMC_D5/FMC_DA5","","","EVENTOUT"
"40","PE9","I/O","","","","TIM1_CH1","","","","","UART12_RX","UART7_DE/UART7_RTS","","","OCTOSPI1_IO6","","FMC_D6/FMC_DA6","","","EVENTOUT"
"41","PE10","I/O","","","","TIM1_CH2N","","","","","UART12_TX","UART7_CTS","","","OCTOSPI1_IO7","","FMC_D7/FMC_DA7","","","EVENTOUT"
"42","PE11","I/O","","","","TIM1_CH2","","","SPI1_RDY","SPI4_NSS","OCTOSPI1_NCS","","","","SAI2_SD_B","","FMC_D8/FMC_DA8","","","EVENTOUT"
"43","PE12","I/O","","","","TIM1_CH3N","","","","SPI4_SCK","","","","","SAI2_SCK_B","","FMC_D9/FMC_DA9","","","EVENTOUT"
"44","PE13","I/O","","","","TIM1_CH3","","","","SPI4_MISO","","","","","SAI2_FS_B","","FMC_D10/FMC_DA10","","","EVENTOUT"
"45","PE14","I/O","","","","TIM1_CH4","","","","SPI4_MOSI","","","","","SAI2_MCLK_B","","FMC_D11/FMC_DA11","","","EVENTOUT"
"46","PE15","I/O","","","","TIM1_BKIN","","TIM1_CH4N","","","","USART10_CK","","","","","FMC_D12/FMC_DA12","","","EVENTOUT"
"47","PB10","I/O","","","","TIM2_CH3","LPTIM3_CH1","LPTIM2_IN1","I2C2_SCL","I2S2_CK/SPI2_SCK","","USART3_TX","","OCTOSPI1_NCS","","ETH_RX_ER","","","","EVENTOUT"
"48","VCAP","Power","","","","","","","","","","","","","","","","","",""
"49","VSS","Power","","","","","","","","","","","","","","","","","",""
"50","VDD","Power","","","","","","","","","","","","","","","","","",""
"51","PB12","I/O","","","","TIM1_BKIN","","OCTOSPI1_NCLK","I2C2_SDA","I2S2_WS/SPI2_NSS","UCPD1_FRSTX","USART3_CK","","FDCAN2_RX","","ETH_TXD0","","","UART5_RX","EVENTOUT"
"52","PB13","I/O","","","","TIM1_CH1N","LPTIM3_IN1","LPTIM2_CH1","I2C2_SMBA","I2S2_CK/SPI2_SCK","","USART3_CTS/USART3_NSS","","FDCAN2_TX","","","SDMMC1_D0","","UART5_TX","EVENTOUT"
"53","PB14","I/O","","","","TIM1_CH2N","TIM12_CH1","TIM8_CH2N","USART1_TX","I2S2_SDI/SPI2_MISO","","USART3_DE/USART3_RTS","UART4_DE/UART4_RTS","","","","","","LPTIM3_ETR","EVENTOUT"
"54","PB15","I/O","","","RTC_REFIN","TIM1_CH3N","TIM12_CH2","TIM8_CH3N","USART1_RX","I2S2_SDO/SPI2_MOSI","","USART11_CTS/USART11_NSS","UART4_CTS","","OCTOSPI1_CLK","ETH_TXD1","","DCMI_D2/PSSI_D2","UART5_RX","EVENTOUT"
"55","PD8","I/O","","","","","","","","","","USART3_TX","","","","","FMC_D13/FMC_DA13","","","EVENTOUT"
"56","PD9","I/O","","","","","","","","","","USART3_RX","","FDCAN2_RX","","","FMC_D14/FMC_DA14","","","EVENTOUT"
"57","PD10","I/O","","","","","","LPTIM2_CH2","","","","USART3_CK","","","","","FMC_D15/FMC_DA15","","","EVENTOUT"
"58","PD11","I/O","","","","","SAI1_CK1","LPTIM2_IN2","I2C4_SMBA","","","USART3_CTS/USART3_NSS","UART4_RX","OCTOSPI1_IO0","SAI2_SD_A","","FMC_A16/FMC_CLE","","","EVENTOUT"
"59","PD12","I/O","","","","LPTIM1_IN1","TIM4_CH1","LPTIM2_IN1","I2C4_SCL","I3C1_SCL","SAI1_D1","USART3_DE/USART3_RTS","UART4_TX","OCTOSPI1_IO1","SAI2_FS_A","","FMC_A17/FMC_ALE","DCMI_D12/PSSI_D12","","EVENTOUT"
"60","PD13","I/O","","","","LPTIM1_CH1","TIM4_CH2","LPTIM2_CH1","I2C4_SDA","I3C1_SDA","","","","OCTOSPI1_IO3","SAI2_SCK_A","UART9_DE/UART9_RTS","FMC_A18","DCMI_D13/PSSI_D13","LPTIM4_IN1","EVENTOUT"
"61","PD14","I/O","","","","","TIM4_CH3","","","","","","UART8_CTS","","","UART9_RX","FMC_D0/FMC_DA0","","","EVENTOUT"
"62","PD15","I/O","","","","","TIM4_CH4","","","","","","UART8_DE/UART8_RTS","","","UART9_TX","FMC_D1/FMC_DA1","","","EVENTOUT"
"63","PC6","I/O","","","","","TIM3_CH1","TIM8_CH1","","I2S2_MCK","SAI1_SCK_A","USART6_TX","SDMMC1_D0DIR","FMC_NWAIT","","OCTOSPI1_IO5","SDMMC1_D6","DCMI_D0/PSSI_D0","","EVENTOUT"
"64","PC7","I/O","","","DEBUG_TRGIO","","TIM3_CH2","TIM8_CH2","","","I2S3_MCK","USART6_RX","SDMMC1_D123DIR","FMC_NE1","","OCTOSPI1_IO6","SDMMC1_D7","DCMI_D1/PSSI_D1","","EVENTOUT"
"65","PC8","I/O","","","DEBUG_TRACED1","","TIM3_CH3","TIM8_CH3","","","","USART6_CK","UART5_DE/UART5_RTS","FMC_NCE/FMC_NE2","FMC_INT","FMC_ALE","SDMMC1_D0","DCMI_D2/PSSI_D2","","EVENTOUT"
"66","PC9","I/O","","","RCC_MCO_2","","TIM3_CH4","TIM8_CH4","I2C3_SDA","AUDIOCLK","","","UART5_CTS","OCTOSPI1_IO0","","FMC_CLE","SDMMC1_D1","DCMI_D3/PSSI_D3","","EVENTOUT"
"67","PA8","I/O","","","RCC_MCO_1","TIM1_CH1","","TIM8_BKIN2","I2C3_SCL","SPI1_RDY","","USART1_CK","","","USB_SOF","UART7_RX","FMC_NOE","DCMI_D3/PSSI_D3","","EVENTOUT"
"68","PA9","I/O","","","","TIM1_CH2","","LPUART1_TX","I2C3_SMBA","I2S2_CK/SPI2_SCK","","USART1_TX","","","","ETH_TX_ER","FMC_NWE","DCMI_D0/PSSI_D0","","EVENTOUT"
"69","PA10","I/O","","","","TIM1_CH3","","LPUART1_RX","LPTIM2_IN2","","UCPD1_FRSTX","USART1_RX","","FDCAN2_TX","","","SDMMC1_D0","DCMI_D1/PSSI_D1","","EVENTOUT"
"70","PA11","I/O","","","","TIM1_CH4","","LPUART1_CTS","","I2S2_WS/SPI2_NSS","UART4_RX","USART1_CTS/USART1_NSS","","FDCAN1_RX","USB_DM","","","","","EVENTOUT"
"71","PA12","I/O","","","","TIM1_ETR","","LPUART1_DE/LPUART1_RTS","","I2S2_CK/SPI2_SCK","UART4_TX","USART1_DE/USART1_RTS","SAI2_FS_B","FDCAN1_TX","USB_DP","","","","","EVENTOUT"
"72","PA13(JTMS/SWDIO)","I/O","","","DEBUG_JTMS-SWDIO","","","","","","","","","","","","","","","EVENTOUT"
"73","VDDUSB","Power","","","","","","","","","","","","","","","","","",""
"74","VSS","Power","","","","","","","","","","","","","","","","","",""
"75","VDD","Power","","","","","","","","","","","","","","","","","",""
"76","PA14(JTCK/SWCLK)","I/O","","","DEBUG_JTCK-SWCLK","","","","","","","","","","","","","","","EVENTOUT"
"77","PA15(JTDI)","I/O","","","DEBUG_JTDI","TIM2_CH1","LPTIM3_IN2","","CEC","I2S1_WS/SPI1_NSS","I2S3_WS/SPI3_NSS","SPI6_NSS","UART4_DE/UART4_RTS","","","UART7_TX","FMC_NBL1","DCMI_D11/PSSI_D11","TIM2_ETR","EVENTOUT"
"78","PC10","I/O","","","","","LPTIM3_ETR","","","","I2S3_CK/SPI3_SCK","USART3_TX","UART4_TX","OCTOSPI1_IO1","","ETH_TXD0","SDMMC1_D2","DCMI_D8/PSSI_D8","","EVENTOUT"
"79","PC11","I/O","","","","","LPTIM3_IN1","","","","I2S3_SDI/SPI3_MISO","USART3_RX","UART4_RX","OCTOSPI1_NCS","","","SDMMC1_D3","DCMI_D4/PSSI_D4","","EVENTOUT"
"80","PC12","I/O","","","DEBUG_TRACED3","","TIM15_CH1","","","SPI6_SCK","I2S3_SDO/SPI3_MOSI","USART3_CK","UART5_TX","","","","SDMMC1_CK","DCMI_D9/PSSI_D9","","EVENTOUT"
"81","PD0","I/O","","","","","","TIM8_CH4N","","","","","UART4_RX","FDCAN1_RX","","UART9_CTS","FMC_D2/FMC_DA2","","","EVENTOUT"
"82","PD1","I/O","","","","","","","","","","","UART4_TX","FDCAN1_TX","","","FMC_D3/FMC_DA3","","","EVENTOUT"
"83","PD2","I/O","","","DEBUG_TRACED2","","TIM3_ETR","","TIM15_BKIN","","","","UART5_RX","","","","SDMMC1_CMD","DCMI_D11/PSSI_D11","LPTIM4_ETR","EVENTOUT"
"84","PD3","I/O","","","","","","","","I2S2_CK/SPI2_SCK","","USART2_CTS/USART2_NSS","","","","","FMC_CLK","DCMI_D5/PSSI_D5","","EVENTOUT"
"85","PD4","I/O","","","","","","","","","","USART2_DE/USART2_RTS","","","OCTOSPI1_IO4","","FMC_NOE","","","EVENTOUT"
"86","PD5","I/O","","","","TIM1_CH4N","","","","SPI2_RDY","","USART2_TX","","FDCAN1_TX","OCTOSPI1_IO5","","FMC_NWE","","","EVENTOUT"
"87","PD6","I/O","","","","","SAI1_D1","","","I2S3_SDO/SPI3_MOSI","SAI1_SD_A","USART2_RX","","","OCTOSPI1_IO6","","FMC_NWAIT","DCMI_D10/PSSI_D10","","EVENTOUT"
"88","PD7","I/O","","","","","","","","I2S1_SDO/SPI1_MOSI","","USART2_CK","","","OCTOSPI1_IO7","","FMC_NCE/FMC_NE1","","LPTIM4_OUT","EVENTOUT"
"89","PB3(JTDO/TRACESWO)","I/O","","","DEBUG_JTDO-SWO","TIM2_CH2","","","I2C2_SDA","I2S1_CK/SPI1_SCK","I2S3_CK/SPI3_SCK","UART12_CTS","SPI6_SCK","","CRS_SYNC","UART7_RX","","","LPTIM6_ETR","EVENTOUT"
"90","PB4(NJTRST)","I/O","","","DEBUG_NJTRST","TIM16_BKIN","TIM3_CH1","OCTOSPI1_CLK","LPTIM1_CH2","I2S1_SDI/SPI1_MISO","I2S3_SDI/SPI3_MISO","I2S2_WS/SPI2_NSS","SPI6_MISO","","","UART7_TX","","DCMI_D7/PSSI_D7","","EVENTOUT"
"91","PB5","I/O","","","","TIM17_BKIN","TIM3_CH2","OCTOSPI1_NCLK","I2C1_SMBA","I2S1_SDO/SPI1_MOSI","I2C4_SMBA","I2S3_SDO/SPI3_MOSI","SPI6_MOSI","FDCAN2_RX","","ETH_PPS_OUT","FMC_SDCKE1","DCMI_D10/PSSI_D10","UART5_RX","EVENTOUT"
"92","PB6","I/O","","","","TIM16_CH1N","TIM4_CH1","I3C1_SCL","I2C1_SCL","CEC","I2C4_SCL","USART1_TX","LPUART1_TX","FDCAN2_TX","OCTOSPI1_NCS","","FMC_SDNE1","DCMI_D5/PSSI_D5","UART5_TX","EVENTOUT"
"93","PB7","I/O","","","","TIM17_CH1N","TIM4_CH2","I3C1_SDA","I2C1_SDA","","I2C4_SDA","USART1_RX","LPUART1_RX","FDCAN1_TX","","","FMC_NL","DCMI_VSYNC/PSSI_RDY","","EVENTOUT"
"94","BOOT0","Boot","","","","","","","","","","","","","","","","","",""
"95","PB8","I/O","","","","TIM16_CH1","TIM4_CH3","I3C1_SCL","I2C1_SCL","SPI4_RDY","I2C4_SCL","SDMMC1_CKIN","UART4_RX","FDCAN1_RX","","ETH_TXD3","SDMMC1_D4","DCMI_D6/PSSI_D6","","EVENTOUT"
"96","PB9","I/O","","","","TIM17_CH1","TIM4_CH4","I3C1_SDA","I2C1_SDA","I2S2_WS/SPI2_NSS","I2C4_SDA","SDMMC1_CDIR","UART4_TX","FDCAN1_TX","","","SDMMC1_D5","DCMI_D7/PSSI_D7","","EVENTOUT"
"97","PE0","I/O","","","","LPTIM1_ETR","TIM4_ETR","LPTIM2_CH2","LPTIM2_ETR","","SPI3_RDY","","UART8_RX","FDCAN1_RX","SAI2_MCLK_A","","FMC_NBL0","DCMI_D2/PSSI_D2","","EVENTOUT"
"98","VCAP","Power","","","","","","","","","","","","","","","","","",""
"99","VSS","Power","","","","","","","","","","","","","","","","","",""
"100","VDD","Power","","","","","","","","","","","","","","","","","",""
В идеале ваша прога должна эти csv понимать...

Re: Простой универсальный MCUCube

Добавлено: Ср сен 02, 2026 12:31:19
Zikon
silentsin писал(а): Ср сен 02, 2026 06:23:27 К тому же я сказал, что прога - универсальна, в ней можно завести любой stm/pic/wch совместимый MCU.
Немного непонятно как описывать чипы с AF функциями на каждый пин.
Для примера было-бы неплохо внести несколько чипов типа STM32C011F6T6, STM32G031F6T6
где управление ремапингом осуществляется через AF

Re: Простой универсальный MCUCube

Добавлено: Ср сен 02, 2026 13:30:25
veso74
Время назад использовал STM32Cube, HAL. CubeMX -> генерация начального кода с установленными выводами, настройка AF-функций, а также remapping (CTRL + кнопки миши) показались полезными, наряду с сокращением времени на начальную настройку МК. Даже не приходилось открывать документацию MK - информации в CubeMX было достаточно.

Промежуточный период: CubeMX + SPL (32Fxxx). Через некоторое время: HAL, SPL больше не пользую (a CMSIS). Документация всегда открыта снизу (Datasheet + Reference manual + ...), нет необходимости в автоматизации (+ в CMSIS каждое решение, проект получается намного "чище"). + (почти) не имеет значения, на какой МК пишете: STM32, CH32, APM32, GD32 ...

Возможно, программа будет полезна для начинающих. Но имеем в виду: документация МК понадобится на более позднем этапе. Таким образом, программа дублирует программные решения (STM32CubeMX ... GD32 есть конфигуратор?), и как для следующего этапа: излишняя. Но проект интересный - интерфейс понятен с первого же запуска. (частично использую переводчик)

Re: Простой универсальный MCUCube

Добавлено: Ср сен 02, 2026 18:37:07
Zikon
NSING (Nations) - в этом году выпустила свои N32Cube
простенькие приложения для некоторых основных семейств чипов
и отслеживание конфликтов тоже есть
генерация кода для Keil, IAR на основе своей библиотеки ( подобие STL от STM32 )
даже для младшего семейства N32G030/G031/G032 тоже есть

пример распиновки N32G032K8L7

1. для 6х UART + CAN + SPI + I2C - комуникационный хаб

2. CAN + UART + TIM1 (3x2) + TIM8 (3x2)

Re: Простой универсальный MCUCube

Добавлено: Пт сен 04, 2026 06:47:50
silentsin
Если используете только перечисленное, то ладно, но у меня порой целый зоопарк, и содержать для них такой же зоопарк софта немного напрягает, нынче гигабайты стоят, как чугунный мост... Я просто сделал универсальный менеджер конфликтов для любого MCU, даже ноги обзывайте, как в даташите. Просто и наглядно. Насчет кода... мне генерация кода от косого STMCube совершенно не нужна, упоминал же, у меня все в отдельных библиотеках. Последнее время пошли заказы на CH32. Хотя они уже дорожают на глазах и брака (целыми партиями) много, китайцы их не уничтожили, пытаются впарить лаоваям...

Вот примерно так выглядят проекты и сгенерированный код просто не нужен. все давно уже есть...
test_mpx033.png
Структура типичного проекта
(28.3 КБ) 12 скачиваний
Вот так выглядит результат:
examA.png
(173.43 КБ) 15 скачиваний
examB.jpg
(54.04 КБ) 13 скачиваний
Вы не поверите, но на картинке CH32V003A4M6, 16-ногий малыш, в котором нет даже аппаратного SPI...

Re: Простой универсальный MCUCube

Добавлено: Пт сен 04, 2026 06:58:05
silentsin
Возьмите файлы из папки "Config", переведите их google-переводчиком на болгарский и будем Вам счастье. Спасибо.

Re: Простой универсальный MCUCube

Добавлено: Пт сен 04, 2026 07:10:41
silentsin
Уясните для себя схему: пин - это "железо", порт - это логическая сущность на пине, их может быть несколько. Пины есть для размещения портов, без портов (питание к примеру или специальные) и выделенные "системные", которые могут уживаться с логическими на одном физическом пине. Что касается ремапов. Порты принадлежат конкретному оборудованию. В редакторе контроллеров вы открываете существующий или заводите новый проект. Затем описываете физические и системные пины.
exam0.png
(75.61 КБ) 9 скачиваний
Затем начинаете добавлять модули периферии. В настройках модуля вы выбираете номер ремапа (из существующих, там имена на любой вкус), выбираете доступные для данной схемы выводы (их функциональные имена - I2C1_SDA, к примеру) и их "хозяина" - логический порт. Все схемы ремапа одного модуля хранятся внутри модуля. Кстати, можно копировать и вставлять целую схему. На пикче примерно то, о чем я сейчас говорил:
exam1.png
(67 КБ) 9 скачиваний
Откройте любой проект из папки "Data" и посмотрите как описано оборудование, там вроде понятно все. Да, ICSP - это тоже модуль), а также набор просто портов (типа PA1, PE7) - для того, чтобы повесить на них простые функции: светодиод к примеру.

Главное - это понять, пин должен быть системным или входить в специальный модуль, который объединит их в группы. Системные пины активируются отдельно от всех остальных модулей периферии.
exam2.png
(75.87 КБ) 9 скачиваний

Re: Простой универсальный MCUCube

Добавлено: Пт сен 04, 2026 07:56:11
silentsin
Ага, только у вас самый большой корпус - это LQFP32
Кто мешает сделать свой? Я просто отдал то, что наработал за месяц, пока делал эту программу.
Да, я сталкивался с выводом STM-ского софта. Недаром я назвал его косым, это не для людей
предназначено. Ладно, добавлю парсер, как будет время.

ЗЫ Собственно, идеология моей проги состоит в том, что переключается в альтернативную схему не отдельный пин, (ага, попереключай их, если там сотня), а сам модуль, именно так делается вменяемыми производителями. Схемы становятся короткими и понятными.

Re: Простой универсальный MCUCube

Добавлено: Пт сен 04, 2026 08:50:00
Zikon
Так вот интересно
программа ориентирована на
REMAP группы как в CH32V
а если каждяый порт можно настроить на определённую функцию ?
как во многих чипах сейчас есть

Вот напрмер PY32F030K28T6 lqfp32

PY32F030K28T6 - lqfp32
USART1 - порты можно ремапить каждый по отдельности
CTS PA0,PA11,PB4
RTS PA1,PA12,PB3
TX PA2,PA7,PA9,PA10,PA14,PB6,PF1,PF3
RX PA3,PA8,PA9,PA10,PA13,PA15,PB2,PB7,PF0
CK PA4,PA6,PA8,PB5

и так все модули USART2, SPI1, SPI2, I2C, TIM1,TIM3, ....

Re: Простой универсальный MCUCube

Добавлено: Пт сен 04, 2026 08:59:43
Zikon
silentsin писал(а): Пт сен 04, 2026 06:47:50 Вы не поверите, но на картинке CH32V003A4M6, 16-ногий малыш, в котором нет даже аппаратного SPI...
Аппаратный SPI есть
только один основной сигнал не выведен на пины - SCK

есть другие малыши PY32 и дешевле
PY32F002AL15S6 - so8
PY32F002AW15S6 - so16
PY32F002AW15U6 - qfn16

SPI1 есть оффициально
и "плюшка" SPI2 от PY32F030
( в so8 - SPI2 - неполный )

Re: Простой универсальный MCUCube

Добавлено: Пт сен 04, 2026 09:31:27
Adrift
silentsin писал(а): Пт сен 04, 2026 07:56:11Кто мешает сделать свой? Я просто отдал то, что наработал за месяц, пока делал эту программу.
Какие самые популярные платы с STM32? Всякие Blue/Black Pill с мк в 48-ми ногих корпусах, которые в вашей проге нужно добавлять самому. Сам добавлять станет редкий энтузиаст, большинство посмотри что нет ни ходовых корпусов, ни мк и на этом его знакомство с программой закончится.
silentsin писал(а):Собственно, идеология моей проги состоит в том, что переключается в альтернативную схему не отдельный пин, (ага, попереключай их, если там сотня), а сам модуль, именно так делается вменяемыми производителями. Схемы становятся короткими и понятными.
Берем 32-х пиновый STM32C531, для SPI1 там доступны следующие ремапы:

Код: Выделить всё

NSS  PA4/PA15/PB8
SCK  PA5/PB3/PB7
MISO PA6/PB0/PB4/PB6
MOSI PA4/PA7/PB5/PB15
Какие группы предлагаете сделать? Допустим первая группа: PA4/PA5/PA6/PA7... Помимо прочей периферии, на PA4 дополнительно висит DAC1_OUT1, на PA5 - DAC1_OUT2, на PA6 - OPAMP_VOUT и на PA7 - SPI2_MISO, причем все это существует в единственном экземпляре. Если нужен DAC1_OUT1, то заремапить на другой AF нужно только NSS, а если нужен OPAMP_VOUT, то только MISO. Для одного SPI1 будет 144 группы, они тут явно не лучшее решение, просто вы имеет дело с простыми мк у которых мало периферии, вам и прога такая самому не особо нужна, а представьте 100 ногий мк у которого 4 SPI, десяток UART, FMC, LTDC, OSPI, SDMMC, DCMI и таймеров штук 20... Понадобится LTDC в режиме RGB666 и это 18 ног только под цвета, где у каждого пина будет в среднем по парочке ремапов и все это пересекается с другой периферией.

Re: Простой универсальный MCUCube

Добавлено: Пт сен 04, 2026 10:36:22
Zikon
Adrift писал(а): Пт сен 04, 2026 09:31:27 Какие самые популярные платы с STM32? Всякие Blue/Black Pill с мк в 48-ми ногих корпусах, которые в вашей проге нужно добавлять самому. Сам добавлять станет редкий энтузиаст, большинство посмотри что нет ни ходовых корпусов, ни мк и на этом его знакомство с программой закончится.
Вот точно - можно вообще сразу добавить платы
BluePill / BlackPill

только вот в STM32F103CxT6 - там групповой REMAP
( как и в программе сделан и в CH32V - также )
а вот в STM32F401/F411 - там уже AF0-AF15
на каждый порт настраиваем по отдельности

Re: Простой универсальный MCUCube

Добавлено: Пт сен 04, 2026 22:13:02
silentsin
Adrift писал(а): Пт сен 04, 2026 09:31:27 Какие группы предлагаете сделать?
Каюсь, сначала не вник. Да, попиновый кросс - это самое хреновое, что могли придумать... Это мое мнение. Я уже говорил, что идеология моего приложения - это полный ремап модуля периферии. Что ж, вняв упрекам, хотя и не должен был... ребята - это не комбайн, это профессиональный ускоспециализированный софт для конкретной цели... добавил в софтину ваш обожаемый попиновый ремап. Это немного затруднит понимание процесса, но я тоже предупреждал - чтобы им пользоваться, желательно иметь кругозор и смекалку. Здесь один товарищ выложил CSV с вывода STMCube и я его использовал для проверки результата. На все 100% не уверен в отсутствии багов НОВОЙ версии приложения, но если найдете что-то не то, пишите.

В векторном редакторе теперь разрешено зумить колесиком мыши, ибо большому корпусу большая... сами знаете чего.
В списке архитектур появился STM_Test (это тот самый тестовый MCU) и корпус LQFP100.

И последнее... упреки о том, что мало корпусов, мало контроллеров и прочее подобное же... не принимаю. Причину объяснить?

Изображение
MCUCube.zip
Версия с поддержкой попинового кросса
(229.76 КБ) 11 скачиваний
И да, последнее, в редакторе MCU в меню файл появился пункт "Загрузить STM CSV". Это импорт плоского файла архитектуры MCU, не обязательно STM и не обязательно с попиновым кроссом. Просто используйте его схему (она в заголовке) и вписывайте пины и порты нужного контроллера.

Re: Простой универсальный MCUCube

Добавлено: Пт сен 04, 2026 22:18:11
veso74
silentsin, разместите названия функций в иконках как обычная программа Windows. А так ужасно - не хочется ждать и читать ниже, что к чему.
(Лично нет шансов для дальнейшего использования с этого программного интерфейса :/ -> "видел-попробовал-забыл").

Re: Простой универсальный MCUCube

Добавлено: Пт сен 04, 2026 22:23:42
silentsin
veso74 писал(а): Пт сен 04, 2026 22:18:11 silentsin, разместите названия функций
Охх... производителям "фотошопа" тоже условия ставите?))) Разместить текст на кнопках? Зачем он вам? На второй раз он вам просто не будет нужен, когда поймете назначение. Глифа вполне достаточно я считаю...

Re: Простой универсальный MCUCube

Добавлено: Пт сен 04, 2026 22:25:30
veso74
Прежде чем нажать кнопку, хочу увидеть, что это такое. И не запоминать иконки, а увидеть функции (не дожидаясь появления текста).

(Нужны комментарии софта? Написал коментар интерфейса с добрыми чувствами).
(На мой взгляд, это программное обеспечение бесполезно - одного/двух файлов из документации достаточно! - STM32, CH32, APM32, GD32 -> Table: pin definitions + Table: alternate function mapping). Со временем собрал множество подобных программ, + файлов Excel, даже с генераторами кода. Видим "калкулятор", сохраняем "на будущее"... А через день-месяць: забываем об этом. В будущем остается: взгляд только на оригинальную документацию использованный МК).
СпойлерИзображение

Re: Простой универсальный MCUCube

Добавлено: Пт сен 04, 2026 23:19:50
silentsin
veso74 писал(а): Пт сен 04, 2026 22:25:30 Прежде чем нажать кнопку, хочу увидеть, что это такое.
Ок... Добавил главное меню в первую форму. Специально для вас.
MCUCube.zip
Версия с меню
(243.74 КБ) 8 скачиваний