I have a relatively simple project (from the user point of view) in mind. I want to develop a very simple PCI Express (x1) card that users can put into their system and toggle some GPIO's from a GUI program (e.g. to turn on/off some stuff). The project might sound stupid as there are better alternatives but I have decided to do this to force myself get good at stuff. So I want to do PCB design and programming (GUI and eventually a driver).
So my question is, what are the minimum requirements to have such a simple extension card?
Is it possible to do this with a STM32 controller? or Will it need FGPAs or dedicated chips/ASIC? I can imagine there is some sort of handshaking going on when a card plugs in into a PCIE slot or at boot time...
And where can I gather more information about this?