lib_scs.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /***************************************************************
  2. *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd.
  3. *文件名: lib_scs.h
  4. *作 者: Liut
  5. *版 本: V1.00
  6. *日 期: 2017/07/14
  7. *描 述: 内核模块库函数头文件
  8. *备 注: 适用于 ES8P508x芯片
  9. 本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
  10. ***************************************************************/
  11. #ifndef __LIBNVIC_H__
  12. #define __LIBNVIC_H__
  13. #include "ES8P508x.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_IWDT_IRQn = 14,
  32. NVIC_WWDT_IRQn = 15,
  33. NVIC_CCM_IRQn = 16,
  34. NVIC_PLK_IRQn = 17,
  35. NVIC_LVD_IRQn = 18,
  36. NVIC_KINT_IRQn = 19,
  37. NVIC_RTC_IRQn = 20,
  38. NVIC_ADC_IRQn = 21,
  39. NVIC_AES_IRQn = 23,
  40. NVIC_UART0_IRQn = 24,
  41. NVIC_UART1_IRQn = 25,
  42. NVIC_UART2_IRQn = 26,
  43. NVIC_UART3_IRQn = 27,
  44. NVIC_UART4_IRQn = 28,
  45. NVIC_UART5_IRQn = 29,
  46. NVIC_SPI0_IRQn = 30,
  47. NVIC_I2C0_IRQn = 31,
  48. }NVIC_IRQChannel;
  49. /* 优先级 */
  50. typedef enum
  51. {
  52. NVIC_Priority_0 = 0x0 ,
  53. NVIC_Priority_1 = 0x1 ,
  54. NVIC_Priority_2 = 0x2 ,
  55. NVIC_Priority_3 = 0x3 ,
  56. }NVIC_IRQPriority;
  57. /* 休眠模式 */
  58. typedef enum
  59. {
  60. SCB_LP_SleepOnExit = 0x02 , //从ISR中断处理程序返回到线程模式时,是否休眠
  61. SCB_LP_SleepDeep = 0x04 , //深度睡眠
  62. SCB_LP_SEVOPend = 0x10 , //中断挂起时,是否作为唤醒的选择位
  63. }SCB_TYPE_SCR;
  64. /* SysTick时钟源选择 */
  65. typedef enum
  66. {
  67. SysTick_ClkS_Base = 0x0 , //基准时钟(Hclk/3)
  68. SysTick_ClkS_Cpu = 0x1 , //处理器时钟(Hclk)
  69. }SYST_TYPE_CLKS;
  70. /* SysTick初始化配置结构体定义 */
  71. typedef struct
  72. {
  73. uint32_t SysTick_Value; //递减数值:24位,右对齐
  74. SYST_TYPE_CLKS SysTick_ClkSource; //时钟源选择
  75. TYPE_FUNCEN SysTick_ITEnable; //中断使能、失能
  76. }SYSTICK_InitStruType;
  77. /**************模块宏定义*************/
  78. /*SysTick使能*/
  79. #define SysTick_Enable() (SysTick->CTRL |= 0x00000001)
  80. #define SysTick_Disable() (SysTick->CTRL &= 0xFFFFFFFE)
  81. /************SCS模块函数声明***********/
  82. void NVIC_Init(NVIC_IRQChannel Channel,NVIC_IRQPriority Priority,TYPE_FUNCEN Cmd);
  83. void SCB_SystemLPConfig(SCB_TYPE_SCR LowPowerMode, TYPE_FUNCEN NewState);
  84. uint32_t SCB_GetCpuID(void);
  85. void SysTick_Init(SYSTICK_InitStruType* SysT_InitStruct);
  86. #endif
  87. /*************************END OF FILE**********************/