MSC_RAMFUNC_DEFINITION_END /***************************************************************************//** * @brief * Writes data to flash memory. This function is interrupt safe, but slower than * MSC_WriteWordFast(), which writes to flash with interrupts disabled. * Write data must be aligned to words and contain a number of bytes that is * divisable by four. * @note * It is recommended to erase the flash page before performing a write. * * It is recommended to run this code from RAM. On the Gecko family, it is required * to run this function from RAM. * * For IAR, Rowley, SimplicityStudio, Atollic and armgcc this will be achieved * automatically by using attributes in the function proctype. For Keil uVision you * must define a section called "ram_code" and place this manually in your * project's scatter file. * * This function requires a system core clock at 1MHz or higher. * * @param[in] address * Pointer to the flash word to write to. Must be aligned to words. * @param[in] data * Data to write to flash. * @param[in] numBytes * Number of bytes to write from flash. NB: Must be divisable by four. * @return * Returns the status of the write operation * @verbatim * flashReturnOk - Operation completed successfully. * flashReturnInvalidAddr - Operation tried to erase a non-flash area. * flashReturnLocked - Operation tried to erase a locked area of the flash. * flashReturnTimeOut - Operation timed out waiting for flash operation * to complete. Or the MSC timed out waiting for the software to write * the next word into the DWORD register. * @endverbatim ******************************************************************************/ MSC_RAMFUNC_DEFINITION_BEGIN MSC_Status_TypeDef MSC_WriteWord(uint32_t *address, void const *data, uint32_t numBytes) { return MSC_WriteWordI(address, data, numBytes, mscWriteIntSafe); }
/* "Possible rom access from within a __ramfunc function" */ #pragma diag_suppress=Ta022 #pragma diag_suppress=Ta023 #endif #endif /* !EM_MSC_RUN_FROM_FLASH */ MSC_Status_TypeDef MSC_WriteWordFast(uint32_t *address, void const *data, uint32_t numBytes) { return MSC_WriteWordI(address, data, numBytes, mscWriteFast); }