You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
2.8 KiB

4 years ago
  1. /*********************************************************
  2. *Copyright (C), 2015, Shanghai Eastsoft Microelectronics Co., Ltd.
  3. *: lib_scs.h
  4. * : AE Team
  5. * : V1.01
  6. * : 2021/04/27
  7. * : SCS模块库函数头文件
  8. * :
  9. 使
  10. **********************************************************/
  11. #ifndef __LIBNVIC_H__
  12. #define __LIBNVIC_H__
  13. #include "ES8P5066.h"
  14. #include "type.h"
  15. /* 中断源选择 */
  16. typedef enum
  17. {
  18. NVIC_PINT0_IRQn = 0,
  19. NVIC_PINT1_IRQn = 1,
  20. NVIC_PINT2_IRQn = 2,
  21. NVIC_PINT3_IRQn = 3,
  22. NVIC_PINT4_IRQn = 4,
  23. NVIC_PINT5_IRQn = 5,
  24. NVIC_PINT6_IRQn = 6,
  25. NVIC_PINT7_IRQn = 7,
  26. NVIC_T16N0_IRQn = 8,
  27. NVIC_T16N1_IRQn = 9,
  28. NVIC_T16N2_IRQn = 10,
  29. NVIC_T16N3_IRQn = 11,
  30. NVIC_T32N0_IRQn = 12,
  31. NVIC_RSV0_IRQn = 13,
  32. NVIC_RSV1_IRQn = 14,
  33. NVIC_WWDT_IRQn = 15,
  34. NVIC_IWDT_IRQn = 16,
  35. NVIC_RSV2_IRQn = 17,
  36. NVIC_KINT_IRQn = 18,
  37. NVIC_ADC_IRQn = 19,
  38. NVIC_RSV3_IRQn = 20,
  39. NVIC_LVD_IRQn = 21,
  40. NVIC_RSV4_IRQn = 22,
  41. NVIC_UART0_IRQn = 23,
  42. NVIC_UART1_IRQn = 24,
  43. NVIC_UART2_IRQn = 25,
  44. NVIC_RSV5_IRQn = 26,
  45. NVIC_RSV6_IRQn = 27,
  46. NVIC_SPI1_IRQn = 28,
  47. NVIC_IIC0_IRQn = 29,
  48. NVIC_RSV7_IRQn = 30,
  49. NVIC_CCM_IRQn = 31,
  50. } NVIC_IRQChannel;
  51. /* 优先级 */
  52. typedef enum
  53. {
  54. NVIC_Priority_0 = 0x0,
  55. NVIC_Priority_1 = 0x1,
  56. NVIC_Priority_2 = 0x2,
  57. NVIC_Priority_3 = 0x3,
  58. } NVIC_IRQPriority;
  59. /* 休眠模式 */
  60. typedef enum
  61. {
  62. SCB_LP_SleepOnExit = 0x02, /* 从ISR中断处理程序返回到线程模式时,是否休眠 */
  63. SCB_LP_SleepDeep = 0x04, /* 深度睡眠 */
  64. SCB_LP_SEVOPend = 0x10, /* 中断挂起时,是否作为唤醒的选择位 */
  65. } SCB_TYPE_SCR;
  66. /* SysTick时钟源选择 */
  67. typedef enum
  68. {
  69. SysTick_ClkS_Base = 0x0, /* 基准时钟(Hclk/3) */
  70. SysTick_ClkS_Cpu = 0x1, /* 处理器时钟(Hclk) */
  71. } SYST_TYPE_CLKS;
  72. /* SysTick初始化配置结构体定义 */
  73. typedef struct
  74. {
  75. uint32_t SysTick_Value; /* 递减数值:24位,右对齐 */
  76. SYST_TYPE_CLKS SysTick_ClkSource; /* 时钟源选择 */
  77. TYPE_FUNCEN SysTick_ITEnable; /* 中断使能、失能 */
  78. } SYSTICK_InitStruType;
  79. /**************模块宏定义*************/
  80. /*SysTick使能*/
  81. #define SysTick_Enable() (SysTick->CTRL |= 0x00000001)
  82. #define SysTick_Disable() (SysTick->CTRL &= 0xFFFFFFFE)
  83. /************SCS模块函数声明***********/
  84. void NVIC_Init(NVIC_IRQChannel Channel, NVIC_IRQPriority Priority, TYPE_FUNCEN Cmd);
  85. void SCB_SystemLPConfig(SCB_TYPE_SCR LowPowerMode, TYPE_FUNCEN NewState);
  86. uint32_t SCB_GetCpuID(void);
  87. void SysTick_Init(SYSTICK_InitStruType *SysT_InitStruct);
  88. #endif