flash_stm32.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. * This software is experimental and a work in progress.
  3. * Under no circumstances should these files be used in relation to any critical system(s).
  4. * Use of these files is at your own risk.
  5. *
  6. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
  7. * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  8. * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  9. * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  10. * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  11. * DEALINGS IN THE SOFTWARE.
  12. *
  13. * This files are free to use from https://github.com/rogerclarkmelbourne/Arduino_STM32 and
  14. * https://github.com/leaflabs/libmaple
  15. *
  16. * Modifications for QMK and STM32F303 by Yiancar
  17. */
  18. #ifndef __FLASH_STM32_H
  19. #define __FLASH_STM32_H
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23. #include "ch.h"
  24. #include "hal.h"
  25. typedef enum
  26. {
  27. FLASH_BUSY = 1,
  28. FLASH_ERROR_PG,
  29. FLASH_ERROR_WRP,
  30. FLASH_ERROR_OPT,
  31. FLASH_COMPLETE,
  32. FLASH_TIMEOUT,
  33. FLASH_BAD_ADDRESS
  34. } FLASH_Status;
  35. #define IS_FLASH_ADDRESS(ADDRESS) (((ADDRESS) >= 0x08000000) && ((ADDRESS) < 0x0807FFFF))
  36. FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout);
  37. FLASH_Status FLASH_ErasePage(uint32_t Page_Address);
  38. FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data);
  39. void FLASH_Unlock(void);
  40. void FLASH_Lock(void);
  41. #ifdef __cplusplus
  42. }
  43. #endif
  44. #endif /* __FLASH_STM32_H */