lib_scs.c 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /***************************************************************
  2. *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd
  3. *文件名: lib_scs.c
  4. *作 者: Liut
  5. *版 本: V1.00
  6. *日 期: 2017/07/14
  7. *描 述: 内核模块库函数
  8. *备 注: 适用于 ES8P508x芯片
  9. 本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
  10. ***************************************************************/
  11. #include "lib_scs.h"
  12. /***************************************************************
  13. 函数名:NVIC_Init
  14. 描 述:NVIC初始化配置
  15. 输入值:Channel:中断通道 、 Priority:中断优先级 、 Cmd:失能或使能
  16. 输出值:无
  17. 返回值:无
  18. ***************************************************************/
  19. void NVIC_Init(NVIC_IRQChannel Channel,NVIC_IRQPriority Priority,TYPE_FUNCEN Cmd)
  20. {
  21. uint32_t tmppriority = 0x00;
  22. if (Cmd != DISABLE)
  23. {
  24. /* Compute the Corresponding IRQ Priority */
  25. tmppriority = NVIC->IP[Channel >> 0x02];
  26. tmppriority &= (uint32_t)(~(((uint32_t)0xFF) << ((Channel & 0x03) * 8)));
  27. tmppriority |= (uint32_t)((((uint32_t)Priority << 6) & 0xFF) << ((Channel & 0x03) * 8));
  28. NVIC->IP[Channel >> 0x02] = tmppriority;
  29. /* Enable the Selected IRQ Channels */
  30. NVIC->ISER[0] = (uint32_t)0x01 << (Channel & (uint8_t)0x1F);
  31. }
  32. else
  33. {
  34. /* Disable the Selected IRQ Channels */
  35. NVIC->ICER[0] = (uint32_t)0x01 << (Channel & (uint8_t)0x1F);
  36. }
  37. }
  38. /***************************************************************
  39. 函数名:SCB_SystemLPConfig
  40. 描 述:配置系统休眠模式
  41. 输入值:LowPowerMode:休眠模式 、 NewState:使能、使能
  42. 输出值:无
  43. 返回值:无
  44. ***************************************************************/
  45. void SCB_SystemLPConfig(SCB_TYPE_SCR LowPowerMode, TYPE_FUNCEN NewState)
  46. {
  47. if (NewState != DISABLE)
  48. SCB->SCR |= LowPowerMode;
  49. else
  50. SCB->SCR &= (uint32_t)(~(uint32_t)LowPowerMode);
  51. }
  52. /***************************************************************
  53. 函数名:SCB_GetCpuID
  54. 描 述:获取CPUID
  55. 输入值:无
  56. 输出值:无
  57. 返回值:32位ID值
  58. ***************************************************************/
  59. uint32_t SCB_GetCpuID(void)
  60. {
  61. return (SCB->CPUID);
  62. }
  63. /***************************************************************
  64. 函数名:SysTick_Init
  65. 描 述:SysTick初始化配置
  66. 输入值:初始化配置结构体地址
  67. 输出值:无
  68. 返回值:无
  69. ***************************************************************/
  70. void SysTick_Init(SYSTICK_InitStruType* SysT_InitStruct)
  71. {
  72. uint32_t temp32 = 0;
  73. SysTick->LOAD = SysT_InitStruct->SysTick_Value;
  74. SysTick->VAL = (uint32_t)0;
  75. if(SysT_InitStruct->SysTick_ClkSource != SysTick_ClkS_Base)
  76. temp32 |= 0x00000004;
  77. else
  78. temp32 &= 0xFFFFFFFB;
  79. if(SysT_InitStruct->SysTick_ITEnable != DISABLE)
  80. temp32 |= 0x00000002;
  81. else
  82. temp32 &= 0xFFFFFFFD;
  83. SysTick->CTRL = temp32;
  84. }
  85. /*************************END OF FILE**********************/