apm32f10x_misc.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /*!
  2. * @file apm32f10x_misc.h
  3. *
  4. * @brief This file provides all the miscellaneous firmware functions.
  5. * Include NVIC,SystemTick and Power management.
  6. *
  7. * @version V1.0.2
  8. *
  9. * @date 2022-01-05
  10. *
  11. * @attention
  12. *
  13. * Copyright (C) 2020-2022 Geehy Semiconductor
  14. *
  15. * You may not use this file except in compliance with the
  16. * GEEHY COPYRIGHT NOTICE (GEEHY SOFTWARE PACKAGE LICENSE).
  17. *
  18. * The program is only for reference, which is distributed in the hope
  19. * that it will be usefull and instructional for customers to develop
  20. * their software. Unless required by applicable law or agreed to in
  21. * writing, the program is distributed on an "AS IS" BASIS, WITHOUT
  22. * ANY WARRANTY OR CONDITIONS OF ANY KIND, either express or implied.
  23. * See the GEEHY SOFTWARE PACKAGE LICENSE for the governing permissions
  24. * and limitations under the License.
  25. */
  26. #ifndef __APM32F10X_MISC_H
  27. #define __APM32F10X_MISC_H
  28. #ifdef __cplusplus
  29. extern "C" {
  30. #endif
  31. #include "apm32f10x.h"
  32. /** @addtogroup Peripherals_Library Standard Peripheral Library
  33. @{
  34. */
  35. /** @addtogroup MISC_Driver MISC Driver
  36. @{
  37. */
  38. /** @addtogroup MISC_Enumerations Enumerations
  39. @{
  40. */
  41. /**
  42. * @brief NVIC Vect table
  43. */
  44. typedef enum
  45. {
  46. NVIC_VECT_TAB_RAM = 0x20000000,
  47. NVIC_VECT_TAB_FLASH = 0x08000000,
  48. }NVIC_VECT_TAB_T;
  49. /**
  50. * @brief system low power mode
  51. */
  52. typedef enum
  53. {
  54. NVIC_LOWPOWER_SEVONPEND = 0x10,
  55. NVIC_LOWPOWER_SLEEPDEEP = 0x04,
  56. NVIC_LOWPOWER_SLEEPONEXIT = 0x02
  57. }NVIC_LOWPOWER_T;
  58. /**
  59. * @brief nvic priority group
  60. */
  61. typedef enum
  62. {
  63. NVIC_PRIORITY_GROUP_0 = 0x700, //!< 0 bits for pre-emption priority,4 bits for subpriority
  64. NVIC_PRIORITY_GROUP_1 = 0x600, //!< 1 bits for pre-emption priority,3 bits for subpriority
  65. NVIC_PRIORITY_GROUP_2 = 0x500, //!< 2 bits for pre-emption priority,2 bits for subpriority
  66. NVIC_PRIORITY_GROUP_3 = 0x400, //!< 3 bits for pre-emption priority,1 bits for subpriority
  67. NVIC_PRIORITY_GROUP_4 = 0x300 //!< 4 bits for pre-emption priority,0 bits for subpriority
  68. }NVIC_PRIORITY_GROUP_T;
  69. /**
  70. * @brief SysTick Clock source
  71. */
  72. typedef enum
  73. {
  74. SYSTICK_CLK_SOURCE_HCLK_DIV8 = 0x00,
  75. SYSTICK_CLK_SOURCE_HCLK = 0x01
  76. }SYSTICK_CLK_SOURCE_T;
  77. /**@} end of group MISC_Enumerations*/
  78. /** @addtogroup MISC_Fuctions Fuctions
  79. @{
  80. */
  81. /** NVIC */
  82. void NVIC_ConfigPriorityGroup(NVIC_PRIORITY_GROUP_T priorityGroup);
  83. void NVIC_EnableIRQRequest(IRQn_Type irq, uint8_t preemptionPriority, uint8_t subPriority);
  84. void NVIC_DisableIRQRequest(IRQn_Type irq);
  85. /** Vector Table */
  86. void NVIC_ConfigVectorTable(NVIC_VECT_TAB_T vectTab, uint32_t offset);
  87. /** Power */
  88. void NVIC_SetSystemLowPower(NVIC_LOWPOWER_T lowPowerMode);
  89. void NVIC_ResetystemLowPower(NVIC_LOWPOWER_T lowPowerMode);
  90. /** Systick */
  91. void SysTick_ConfigCLKSource(SYSTICK_CLK_SOURCE_T clkSource);
  92. /**@} end of group MISC_Fuctions*/
  93. /**@} end of group MISC_Driver*/
  94. /**@} end of group Peripherals_Library*/
  95. #ifdef __cplusplus
  96. }
  97. #endif
  98. #endif /* __APM32F10X_MISC_H */