📄 hal_sleep.s51
字号:
// 219 #define UINT32_NDX3 3
// 220 #else
// 221 #define UINT32_NDX0 3
// 222 #define UINT32_NDX1 2
// 223 #define UINT32_NDX2 1
// 224 #define UINT32_NDX3 0
// 225 #endif
// 226
// 227 /* ------------------------------------------------------------------------------------------------
// 228 * Local Variables
// 229 * ------------------------------------------------------------------------------------------------
// 230 */
// 231
// 232 /* HAL power management mode is set according to the power management state.
// 233 */
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 234 static uint8 halPwrMgtMode = HAL_SLEEP_OFF;
??halPwrMgtMode:
DS 1
// 235
// 236 /* stores the sleep timer count upon entering sleep */
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 237 static uint32 halSleepTimerStart;
??halSleepTimerStart:
DS 4
// 238
// 239 /* stores the accumulated sleep time */
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 240 static uint32 halAccumulatedSleepTime;
??halAccumulatedSleepTime:
DS 4
// 241
// 242 /* stores the deepest level the device is allowed to sleep
// 243 * See AN044 - COMBINING POWER MODES
// 244 */
RSEG XDATA_I:XDATA:NOROOT(0)
// 245 static uint8 halSleepLevel = CC2430_PM2;
??halSleepLevel:
DS 1
REQUIRE `?<Initializer for halSleepLevel>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_0:
DS 4
REQUIRE `?<Initializer for __Constant_0>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_64:
DS 4
REQUIRE `?<Initializer for __Constant_64>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_1f:
DS 4
REQUIRE `?<Initializer for __Constant_1f>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_2d:
DS 4
REQUIRE `?<Initializer for __Constant_2d>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_185197:
DS 4
REQUIRE `?<Initializer for __Constant_185197>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_ffe7ae6a:
DS 4
REQUIRE `?<Initializer for __Constant_ffe7ae6a>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_185196:
DS 4
REQUIRE `?<Initializer for __Constant_185196>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_29f:
DS 4
REQUIRE `?<Initializer for __Constant_29f>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_ffffffde:
DS 4
REQUIRE `?<Initializer for __Constant_ffffffde>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_ffffff:
DS 4
REQUIRE `?<Initializer for __Constant_ffffff>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_ffff80:
DS 4
REQUIRE `?<Initializer for __Constant_ffff80>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_ffff7f:
DS 4
REQUIRE `?<Initializer for __Constant_ffff7f>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_22:
DS 4
REQUIRE `?<Initializer for __Constant_22>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_7d:
DS 4
REQUIRE `?<Initializer for __Constant_7d>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_fff:
DS 4
REQUIRE `?<Initializer for __Constant_fff>`
REQUIRE __INIT_XDATA_I
// 246
// 247 #ifdef HAL_SLEEP_DEBUG_POWER_MODE
// 248 static bool halSleepInt = FALSE;
// 249 #endif
// 250
// 251 /* ------------------------------------------------------------------------------------------------
// 252 * Function Prototypes
// 253 * ------------------------------------------------------------------------------------------------
// 254 */
// 255
// 256 void halSleepSetTimer(uint32 timeout);
// 257 uint32 HalTimerElapsed( void );
// 258
// 259 /**************************************************************************************************
// 260 * @fn halSleep
// 261 *
// 262 * @brief This function is called from the OSAL task loop using and existing OSAL
// 263 * interface. It sets the low power mode of the MAC and the CC2430.
// 264 *
// 265 * input parameters
// 266 *
// 267 * @param osal_timeout - Next OSAL timer timeout.
// 268 *
// 269 * output parameters
// 270 *
// 271 * None.
// 272 *
// 273 * @return None.
// 274 **************************************************************************************************
// 275 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 276 void halSleep( uint16 osal_timeout )
halSleep:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function halSleep
// 277 {
FUNCALL halSleep, MAC_PwrNextTimeout
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL halSleep, MAC_PwrNextTimeout
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL halSleep, osalNextActiveTask
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL halSleep, MAC_PwrOffReq
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL halSleep, HalKeyEnterSleep
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL halSleep, HalLedEnterSleep
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL halSleep, halSleepSetTimer
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL halSleep, halSleepSetTimer
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL halSleep, halSleepWait
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL halSleep, halSleepWait
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL halSleep, HalTimerElapsed
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL halSleep, halSleepWait
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL halSleep, HalLedExitSleep
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL halSleep, HalKeyExitSleep
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL halSleep, MAC_PwrOnReq
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
FUNCALL halSleep, osal_adjust_timers
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
MOV A,#-0x10
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 16)
; Saved register size: 16
; Auto size: 5
MOV A,#-0x5
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 21)
MOV A,R2
MOV R6,A
MOV A,R3
MOV R7,A
// 278 uint32 timeout;
// 279 uint32 macTimeout;
// 280 halIntState_t intState, ien0, ien1, ien2;
// 281
// 282 halAccumulatedSleepTime = 0;
MOV DPTR,#__Constant_0
MOV R0,#?V0 + 0
LCALL ?L_MOV_X
MOV DPTR,#??halAccumulatedSleepTime
MOV R0,#?V0 + 0
LCALL ?L_MOV_TO_X
// 283
// 284 /* get next OSAL timer expiration converted to 320 usec units */
// 285 timeout = HAL_SLEEP_MS_TO_320US(osal_timeout);
MOV ?V0 + 4,R6
MOV ?V0 + 5,R7
MOV ?V0 + 6,#0x0
MOV ?V0 + 7,#0x0
MOV DPTR,#__Constant_64
MOV R0,#?V0 + 0
LCALL ?L_MOV_X
MOV R0,#?V0 + 4
MOV R1,#?V0 + 0
LCALL ?L_MUL
MOV DPTR,#__Constant_1f
MOV R0,#?V0 + 4
LCALL ?L_ADD_X
MOV A,#0x5
MOV R0,#?V0 + 4
LCALL ?UL_SHR
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
MOV R0,#?V0 + 4
LCALL ?L_MOV_TO_X
// 286 if (timeout == 0)
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
PUSH DPL
CFI CFA_SP SP+-1
PUSH DPH
CFI CFA_SP SP+-2
MOV DPTR,#__Constant_0
MOV R0,#?V0 + 0
LCALL ?L_MOV_X
POP DPH
CFI CFA_SP SP+-1
POP DPL
CFI CFA_SP SP+0
MOV R0,#?V0 + 0
LCALL ?L_EQ_X
MOV DPTR,#(MAC_PwrNextTimeout & 0xffff)
JNZ ??halSleep_0
// 287 {
// 288 timeout = MAC_PwrNextTimeout();
; Setup parameters for call to function MAC_PwrNextTimeout
MOV A,#((MAC_PwrNextTimeout >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV ?V0 + 2,R4
MOV ?V0 + 3,R5
SJMP ??halSleep_1
// 289 }
// 290 else
// 291 {
// 292 /* get next MAC timer expiration */
// 293 macTimeout = MAC_PwrNextTimeout();
??halSleep_0:
; Setup parameters for call to function MAC_PwrNextTimeout
MOV A,#((MAC_PwrNextTimeout >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV ?V0 + 2,R4
MOV ?V0 + 3,R5
// 294
// 295 /* get lesser of two timeouts */
// 296 if ((macTimeout != 0) && (macTimeout < timeout))
MOV DPTR,#__Constant_0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -