cancel
Showing results for 
Search instead for 
Did you mean: 

Where is the source for the factory-installed demo application for NUCLEO-F446ZE ?

JArmi.1
Associate II

I have a NUCLEO-144 board and it has a factory-installed application that flashes the LEDs and uses push button 1 to change which LED is flashing.

This is described in section 5.1 "Getting started" in UM1974 for the NUCLEO-144 boards.

I have found some demo code at

https://github.com/STMicroelectronics/STM32CubeF4/tree/master/Projects/STM32F446ZE-Nucleo

but this is not the same, and requires an Adafruit LCD-equipped shield to operate. The LED behavior is different. All I am looking for is the very simple factory-installed demo, just so I have a "known good" project that I can quickly re-flash to my board to prove it still works.

Does anyone know where I can download the source for the factory-installed code?

7 REPLIES 7

It's the same demo code. It tests presence of the LCD shield, and if not present, it continues with the blinky.

Both the readme, and main() in main.c say this.

JW

There should be a compiled binary at 0693W000008xavwQAA.png 

(can't give link as ST's web designers indulge in excessive javascripting).

Yes, you are right, it is not there.

  

JW

The source code is not the same as what is running in the board from the factory.

The factory code starts by flashing LD3, then when B1 is pressed it changes to flashing LD2, and then when B1 is pressed it changes to flashing LD1. When B1 is pressed a third time, it goes back to flashing LD3 and the sequence can be repeated.

How hard is it for ST to make that code available somewhere? It shouldn't be hard at all, and the information should be included in the NUCLEO-144 user manual.

> The factory code starts by flashing LD3, then when B1 is pressed it changes to flashing LD2, and then when B1 is pressed it changes to flashing LD1. When B1 is pressed a third time, it goes back to flashing LD3 and the sequence can be repeated.

Yes, that's what the "LCD shield not present" leg in main() does, by calling LED2_Blink().

JW

> Yes, that's what the "LCD shield not present" leg in main() does, by calling LED2_Blink().

Please read the actual code in function LED2_Blink()

https://github.com/STMicroelectronics/STM32CubeF4/blob/d599a824dfe257bee2aeff403caf592da816b126/Projects/STM32F446ZE-Nucleo/Demonstrations/Src/main.c#L541

You will see there is nothing there that refers to LED1 (LD1) or LED3 (LD3).

This is not the same code!

If when BSP_LED_Toggle(LED2) is called it is somehow driving LED1 and LED3, then that is so unbelievably obscure and misleading that whoever wrote that code deserves to be sent back to software engineering school to re-learn good programming practices!

Demonstration code is supposed to be plain and simple so that someone new to a platform can understand what is going on. I have used many CPUs, MCUs and toolchains by other manufacturers over the span of several decades, and I have to say that overall ST's quality of product documentation is definitely not as good as it should be. If they want to compete for customers, they need to improve things.

> If they want to compete for customers

Maybe they don't.

JW