SWM341_sleep.c 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /******************************************************************************************************************************************
  2. * 文件名称: SWM341_sleep.c
  3. * 功能说明: SWM341单片机的Sleep功能驱动库
  4. * 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
  5. * 注意事项:
  6. * 版本日期: V1.0.0 2016年1月30日
  7. * 升级记录:
  8. *
  9. *
  10. *******************************************************************************************************************************************
  11. * @attention
  12. *
  13. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
  14. * REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
  15. * FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
  16. * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
  17. * -ECTION WITH THEIR PRODUCTS.
  18. *
  19. * COPYRIGHT 2012 Synwit Technology
  20. *******************************************************************************************************************************************/
  21. #include "SWM341.h"
  22. #include "SWM341_sleep.h"
  23. #if defined ( __CC_ARM )
  24. /* 进入休眠Sleep模式的代码指令,生成这段儿指令的C代码是:
  25. void EnterSleepMode(void)
  26. {
  27. __NOP();__NOP();__NOP();
  28. SYS->SLEEP |= (1 << SYS_SLEEP_SLEEP_Pos);
  29. }
  30. */
  31. uint16_t Code_EnterSleepMode[] = {
  32. 0xBF00, 0xBF00, 0xBF00, 0x2001, 0x0780, 0x6901, 0x2201, 0x4311,
  33. 0x6101, 0x4770,
  34. };
  35. __asm void EnterSleepMode(void)
  36. {
  37. IMPORT Code_EnterSleepMode
  38. PUSH {LR}
  39. NOP
  40. LDR R0,=Code_EnterSleepMode
  41. ADDS R0, R0, #1
  42. NOP
  43. BLX R0
  44. POP {R0}
  45. BX R0
  46. }
  47. /* 进入休眠Stop模式的代码指令,生成这段儿指令的C代码是:
  48. void EnterStopMode(void)
  49. {
  50. __NOP();__NOP();__NOP();
  51. SYS->SLEEP |= (1 << SYS_SLEEP_STOP_Pos);
  52. }
  53. */
  54. uint16_t Code_EnterStopMode[] = {
  55. 0xBF00, 0xBF00, 0xBF00, 0x2001, 0x0780, 0x6901, 0x2202, 0x4311,
  56. 0x6101, 0x4770,
  57. };
  58. __asm void EnterStopMode(void)
  59. {
  60. IMPORT Code_EnterStopMode
  61. PUSH {LR}
  62. NOP
  63. LDR R0,=Code_EnterStopMode
  64. ADDS R0, R0, #1
  65. NOP
  66. BLX R0
  67. POP {R0}
  68. BX R0
  69. }
  70. #elif defined ( __ICCARM__ )
  71. __ramfunc void EnterSleepMode(void)
  72. {
  73. __NOP();__NOP();__NOP();
  74. SYS->SLEEP |= (1 << SYS_SLEEP_SLEEP_Pos);
  75. }
  76. __ramfunc void EnterStopMode(void)
  77. {
  78. __NOP();__NOP();__NOP();
  79. SYS->SLEEP |= (1 << SYS_SLEEP_STOP_Pos);
  80. }
  81. #endif