STM32 Nucleo and Discovery boards

Description: STM32 Nucleo and Discovery boards; Simplest free/cheap IDE for STM32F7 discovery board

I have used STM32 Nucleo and Discovery boards for some of my projects, and I also have a and F7 Disco, so I went through an evaluation process similar to yours. Simplest free/cheap IDE for STM32F7 discovery board

Here are some pieces of advice, take them as personal, experience based, opinions:

0- If these are your first steps in ARM/STM32 programming, you have chosen a (IMO) very good product, but a steep learning curve: the F7 Disco is a very complex board, with lots of sophisticated peripherals (both on chip and on board), and limited access to I/O pins (just the Arduino connectors). Arduino is a different world.
1- Take your time to learn the platform. The amount of information available is daunting: the Reference manual for the processor is 1655 pages. You must know it by heart, including the errata (half joking, but read the MCU datasheet, and I was bitten by one of the errata).
2- STM32F7 does away with the classical STD Peripheral libraries, so it's either hand written code for register access or HAL. I'd go for HAL for anything more complex than a blinky.
3- Use STM32CubeMX to generate clock and peripheral initialization code. Doing it by hand is possible (and definitely a good learning exercise to be done at least once or twice), but tedious and error prone: life is too short. The generated code can be easily included in a project of your favorite IDE.

Now, to the environments:

0- I use both Windows and Linux, but the better IDEs are, for whatever reasons, Windows only. My STM32 coding is 99% under Windows.

Free:

0- Go Commando. Use you preferred editor, gcc, makefiles, openocd. You'll show how tough you are, and pull a lot of hair (the rest will grow white...). Advisable only if you have lot of time, patience and some experience, but you'll learn a lot...maybe too much.
1- The free version of professional packages for ARM are, in general code size limited (32kB). With a complex board as the F7 Disco, it's easy to hit this limit when you start using on-board peripherals. I don't dislike Keil (and it's unlimited, free for STM32F0 cores!)
2- The greatest part of free IDE are Eclipse based. Eclipse is a powerful piece of SW, but I find it very complex and often not so intuitive (I'm also professionally exposed to it).
3- System Workbench is Eclipse based, with all the advantages and disadvantages, but it was the first (AFAIK) to explicitly support the F7 (no surprise, coming from ST itself). It's also well integrated with CubeMX. For free, I find it a reasonable choice. I did not have any great problem with flashing.
4- CooCOX CoIde is a (very) pared down Eclipse IDE. Easy to use with F0-F4, some glitches and frequent crashes (at least for me). Unfortunately, no F7 support roadmap and glacial updates (at least lately). It can be coaxed to compile for F7 (just use F4, same instruction set) but no flash or debug support (IIRC), so I would not advise to use it (at the moment).
5- Em::blocks (now EmBitz) is lean and liked by many. It has almost complete F7 support (still a bit buggy, check the forum). I'm not so keen on its look and feel, but it might be viable and it's worth a try.
6- EmIde: last version is more than one year old, so no F7 support.
7- Coming from Arduino, you might want to consider mbed, similar in many ways, different in others. Not for me, but YMMV. F7 Disco is supported.


Commercial:

0- Most IDE have a time trial or code size limited version. Try them!
1- Professional IDEs are really out of reach for a hobby. Definitely worth it for work, mostly due to real support. If you're just "having fun" consider what you might get with the same amount of money (>2000€) in terms of test and measurement instruments...
2- Crossworks: 150$ for a non-commercial license, if you intend to ever sell your code/product it's a steep 1500$ for a commercial one! No explicit F7 Disco board support package, but F7 is supported (though not 746). Worth trying, but the fixed editor keybindings (I have got Emacs finger-bindings) and lack of editor automation are a sad omission.
3- Visual Studio+Visualgdb. 74€+taxes for the embedded version. Full F7 Disco support, regular updates to GCC and other tools (openocd), 30-day trial. The product works very well, gives you either "do it for me" or detailed control on the build process and includes all libraries and board support packages (not only ST), very good debug support. This is very much a question of taste: Visual Studio Community Edition 2015 is free (and not crippled in any significant way) and it's a very complete, stable and well supported IDE. It comes from Microsoft, though, and this can turn away someone.

What do I use?

For some time, I have been using System Workbench (it works!) and trying all of the above environments. I recently bit the bullet and bought Visualgdb. I do not regret the money spent.

Links:

Keil: https://www.keil.com/arm/demo/eval/arm.htm, http://www2.keil.com/stmicroelectronics-stm32/mdk
CoIde: http://coocox.org/
Em::blocks: http://www.emblocks.org/web/
Crossworks: http://www.rowley.co.uk/arm/index.htm
Visualgdb: http://visualgdb.com/
mbed: https://www.mbed.org/

Some additional considerations:


- I would not like to give the impression that I'm and expert in the embedded field. I work with SW (a lot) and HW (seldom), but there are real professionals in this forum.

- That said, I've been playing with micros for almost 40 years now (designed and built my own 6502 board in '77, and wrote its monitor) ...so I do have some experience (and yes, you can get off my lawn).

- I've checked again Crossworks after answering, and it's much better than I remembered. Definitely worth a try, if the cost and license do not bother you. I still prefer VS+vgdb, though.

- I might have forgotten other options and possibilities, let's hope someone else chimes in. The MCU and the board are still fairly new, so things are changing day by day.

- HAL and mbed. Long story short, mbed like Arduino platform has its uses. It's easy to move the first steps, and there's a community behind it (less than with Arduino). I'm left wanting for more with both (even forgetting about their poor excuses for an IDE...). mbed is multi-vendor (good) but online only (bad). HAL is used by mbed STM32 target, see e.g. serial_api.c, albeit I fear that trying to use both at the same time would not be a good idea. Also, the openness of mbed is a bit under discussion (not that Arduino is free of problems...).

- I have no experience with TI's or NXP's platforms. Some time ago I was given a free F429 Discovery at a demo event, and with Nucleos 10$ a pop, I got addicted...a nice pusher job, was that. Now I crave the heavy stuff (F7...).

- Simpler libraries based upon HAL exist, ST provides BSPs for all of the Eval/Nucleo/Disco boards, with loads of example code for all the peripherals. Alternatively, you could check something like this: http://stm32f4-discovery.com/

- I can't help you with books. I like reading datasheets and programmer's references...now, don't look at me like that!

- If you're not doing this for work (but even then...), find the way that gives you the most fun. These days we have so many free or cheap options for both SW and HW, that is not difficult to find something for one's tastes. Internet religion wars (Microsoft/Linux/Apple, mbed/HAL/bare metal etc.) are a waste of time and energy. Use what you feel comfortable with, and change with no regrets.

- Yes, that board is really sweet (but for the very few I/Os)!

source: http://www.eevblog.com