Nucleo_f446ze does not support Arduino framework. Looking for advice

Uploading and monitoring can be two seperate project tasks. If you look at PlatformIO IDE for VSCode — PlatformIO latest documentation you can first click “Upload”, then see if that worked, then reseat the jumpers and reset if you have to, then press “Monitor”.

However, after the DFU upload, actually shouldn’t need to reset the board’s BOOT0 jumper, the bootloader should automatically reboot the device to run the firmware.

That does not happen, I get nothing on my LCD until I Undo Boot0, and press the reset button.
Edit: After pressing the reset button and undoing Boot0 all is well and my code runs as i want it to.

Yes, the monitor does work. I put a delay in my code to give me enough time to reset the board and connect before it starts.

Hm that’s weird :confused:

You should be able to replace the static delay with a

while(!Serial) {}
delay(100); //just a bit of safety delay

expression. (overloaded boolean operator on the Serial object returns whether someone actually established a USB connection).

When STM32Duino successfully runs on the board with the USB-serial, can you try uploading without re-setting into bootloader mode through BOOT0? I think STM32Duino implements a reset-to-bootloader-via-1200bps-Serial-open method.

Otherwise it sounds like you got it running succesfully on the board.

Update, you got me thinking:
I was using an actual jumper on boot0 / a little breadboard switch i made.
I just switched that out for a pushbutton, pressed it, and the reset button.
Then let go (and uploaded) and it booted right into the code. I was taking jumping out boot zero too literally. It just has to be jumped when the reset button is pressed.

Yes it is running. Thank you so much for this thread i honestly you enabled this whole project to get off the ground.

Here is a flow chart of my new process:
Boot0 pressed (held) → reset button pressed → boot0 released-> upload (works) → board goes right into code.
Results: Monitor works, other than the send on enter.
If i try to upload again without, Pressing Boot0 and repeating the cycle it fails to upload. That is expected correct?

I cant thank you enough for this, this board is honestly the only thing that can run our project cost effectively. You will most certainly be mentioned in the special thanks. I really appreciate the help.

1 Like

Not to jump on a ghost train with this post but did someone get something like this working for the octopus V1.1 with the 446ZE?


I tried the blink example project for the Octopus board. The project complies and I put the firmware on the sdcard and it is not blinking the led after programming. I tried using the STM32CubeProgrammer , but the board is not recognized or assigned a communications port so I can not upload. Is there something I am missing?


Can you share the working source? I tried everything in this post and it complies, but I have to use the sdcard to upload and it doesn’t blink at all?



I just spent the night playing around with this thread as I also want to use the Octopus 1.1 for something other than a 3D Printer.

So here is what you do:
1.) Thank @zouden and @maxgerhardt maxgerhdt, they made it possible for me to get it going.

2.) Download maxgerhardt’s sample code above: nucleo-f446ze-with-arduino

3.) extract and such.

4.) Open the project folder in PlatformIO.

5.) Replace the Startup and loop code with this:
void setup() {
pinMode(LED, OUTPUT);

void loop() {
digitalWrite(LED, HIGH);
digitalWrite(LED, LOW);

6.) Build the project.

7.) You should at the least have this status after it is done.
Environment Status Duration

octopus_minimal FAILED 00:00:04.129
octopus SUCCESS 00:00:04.939
nucleo_f446ze FAILED 00:00:04.217

8.) This will allow you to upload using the

9.) next to the BQ logo there is a BOOT0 jumper that you need to short the two pins together.

10.) Plug the USB in.

11.) Press the reset button

12.) Watch this video: STM32 Programming via USB (DFU) - Phil's Lab #72 - YouTube

13.) Upload like shown.

14.) Disconnect from the board in the STM32CubeProgrammer

15.) Disconnect the USB Cable.

16.) Remove Jumper.

17.) Plug USB back in and enjoy! :slight_smile:

18.) you can connect via a serial monitor and you will see “BLINK!” everytime it blinks.

19.) Thank @zouden and @maxgerhardt, they made it possible for me to get it going.

20.) Help others giving credit to: zouden and maxgerhdt.

Team work makes the dream work.

THANK YOU @maxgerhardt @zouden