disclaimer: This answer is biased by someone who'd incorporate the amount of work necessary to make a "minimally sufficient" platform do what would trivial given a "commodity hardware" platform into system cost. Hence, it's written in a manner that suggests the STM32 platform is unsuitable for the task – it's not, but getting everything, from bluetooth to filesystems on a USB storage device to work on a MMU-free MCU is in my opinion not worth the trouble.
so, the point is to handle large file transfers over relatively high-rate links such as modern Bluetooth or Wifi, a raw ARM Cortex-M like the STM32 is plain the wrong platform.
What your project needs is
- an operating system handling
- wifi/bluetooth stack
- a file transfer service for the above stack
- a USB storage device stack
- a filesystem driver to be able to write files to the storage medium
- the computational power to communicate with communication device on one side of your circuit, and USB on the other side.
Arduino or ARM Mbed or STM32 Cube offers none of that, and you can but rudimentarily get something like a filesystem using Arduino or Mbed libraries; if you're going raw STM32, you'd have to write your own operating system...
You picked the wrong platform. Simple as that.
Look for things that run a typical operating system (vxworks, Linux, NetBSD...) and come with the interfaces you need and drivers for the operating system. Typical candidates would be < $10 devices like the raspberry pi zero, cheap Linux Routers (like the vocore.io).
I don't want to use RPi or any ready made development board, I want to make my own minimum development board. Will this be possible using STM32F103 and do the Bluetooth transfer, if not which platform should I choose and how to make my own dev board?
Well, I'd strongly recommend getting a ready, working board first, getting familiar with that, and then designing your own. As said, Linux-Running boards are cheap to get, because they can order a couple thousand of Router-typical MCUs at once – it's going to be extremely difficult for you to buy a couple of these controllers at comparable prices to fully working boards.
I've solved the issue. I don't know what the problem was, but I did another project and now everything is working perfectly.
To make this post a bit more valuable to others that may find it: At beginning I used a program generated via STM32CubeMx - and it has the problems described here. I was suggested to download STM32F7Cube (Cube not CubeMX) and use the examples from there. I did that and everything is working.
Best Answer
There are plenty of resources by ST. I have learnt a lot from STM32F4 Discovery documentation for example. It is a pretty good board in my opinion so it makes a good reference material.
Personally I prefer SWD programmer when it comes to STM32 because with a Discovery and its on board ST-Link you can program any other custom STM32 board through a four pin connector.
The other important document is the Getting started with STM32F4xxxx MCU hardware development. Of course there are one for each series.
All necessary points are covered:
Reference designs included as well and some recommended PCB routing guidelines for STM32F4xxxx devices. All in all really useful.
More application notes here if you are interested in specific peripherals.