; -------------------------------------------------------------------------------- ; @Title: STM32F4x Specific Menu ; @Props: Released ; @Author: LSD, GAJ, MHM ; @Changelog: 2016-07-26 GAJ ; 2017-05-22 MHM ; @Manufacturer: STM - ST Microelectronics N.V. ; @Core: Cortex-M4 ; @Chip: STM32F401CD, STM32F401CE, STM32F401RD, STM32F401RE ; STM32F401VD, STM32F401VE, STM32F410C8, STM32F410CB ; STM32F410R8, STM32F410RB, STM32F410T8, STM32F410TB ; STM32F411CC, STM32F411CE, STM32F411RC, STM32F411RE ; STM32F411VC, STM32F411VE, STM32F412CE, STM32F412CG ; STM32F412RE, STM32F412RG, STM32F412VE, STM32F412VG ; STM32F412ZE, STM32F412ZG, STM32F413CG, STM32F413CH ; STM32F413MG, STM32F413MH, STM32F413RG, STM32F413RH ; STM32F413VG, STM32F413VH, STM32F413ZG, STM32F413ZH ; STM32F423CH, STM32F423MH, STM32F423RH, STM32F423VH ; STM32F423ZH, STM32F427AG, STM32F427AI, STM32F429AG ; STM32F429AI, STM32F429BE, STM32F429IE, STM32F429NE ; STM32F429VE, STM32F429ZE, STM32F437AI, STM32F439AI ; STM32F446MC, STM32F446ME, STM32F446RC, STM32F446RE ; STM32F446VC, STM32F446VE, STM32F446ZC, STM32F446ZE ; STM32F469AE, STM32F469AG, STM32F469AI, STM32F469BE ; STM32F469BG, STM32F469BI, STM32F469IE, STM32F469IG ; STM32F469II, STM32F469NE, STM32F469NG, STM32F469NI ; STM32F469VE, STM32F469VG, STM32F469VI, STM32F469ZE ; STM32F469ZG, STM32F469ZI, STM32F479AG, STM32F479AI ; STM32F479BG, STM32F479BI, STM32F479IG, STM32F479II ; STM32F479NG, STM32F479NI, STM32F479VG, STM32F479VI ; STM32F479ZG, STM32F479ZI ; @Copyright: (C) 1989-2017 Lauterbach GmbH, licensed for use with TRACE32(R) only ; -------------------------------------------------------------------------------- ; $Id: menstm32f4x.men 16339 2023-07-03 13:30:14Z pegold $ add menu ( IF SOFTWARE.BUILD.BASE()>=69655. ( popup "&CPU" ( separator IF CPU.FEATURE(MMU) ( popup "[:mmu]MMU" ( menuitem "[:mmureg]MMU Control" "MMU.view" separator menuitem "[:mmu]MMU Table Dump" "MMU.DUMP.PageTable" menuitem "[:mmu]MMU Table List" "MMU.List.PageTable" separator IF CPU.FEATURE(ITLBDUMP) ( menuitem "[:mmu]ITLB Dump" "MMU.DUMP.ITLB" ) IF CPU.FEATURE(DTLBDUMP) ( menuitem "[:mmu]DTLB Dump" "MMU.DUMP.DTLB" ) IF CPU.FEATURE(TLB0DUMP) ( menuitem "[:mmu]TLB0 Dump (Associative)" "MMU.DUMP.TLB0" ) IF CPU.FEATURE(TLB1DUMP) ( menuitem "[:mmu]TLB1 Dump (Lockable)" "MMU.DUMP.TLB1" ) ) ) IF COMPonent.AVAILable("SMMU") ( popup "[:mmu]SMMU" ( menuitem "[:chip]SMMU1 Registers" ( PRIVATE &name &name=SMMU.COMPonentNAME(COMPonent.Base("SMMU1",0.)) SMMU.Register.Global &(name) ) menuitem "[:mmureg]SMMU1 StreamMapTable" ( PRIVATE &name &name=SMMU.COMPonentNAME(COMPonent.Base("SMMU1",0.)) SMMU.StreamMapTable &(name) ) IF COMPonent.AVAILable("SMMU2") ( separator menuitem "[:chip]SMMU2 Registers" ( PRIVATE &name &name=SMMU.COMPonentNAME(COMPonent.Base("SMMU2",0.)) SMMU.Register.Global &(name) ) menuitem "[:mmureg]SMMU2 StreamMapTable" ( PRIVATE &name &name=SMMU.COMPonentNAME(COMPonent.Base("SMMU2",0.)) SMMU.StreamMapTable &(name) ) ) IF COMPonent.AVAILable("SMMU3") ( separator menuitem "[:chip]SMMU3 Registers" ( PRIVATE &name &name=SMMU.COMPonentNAME(COMPonent.Base("SMMU3",0.)) SMMU.Register.Global &(name) ) menuitem "[:mmureg]SMMU3 StreamMapTable" ( PRIVATE &name &name=SMMU.COMPonentNAME(COMPonent.Base("SMMU3",0.)) SMMU.StreamMapTable &(name) ) ) IF COMPonent.AVAILable("SMMU4") ( separator menuitem "[:chip]SMMU4 Registers" ( PRIVATE &name &name=SMMU.COMPonentNAME(COMPonent.Base("SMMU4",0.)) SMMU.Register.Global &(name) ) menuitem "[:mmureg]SMMU4 StreamMapTable" ( PRIVATE &name &name=SMMU.COMPonentNAME(COMPonent.Base("SMMU4",0.)) SMMU.StreamMapTable &(name) ) ) IF COMPonent.AVAILable("SMMU5") ( separator menuitem "[:chip]SMMU5 Registers" ( PRIVATE &name &name=SMMU.COMPonentNAME(COMPonent.Base("SMMU5",0.)) SMMU.Register.Global &(name) ) menuitem "[:mmureg]SMMU5 StreamMapTable" ( PRIVATE &name &name=SMMU.COMPonentNAME(COMPonent.Base("SMMU5",0.)) SMMU.StreamMapTable &(name) ) ) IF COMPonent.AVAILable("SMMU6") ( separator menuitem "[:chip]SMMU6 Registers" ( PRIVATE &name &name=SMMU.COMPonentNAME(COMPonent.Base("SMMU6",0.)) SMMU.Register.Global &(name) ) menuitem "[:mmureg]SMMU6 StreamMapTable" ( PRIVATE &name &name=SMMU.COMPonentNAME(COMPonent.Base("SMMU6",0.)) SMMU.StreamMapTable &(name) ) ) ) ) IF CPU.FEATURE(L1ICACHE)||CPU.FEATURE(L1DCACHE)||CPU.FEATURE(L2CACHE) ( popup "[:cache]Cache" ( IF CPU.FEATURE(L1ICACHEDUMP) ( menuitem "[:cache]ICACHE Dump" "CACHE.DUMP IC" menuitem "[:cache]ICACHE List" "CACHE.List IC" menuitem "[:cache]ICACHE List Functions" "CACHE.ListFunc.IC" ) IF CPU.FEATURE(L1DCACHEDUMP) ( separator menuitem "[:cache]DCACHE Dump" "CACHE.DUMP DC" menuitem "[:cache]DCACHE List" "CACHE.List DC" menuitem "[:cache]DCACHE List Variables" "CACHE.ListVar.DC" ) IF CPU.FEATURE(L2CACHEDUMP) ( separator menuitem "[:cache]L2CACHE Dump" "CACHE.DUMP L2" menuitem "[:cache]L2CACHE List" "CACHE.List L2" menuitem "[:cache]L2CACHE List Variables" "CACHE.ListVar.L2" ) ) ) ) popup "&Trace" ( separator IF COMPonent.AVAILable("ITM") ( popup "ITM" ( default menuitem "[:oconfig]ITM settings..." "ITM.state" separator menuitem "[:alist]ITMTrace List" "ITMTrace.List" ) ) IF COMPonent.AVAILable("STM") ( popup "STM" ( default menuitem "[:oconfig]STM settings..." "STM.state" separator menuitem "[:alist]STMTrace List" "STMTrace.List" ) ) IF COMPonent.AVAILable("HTM") ( popup "HTM" ( default menuitem "[:oconfig]HTM settings..." "HTM.state" separator menuitem "[:alist]HTMTrace List" "HTMTrace.List" ) ) IF COMPonent.AVAILable("TPIU") ( menuitem "[:oconfig]TPIU settings..." "TPIU.state" ) IF COMPonent.AVAILable("ETR") ( menuitem "[:oconfig]ETR settings..." ( PRIVATE &pdd &pdd=OS.PDD() DO "&pdd/etc/embedded_trace_router/etr_utility.cmm" ) ) ) popup "&Misc" ( popup "Tools" ( IF CPUIS64BIT()||CPU.FEATURE("SPR") ( menuitem "ARM System Register Converter" ( DO "~~/demo/arm/etc/systemregister/systemregister_converter.cmm" ) ) IF CPU.FEATURE("C15") ( menuitem "ARM Coprocessor Converter" ( DO "~~/demo/arm/etc/coprocessor/coprocessor_converter.cmm" ) ) ) ) popup "&Perf" ( IF CPU.FEATURE(BMC) ( before "Reset" menuitem "[:bmc]Benchmark Counters" "BMC.state" before "Reset" separator ) ) ) popup "Peripherals" ( popup "[:chip]Core Registers (Cortex-M4F)" ( menuitem "[:chip]System Control" "per , ""Core Registers (Cortex-M4F),System Control""" menuitem "[:chip]MPU;Memory Protection Unit" "per , ""Core Registers (Cortex-M4F),Memory Protection Unit""" menuitem "[:chip]NVIC;Nested Vectored Interrupt Controller" "per , ""Core Registers (Cortex-M4F),Nested Vectored Interrupt Controller""" menuitem "[:chip]FPU;Floating-point Unit" "per , ""Core Registers (Cortex-M4F),Floating-point Unit""" popup "[:chip]Debug" ( menuitem "[:chip]Core Debug" "per , ""Core Registers (Cortex-M4F),Debug,Core Debug""" menuitem "[:chip]FPB;Flash Patch and Breakpoint Unit" "per , ""Core Registers (Cortex-M4F),Debug,Flash Patch and Breakpoint Unit (FPB)""" menuitem "[:chip]DWT;Data Watchpoint and Trace Unit" "per , ""Core Registers (Cortex-M4F),Debug,Data Watchpoint and Trace Unit (DWT)""" ) ) separator menuitem "FMI" "per , ""FMI (Flash Memory Interface)""" menuitem "CRC" "per , ""CRC (Cyclic Redundancy Check)""" menuitem "PWR_CR" "per , ""PWR_CR (Power Control Register)""" menuitem "RCC" "per , ""RCC (Reset and Clock Control)""" popup "GPIO" ( menuitem "GPIO A" "per , ""GPIO (General Purpose I/O),GPIO A""" menuitem "GPIO B" "per , ""GPIO (General Purpose I/O),GPIO B""" menuitem "GPIO C" "per , ""GPIO (General Purpose I/O),GPIO C""" if !cpuis("STM32F401C*")&&!cpuis("STM32F411C*")&&!cpuis("STM32F410*") ( menuitem "GPIO D" "per , ""GPIO (General Purpose I/O),GPIO D""" ) if !cpuis("STM32F401C*")&&!cpuis("STM32F411C*")&&!cpuis("STM32F401R*")&&!cpuis("STM32F411R*")&&!cpuis("STM32F446R*")&&!cpuis("STM32F405R*")&&!cpuis("STM32F415R*")&&!cpuis("STM32F410*")&&!cpuis("STM32F413C*")&&!cpuis("STM32F413R*")&&(cpu()!="STM32F423CH")&&(cpu()!="STM32F423RH")&&!cpuis("STM32F412C*")&&!cpuis("STM32F412R*") ( menuitem "GPIO E" "per , ""GPIO (General Purpose I/O),GPIO E""" ) if cpuis("STM32F446Z*")||cpuis("STM32F405Z*")||cpuis("STM32F407Z*")||cpuis("STM32F415Z*")||cpuis("STM32F417Z*")||cpuis("STM32F427Z*")||cpuis("STM32F429Z*")||cpuis("STM32F437Z*")||cpuis("STM32F439Z*")||cpuis("STM32F469Z*")||cpuis("STM32F479Z*")||cpuis("STM32F427A*")||cpuis("STM32F429A*")||cpuis("STM32F437A*")||cpuis("STM32F439A*")||cpuis("STM32F469A*")||cpuis("STM32F479A*")||cpuis("STM32F407I*")||cpuis("STM32F417I*")||cpuis("STM32F427I*")||cpuis("STM32F429I*")||cpuis("STM32F437I*")||cpuis("STM32F439I*")||cpuis("STM32F469I*")||cpuis("STM32F479I*")||cpuis("STM32F429B*")||cpuis("STM32F429N*")||cpuis("STM32F439B*")||cpuis("STM32F439N*")||cpuis("STM32F469B*")||cpuis("STM32F469N*")||cpuis("STM32F479B*")||cpuis("STM32F479N*")||cpuis("STM32F413Z*")||cpu()=="STM32F423ZH"||cpuis("STM32F412Z*") ( menuitem "GPIO F" "per , ""GPIO (General Purpose I/O),GPIO F""" ) if cpuis("STM32F446Z*")||cpuis("STM32F405Z*")||cpuis("STM32F407Z*")||cpuis("STM32F415Z*")||cpuis("STM32F417Z*")||cpuis("STM32F427Z*")||cpuis("STM32F429Z*")||cpuis("STM32F437Z*")||cpuis("STM32F439Z*")||cpuis("STM32F469Z*")||cpuis("STM32F479Z*")||cpuis("STM32F427A*")||cpuis("STM32F429A*")||cpuis("STM32F437A*")||cpuis("STM32F439A*")||cpuis("STM32F469A*")||cpuis("STM32F479A*")||cpuis("STM32F407I*")||cpuis("STM32F417I*")||cpuis("STM32F427I*")||cpuis("STM32F429I*")||cpuis("STM32F437I*")||cpuis("STM32F439I*")||cpuis("STM32F469I*")||cpuis("STM32F479I*")||cpuis("STM32F429B*")||cpuis("STM32F429N*")||cpuis("STM32F439B*")||cpuis("STM32F439N*")||cpuis("STM32F469B*")||cpuis("STM32F469N*")||cpuis("STM32F479B*")||cpuis("STM32F479N*")||cpuis("STM32F413Z*")||cpu()=="STM32F423ZH"||cpuis("STM32F412Z*") ( menuitem "GPIO G" "per , ""GPIO (General Purpose I/O),GPIO G""" ) menuitem "GPIO H" "per , ""GPIO (General Purpose I/O),GPIO H""" if cpuis("STM32F405O*")||(cpuis("STM32F415O*"))||cpuis("STM32F427A*")||cpuis("STM32F429A*")||cpuis("STM32F437A*")||cpuis("STM32F439A*")||cpuis("STM32F469A*")||cpuis("STM32F479A*")||cpuis("STM32F407I*")||cpuis("STM32F417I*")||cpuis("STM32F427I*")||cpuis("STM32F429I*")||cpuis("STM32F437I*")||cpuis("STM32F439I*")||cpuis("STM32F469I*")||cpuis("STM32F479I*")||cpuis("STM32F429B*")||cpuis("STM32F429N*")||cpuis("STM32F439B*")||cpuis("STM32F439N*")||cpuis("STM32F469B*")||cpuis("STM32F469N*")||cpuis("STM32F479B*")||cpuis("STM32F479N*")&&!cpuis("STM32F401CD")&&!cpuis("STM32F401CE")||cpuis("STM32F427A?") ( menuitem "GPIO I" "per , ""GPIO (General Purpose I/O),GPIO I""" ) if cpuis("STM32F429B?")||cpuis("STM32F429N?")||cpuis("STM32F439B?")||cpuis("STM32F439N?")||cpuis("STM32F469B*")||cpuis("STM32F479B*")||cpuis("STM32F469N*")||cpuis("STM32F479N*")&&!cpuis("STM32F401CD")&&!cpuis("STM32F401CE") ( menuitem "GPIO J" "per , ""GPIO (General Purpose I/O),GPIO J""" ) if cpuis("STM32F429B?")||cpuis("STM32F429N?")||cpuis("STM32F439B?")||cpuis("STM32F439N?")||cpuis("STM32F469B*")||cpuis("STM32F479B*")||cpuis("STM32F469N*")||cpuis("STM32F479N*")&&!cpuis("STM32F401CD")&&!cpuis("STM32F401CE") ( menuitem "GPIO K" "per , ""GPIO (General Purpose I/O),GPIO K""" ) ) menuitem "SYSCFG" "per , ""SYSCFG (System Configuration Controller)""" popup "DMAC" ( menuitem "DMA 1" "per , ""DMAC (DMA Controller),DMA 1""" menuitem "DMA 2" "per , ""DMAC (DMA Controller),DMA 2""" ) if (cpuis("STM32F42*")&&!cpuis("STM32F423?H"))||cpuis("STM32F43*")||cpuis("STM32F469*")||cpuis("STM32F479*") ( menuitem "DMA2D" "per , ""DMA2D (Chrom-Art Accelerator Controller)""" ) menuitem "EXTI" "per , ""EXTI (External Interrupt/Event Controller)""" if ((cpuis("STM32F42*")&&cpuis("STM32F423?H"))||cpuis("STM32F43*")||cpuis("STM32F446V?")||cpuis("STM32F446Z?")||cpuis("STM32F469*")||cpuis("STM32F479*")) ( menuitem "FMC" "per , ""FMC (Flexible Memory Controller)""" ) else if (cpu()!="STM32F405RG")&&(cpu()!="STM32F415RG")&&(!cpuis("STM32F401*"))&&(!cpuis("STM32F411*"))&&!cpuis("STM32F446M*")&&!cpuis("STM32F446R*")&&!cpuis("STM32F410*")&&!cpuis("STM32F412C*")&&!cpuis("STM32F412R*")&&!cpuis("STM32F413C*")&&!cpuis("STM32F413R*")&&!cpuis("STM32F413M*")&&(cpu()!="STM32F423CH")&&(cpu()!="STM32F423RH")&&(cpu()!="STM32F423MH") ( menuitem "FSMC" "per , ""FSMC (Flexible Static Memory Controller)""" ) if (cpuis("STM32F446*")||cpuis("STM32F469*")||cpuis("STM32F479*"))||(cpuis("STM32F412*")&&!cpuis("STM32F412C*"))||(cpuis("STM32F413*")&&!cpuis("STM32F413C*"))||(cpuis("STM32F423?H")&&!(cpu()=="STM32F423CH")) ( menuitem "QUADSPI" "per , ""QUADSPI (QuadSPI)""" ) popup "ADC" ( menuitem "Common" "per , ""ADC (Analog/Digital Converter),Common Registers""" if cpuis("STM32F469*")||cpuis("STM32F479*") ( menuitem "ADC 1" "per , ""ADC (Analog/Digital Converter),ADC 1""" menuitem "ADC 2" "per , ""ADC (Analog/Digital Converter),ADC 2""" menuitem "ADC 3" "per , ""ADC (Analog/Digital Converter),ADC 3""" ) else ( menuitem "ADC 1" "per , ""ADC (Analog/Digital Converter),ADC 1""" if !cpuis("STM32F401*")&&!cpuis("STM32F411*")&&!cpuis("STM32F410*")&&!cpuis("STM32F412*")&&!cpuis("STM32F413*")&&!cpuis("STM32F423?H") ( menuitem "ADC 2" "per , ""ADC (Analog/Digital Converter),ADC 2""" if !cpuis("STM32F446M?")&&!cpuis("STM32F446R?")&&!cpuis("STM32F446V?") ( menuitem "ADC 3" "per , ""ADC (Analog/Digital Converter),ADC 3""" ) ) ) ) if (!cpuis("STM32F401*")&&!cpuis("STM32F411*")&&!cpuis("STM32F412*")) ( menuitem "DAC" "per , ""DAC (Digital-to-Analog Converter)""" ) if (cpuis("STM32F407*")||cpuis("STM32F417*")||cpuis("STM32F427*")||cpuis("STM32F429*")||cpuis("STM32F437*")||cpuis("STM32F439*")||cpuis("STM32F446*")||cpuis("STM32F469*")||cpuis("STM32F479*")) ( menuitem "DCMI" "per , ""DCMI (Digital Camera Interface)""" ) if (cpuis("STM32F429*")||cpuis("STM32F439*")||cpuis("STM32F469*")||cpuis("STM32F479*")) ( menuitem "LCD-TFT" "per , ""LCD-TFT (LCD-TFT Controller)""" ) if cpuis("STM32F412*")||cpuis("STM32F413*")||cpuis("STM32F423?H") ( popup "DFSDM" ( menuitem "DFSDM1" "per , ""DFSDM (Digital Filter For Sigma Delta Modulators),DFSDM1""" if cpuis("STM32F413*")||cpuis("STM32F423?H") ( menuitem "DFSDM2" "per , ""DFSDM (Digital Filter For Sigma Delta Modulators),DFSDM2""" ) ) ) if cpuis("STM32F469*")||cpuis("STM32F479*") ( menuitem "DSIHOST" "per , ""DSIHOST (Display Serial Interface)""" ) if (!cpuis("STM32F446*")&&!cpuis("STM32F411*")&&!cpuis("STM32F401*")) ( menuitem "RNG" "per , ""RNG (Random Number Generator)""" ) if cpuis("STM32F415*")||cpuis("STM32F417*")||cpuis("STM32F437*")||cpuis("STM32F439*")||cpuis("STM32F479*") ( menuitem "CRYP" "per , ""CRYP (Cryptographic Processor)""" ) if cpuis("STM32F415*")||cpuis("STM32F417*")||cpuis("STM32F437*")||cpuis("STM32F439*")||cpuis("STM32F479*") ( menuitem "HASH" "per , ""HASH (Hash Processor)""" ) popup "ACT" ( menuitem "TIM 1" "per , ""ACT (Advanced-control Timers),TIM 1""" if !cpuis("STM32F401*")&&!cpuis("STM32F411*")&&!cpuis("STM32F410*") ( menuitem "TIM 8" "per , ""ACT (Advanced-control Timers),TIM 8""" ) ) popup "GPT" ( if !cpuis("STM32F410*") ( menuitem "TIM 2" "per , ""GPT (General-purpose Timers),TIM 2""" menuitem "TIM 3" "per , ""GPT (General-purpose Timers),TIM 3""" menuitem "TIM 4" "per , ""GPT (General-purpose Timers),TIM 4""" ) menuitem "TIM 5" "per , ""GPT (General-purpose Timers),TIM 5""" menuitem "TIM 9" "per , ""GPT (General-purpose Timers),TIM 9""" if !cpuis("STM32F410*") ( menuitem "TIM 10" "per , ""GPT (General-purpose Timers),TIM 10""" ) menuitem "TIM 11" "per , ""GPT (General-purpose Timers),TIM 11""" if !cpuis("STM32F401*")&&!cpuis("STM32F411*")&&!cpuis("STM32F410*") ( menuitem "TIM 12" "per , ""GPT (General-purpose Timers),TIM 12""" menuitem "TIM 13" "per , ""GPT (General-purpose Timers),TIM 13""" menuitem "TIM 14" "per , ""GPT (General-purpose Timers),TIM 14""" ) ) if (!cpuis("STM32F411*")&&!cpuis("STM32F401*")) ( popup "BT" ( menuitem "TIM 6" "per , ""BT (Basic Timers),TIM6""" if !cpuis("STM32F410*") ( menuitem "TIM 7" "per , ""BT (Basic Timers),TIM7""" ) ) ) if cpuis("STM32F410*")||cpuis("STM32F413*")||cpuis("STM32F423?H") ( menuitem "LPTIM" "per , ""LPTIM (Low-power Timer)""" ) menuitem "IWDG" "per , ""IWDG (Independent Watchdog)""" menuitem "WWDG" "per , ""WWDG (Window Watchdog)""" menuitem "RTC" "per , ""RTC (Real-Time Clock)""" if cpuis("STM32F410*")&&!cpuis("STM32F410T*")||cpuis("STM32F412*")||cpuis("STM32F413*")||cpuis("STM32F423?H") ( popup "FMPI2C" ( menuitem "I2CFMP 1" "per , ""FMPI2C (Fast-Mode Plus Inter-Integrated Circuit),I2CFMP 1""" ) ) popup "I2C" ( menuitem "I2C 1" "per , ""I2C (Inter-Integrated Circuit),I2C 1""" menuitem "I2C 2" "per , ""I2C (Inter-Integrated Circuit),I2C 2""" if !cpuis("STM32F410*") ( menuitem "I2C 3" "per , ""I2C (Inter-Integrated Circuit),I2C 3""" ) ) popup "USART" ( menuitem "USART 1" "per , ""USART (Universal Synchronous Asynchronous Receiver Transmitter),USART 1""" menuitem "USART 2" "per , ""USART (Universal Synchronous Asynchronous Receiver Transmitter),USART 2""" menuitem "USART 3" "per , ""USART (Universal Synchronous Asynchronous Receiver Transmitter),USART 3""" if cpuis("STM32F410*")||cpuis("STM32F412*")||cpuis("STM32F413*")||cpuis("STM32F423?H")||cpuis("STM32F469*")||cpuis("STM32F479*") ( if cpuis("STM32F413*")||cpuis("STM32F423?H")||cpuis("STM32F469*")||cpuis("STM32F479*") ( menuitem "UART 4" "per , ""USART (Universal Synchronous Asynchronous Receiver Transmitter),UART 4""" menuitem "UART 5" "per , ""USART (Universal Synchronous Asynchronous Receiver Transmitter),UART 5""" ) if !cpuis("STM32F410T*")&&!cpuis("STM32F412C*")&&!cpuis("STM32F413C*")&&!cpuis("STM32F423CH") ( menuitem "USART 6" "per , ""USART (Universal Synchronous Asynchronous Receiver Transmitter),USART 6""" ) if cpuis("STM32F413*")||cpuis("STM32F423?H")||cpuis("STM32F469*")||cpuis("STM32F479*") ( menuitem "UART 7" "per , ""USART (Universal Synchronous Asynchronous Receiver Transmitter),URT 7""" if cpuis("STM32F413V*")||cpuis("STM32F413Z*")||cpuis("STM32F423VH")||cpuis("STM32F423ZH")||(cpuis("STM32F469*")&&!cpuis("STM32F469V*")&&!cpuis("STM32F469Z*"))||(cpuis("STM32F479*")&&!cpuis("STM32F479V*")&&!cpuis("STM32F479Z*")) ( menuitem "UART 8" "per , ""USART (Universal Synchronous Asynchronous Receiver Transmitter),UART 8""" ) if cpuis("STM32F413V*")||cpuis("STM32F413Z*")||cpuis("STM32F423VH")||cpuis("STM32F423ZH") ( menuitem "USART 9" "per , ""USART (Universal Synchronous Asynchronous Receiver Transmitter),USART 9""" menuitem "USART 10" "per , ""USART (Universal Synchronous Asynchronous Receiver Transmitter),USART 10""" ) ) ) else ( menuitem "UART 4" "per , ""USART (Universal Synchronous Asynchronous Receiver Transmitter),USART 4""" menuitem "UART 5" "per , ""USART (Universal Synchronous Asynchronous Receiver Transmitter),USART 5""" menuitem "USART 6" "per , ""USART (Universal Synchronous Asynchronous Receiver Transmitter),USART 6""" menuitem "UART 7" "per , ""USART (Universal Synchronous Asynchronous Receiver Transmitter),USART 7""" menuitem "UART 8" "per , ""USART (Universal Synchronous Asynchronous Receiver Transmitter),USART 8""" ) ) popup "SPI" ( if cpuis("STM32F410*") ( menuitem "SPI 1/I2S1" "per , ""SPI (Serial Peripheral Interface),SPI 1/I2S1""" if cpuis("STM32F410C*")||cpuis("STM32F410R*") ( menuitem "SPI 2/I2S2" "per , ""SPI (Serial Peripheral Interface),SPI 2/I2S2""" menuitem "SPI 5/I2S5" "per , ""SPI (Serial Peripheral Interface),SPI 5/I2S5""" ) ) else if cpuis("STM32F411?C")||cpuis("STM32F411?E")||cpuis("STM32F412*")||cpuis("STM32F413*")||cpuis("STM32F423?H") ( menuitem "SPI 1/I2S1" "per , ""SPI (Serial Peripheral Interface),SPI 1/I2S1""" menuitem "SPI 2/I2S2" "per , ""SPI (Serial Peripheral Interface),SPI 2/I2S2""" menuitem "SPI 3/I2S3" "per , ""SPI (Serial Peripheral Interface),SPI 3/I2S3""" menuitem "SPI 4/I2S4" "per , ""SPI (Serial Peripheral Interface),SPI 4/I2S4""" menuitem "SPI 5/I2S5" "per , ""SPI (Serial Peripheral Interface),SPI 5/I2S5""" menuitem "I2S2ext" "per , ""SPI (Serial Peripheral Interface),I2S2ext""" menuitem "I2S3ext" "per , ""SPI (Serial Peripheral Interface),I2S3ext""" ) else if cpuis("STM32F469*")||cpuis("STM32F479*") ( menuitem "SPI 1" "per , ""SPI (Serial Peripheral Interface),SPI 1""" menuitem "SPI 2/I2S2" "per , ""SPI (Serial Peripheral Interface),SPI 2/I2S2""" menuitem "SPI 3/I2S3" "per , ""SPI (Serial Peripheral Interface),SPI 3/I2S3""" menuitem "SPI 4" "per , ""SPI (Serial Peripheral Interface),SPI 4""" if !cpuis("STM32F469V*")&&!cpuis("STM32F469Z*")&&!cpuis("STM32F479V*")&&!cpuis("STM32F479Z*") ( menuitem "SPI 5" "per , ""SPI (Serial Peripheral Interface),SPI 5""" menuitem "SPI 6" "per , ""SPI (Serial Peripheral Interface),SPI 6""" ) menuitem "I2S2ext" "per , ""SPI (Serial Peripheral Interface),I2S2ext""" menuitem "I2S3ext" "per , ""SPI (Serial Peripheral Interface),I2S3ext""" ) else if cpuis("STM32F411*")||cpuis("STM32F401V*")||cpuis("STM32F427V*")||cpuis("STM32F429V*")||cpuis("STM32F437V*")||cpuis("STM32F439V*") ( menuitem "SPI 1/I2S1" "per , ""SPI (Serial Peripheral Interface),SPI 1/I2S1""" menuitem "SPI 2/I2S2" "per , ""SPI (Serial Peripheral Interface),SPI 2/I2S2""" menuitem "SPI 3/I2S3" "per , ""SPI (Serial Peripheral Interface),SPI 3/I2S3""" menuitem "SPI 4/I2S4" "per , ""SPI (Serial Peripheral Interface),SPI 4/I2S4""" menuitem "I2S2ext" "per , ""SPI (Serial Peripheral Interface),I2S2ext""" menuitem "I2S3ext" "per , ""SPI (Serial Peripheral Interface),I2S3ext""" ) else if cpuis("STM32F427*")||cpuis("STM32F429*")||cpuis("STM32F437*")||cpuis("STM32F439*") ( menuitem "SPI 1/I2S1" "per , ""SPI (Serial Peripheral Interface),SPI 1/I2S1""" menuitem "SPI 2/I2S2" "per , ""SPI (Serial Peripheral Interface),SPI 2/I2S2""" menuitem "SPI 3/I2S3" "per , ""SPI (Serial Peripheral Interface),SPI 3/I2S3""" menuitem "SPI 4/I2S4" "per , ""SPI (Serial Peripheral Interface),SPI 4/I2S4""" menuitem "SPI 5/I2S5" "per , ""SPI (Serial Peripheral Interface),SPI 5/I2S5""" menuitem "SPI 6/I2S6" "per , ""SPI (Serial Peripheral Interface),SPI 6/I2S6""" menuitem "I2S2ext" "per , ""SPI (Serial Peripheral Interface),I2S2ext""" menuitem "I2S3ext" "per , ""SPI (Serial Peripheral Interface),I2S3ext""" ) else ( menuitem "SPI 1/I2S1" "per , ""SPI (Serial Peripheral Interface),SPI 1/I2S1""" menuitem "SPI 2/I2S2" "per , ""SPI (Serial Peripheral Interface),SPI 2/I2S2""" menuitem "SPI 3/I2S3" "per , ""SPI (Serial Peripheral Interface),SPI 3/I2S3""" menuitem "I2S2ext" "per , ""SPI (Serial Peripheral Interface),I2S2ext""" menuitem "I2S3ext" "per , ""SPI (Serial Peripheral Interface),I2S3ext""" ) ) if (cpuis("STM32F446*")) ( menuitem "SPDIFRX" "per , ""SPDIFRX (SPDIF Receiver Interface)""" ) if (cpuis("STM32F42*")||cpuis("STM32F43*")||cpuis("STM32F469*")||cpuis("STM32F479*")) ( popup "SAI" ( menuitem "Block A" "per , ""SAI (Serial Audio Interface),Block A""" menuitem "Block B" "per , ""SAI (Serial Audio Interface),Block B""" ) ) else if cpuis("STM32F446*") ( popup "SAI" ( popup "SAI_1" ( menuitem "Block A" "per , ""SAI (Serial Audio Interface),SAI_1,Block A""" menuitem "Block B" "per , ""SAI (Serial Audio Interface),SAI_1,Block B""" menuitem "SAI" "per , ""SAI (Serial Audio Interface)""" ) popup "SAI_2" ( menuitem "Block A" "per , ""SAI (Serial Audio Interface),SAI_2,Block A""" menuitem "Block B" "per , ""SAI (Serial Audio Interface),SAI_2,Block B""" ) ) ) if !cpuis("STM3F401C*")&&!cpuis("STM32F410*") ( menuitem "SDIO" "per , ""SDIO (SDIO Interface)""" ) if (!cpuis("STM32F401*")&&!cpuis("STM32F411*")) ( popup "CAN" ( menuitem "CAN 1" "per , ""CAN (Controller Area Network),CAN 1""" menuitem "CAN 2" "per , ""CAN (Controller Area Network),CAN 2""" if cpuis("STM32F413*")||cpuis("STM32F423?H") ( menuitem "CAN 3" "per , ""CAN (Controller Area Network),CAN 3""" ) ) ) menuitem "USB_OTG_FS" "per , ""USB_OTG_FS (USB On-the-go Full-speed)""" if (!cpuis("STM32F401*")&&(!cpuis("STM32F411*"))&&(!cpuis("STM32F410*"))&&(!cpuis("STM32F412*"))&&(!cpuis("STM32F413*"))&&(!cpuis("STM32F423?H"))) ( menuitem "USB_OTG_HS" "per , ""USB_OTG_HS (USB On-the-go High-speed)""" ) if (cpuis("STM32F407*")||cpuis("STM32F417*")||cpuis("STM32F427*")||cpuis("STM32F437*")||cpuis("STM32F429*")||cpuis("STM32F439*")||cpuis("STM32F469I*")||cpuis("STM32F469B*")||cpuis("STM32F469N*")||cpuis("STM32F479I*")||cpuis("STM32F479B*")||cpuis("STM32F479N*")) ( menuitem "ETH" "per , ""ETH (Ethernet)""" ) if (cpuis("STM32F446*")) ( menuitem "HDMI-CEC" "per , ""HDMI-CEC (HDMI-CEC Controller)""" ) menuitem "DBG" "per , ""DBG (Debug Registers)""" menuitem "DES" "per , ""DES (Device Electronic Signature)""" ) )