Just to add a little about the application:
The reading and writing to the EEPROM (actually flash emulating EEPROM) on an STM32F103C8T6 is to be done only at the beginning of the application for setup/calibration functions.
The USB will be used to communicate with the application to pass parameters to the application to store/read from the EEPROM.
Otherwise, the application reads from ADCs about once every 250ms (interrupt handled), outputs a PWM signal, and spits out the readings over UART. There are other bits that are changed in order to alter the state of connected hardware.
The EEPROM is read/written only in polling mode, because there was no requirement to read/write the EEPROM after the initial start of the application. I disabled the interrupts because I was fearful of having the flash "unlocked" while the interrupts were active, just in case something unintended happened.
I will take on board the suggestion to move the disabling of the interrupts for only those functions that need to have the interrupts disabled - this will probably mean moving it to the EE_Writes() function, and removing it from the EE_Reads() function, but I will test this later today, as I will need to ensure that I am not opening the flash up to random writes.
The reason why I didn't pass the pointer in the first place, and used a returned array was because this was a library that I had downloaded online and was using in my own code.
When I tested the code some time ago, this worked as it was, so I did not think to refactor it in any way (don't fix what ain't broke) - but you are correct that I am a beginner in terms of programming. My main focus is to build R&D protoypes that allow me to test other aspect of the design, the firmware is ancillary to that function.
All the tips, and discussions around it are really helpful to me to understand how I should be thinking about the code/system architecture, so all is appreciated - like I said, any tips will be welcomed.