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
24
25 #if defined ( __CC_ARM )
26
27 /* 进入休眠Sleep模式的代码指令,生成这段儿指令的C代码是:
28 void EnterSleepMode(void)
29 {
30 __NOP();__NOP();__NOP();
31 SYS->SLEEP |= (1 << SYS_SLEEP_SLEEP_Pos);
32 }
33 */
34 uint16_t Code_EnterSleepMode[] = {
35 0xBF00, 0xBF00, 0xBF00, 0x2001, 0x0780, 0x6901, 0x2201, 0x4311,
36 0x6101, 0x4770,
37 };
38
EnterSleepMode(void)39 __asm void EnterSleepMode(void)
40 {
41 IMPORT Code_EnterSleepMode
42 PUSH {LR}
43 NOP
44 LDR R0,=Code_EnterSleepMode
45 ADDS R0, R0, #1
46 NOP
47 BLX R0
48 POP {R0}
49 BX R0
50 }
51
52
53 /* 进入休眠Stop模式的代码指令,生成这段儿指令的C代码是:
54 void EnterStopMode(void)
55 {
56 __NOP();__NOP();__NOP();
57 SYS->SLEEP |= (1 << SYS_SLEEP_STOP_Pos);
58 }
59 */
60 uint16_t Code_EnterStopMode[] = {
61 0xBF00, 0xBF00, 0xBF00, 0x2001, 0x0780, 0x6901, 0x2202, 0x4311,
62 0x6101, 0x4770,
63 };
64
EnterStopMode(void)65 __asm void EnterStopMode(void)
66 {
67 IMPORT Code_EnterStopMode
68 PUSH {LR}
69 NOP
70 LDR R0,=Code_EnterStopMode
71 ADDS R0, R0, #1
72 NOP
73 BLX R0
74 POP {R0}
75 BX R0
76 }
77
78 #elif defined ( __ICCARM__ )
79
EnterSleepMode(void)80 __ramfunc void EnterSleepMode(void)
81 {
82 __NOP();__NOP();__NOP();
83 SYS->SLEEP |= (1 << SYS_SLEEP_SLEEP_Pos);
84 }
85
EnterStopMode(void)86 __ramfunc void EnterStopMode(void)
87 {
88 __NOP();__NOP();__NOP();
89 SYS->SLEEP |= (1 << SYS_SLEEP_STOP_Pos);
90 }
91
92 #endif
93