azhel12 / Zhele

Framework for Stm32 MCU on C++ templates. Project based on "mcucpp" by Konstantin Chizhov.
BSD 2-Clause "Simplified" License
41 stars 9 forks source link

fsmc fot stm32f407 #34

Open NEOVIS78 opened 4 days ago

NEOVIS78 commented 4 days ago

// LCD + SRAM using pins = ConfigurePins<CfgPinsBase::NE3, CfgPinsBase::NE4, CfgPinsBase::NOE, CfgPinsBase::NWE, CfgPinsBase::AddrA0_A19, CfgPinsBase::Data16, CfgPinsBase::NBL>; // LCD // using pins = ConfigurePins<CfgPinsBase::NE4, CfgPinsBase::NOE, CfgPinsBase::NWE, CfgPinsBase::AddrA0_A6, CfgPinsBase::Data16>; pins::Init();

using timing1 = Timing<8, 0, 8>;
using exttiming1 = Timing<15, 0, 24>;
using options = SRAMOptions<
    MemoryType::SRAM, 
    FsmcOptions::Bank4
    | FsmcOptions::DataAddressMuxDisable
    | FsmcOptions::MemBusWidth16
    | FsmcOptions::WriteOperationEnable
    | FsmcOptions::ExtendedModeEnable
    >;

using fmc1 = Fsmc<options, timing1, exttiming1>;
if (fmc1::Init() != 0)
{
    for (;;)
    {
        Led1::Toggle();
        delay_ms(250);
    }
}

using timing2 = Timing<15, 0, 15>;
using exttiming2 = Timing<>;
using options2 = SRAMOptions<
    MemoryType::SRAM, 
    FsmcOptions::Bank3
    | FsmcOptions::DataAddressMuxDisable
    | FsmcOptions::MemBusWidth16
    | FsmcOptions::WriteOperationEnable
    >;

using fmc2 = Fsmc<options2, timing2, exttiming2>;
if (fmc2::Init() != 0)
{
    for (;;)
    {
        Led1::Toggle();
        delay_ms(150);
    }
}   
NEOVIS78 commented 4 days ago

It works fine. I optimize the code.

NEOVIS78 commented 3 days ago

f1.zip

NEOVIS78 commented 3 days ago

Something like that optimized.