I assume you meant STM32L152RE not ST32L152RE, as soon as we mentioned it you should have seen from the ST website and/or the datasheet that this is a dual banked flash device. The reference manual will guide you as to how to use that. You are a LONG way from doing this through the BLE start without. You need to
understand how the chip boots and be able to control it.
write code that runs on the chip that can erase and write either bank.
come up with an A/B solution so that you can download new firmware (however you choose to do that) and be able to run it but also not brick the system. The hardware may or may not help you on this, having dual banks is one thing but does the hardware provide a way to have either bank be bootable in a non-volatile way? Or is the lower bank always what the chip boots applications off of and the other bank is just there in a way that you can use it but cant boot off of it? An ideal A/B solution is that you currently are booting off of B using B download and program A then the last thing you do is flip the non-volatile switch (set some bits in some register that hardware has provided to control this) to boot from A. and vice versa for the next download. An alternate solution that can work for more chips is, it always boots from the lower part of flash, but the first part of your boot code checks some upper area, be it a CRC or checksum or other validation of your choice, if the validation passes then you branch to that code. The real firmware living up there, when an update needs to happen you need to trampoline out of the way you need to either run the code to program the upper flash from the lower flash, the library/function/routine is not in the flash or area being erased (need hardware (silicon) that supports erasing/writing flash while running from it) or trampoline from sram, copy the routine to sram branch to sram so that you are not executing from flash then write over the upper space with the new firmware. If there is ever a problem in this process then the lower portion of the flash contains a from the factory version or at least recovery firmware that is sufficient enough to allow another try at loading new firmware. There are a number of ways to do this, you can do an A/B thing with a flash that is not dual banked but you have to have a scheme be it magic numbers, incrementing numbers, or the first part of A always has to get changed, some scheme that makes sense to have one copy that works and one copy that is being updated and if the download or update fails (power is removed in the middle of the process) it wont easily brick the system, all systems are brickable, just dont make it really easy.
you then need to learn all you need to know about this BLE device and how to communicate through it, design the protocols for your normal application including the how to update the device. this could be an alternate boot, user has to hold a button while pressing the reset to put it into update mode or not at any time the user can start a firmware update. of course there are two sides to a bluetooth connection, you either need to write the software for the other side (whats the point of making this product anyway but not to do something over bluetooth) or perhaps the protocol you are supporting has this designed in. and then marry that with your solution for updating firmware.
Assume you will fail the first several design attempts. If you hit a home run and get this design perfect on the first try, post your resume, one of us will hire you. Start slow and simple, take each research project separately not one big project that evolves but one project for learning how to program the flash one for learning how to trampoline and program the flash, one for basic BLE communications, one for working on your BLE protocol and so on. Expect failure and get back up on that horse and try it again or a different way.
Its nice to have a big project goal, but you wont make it if you cant break the big project into its smaller projects and attack those. How do you eat an elephant? One bite at a time, just like anything else. Cant swallow it whole. The fact that you asked this question means you are not yet at the point of being able to just start a project and bang through these things or cut and paste from prior projects and do it in one go. The first time you build a house you have to buy and learn how to use each individual tool, the Nth time you build a house you have the tools and know how to use them and can go forward without thinking about it too much. Each new chip or brand will provide new challenges, you may spend 5 years making STM32 based products that work great with your solution but switch to atmel or nxp and may have to start over.