📄 usb_pwr.s79
字号:
//////////////////////////////////////////////////////////////////////////////
// /
// IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 10/Nov/2008 11:44:08 /
// Copyright 1999-2005 IAR Systems. All rights reserved. /
// /
// Cpu mode = thumb /
// Endian = little /
// Stack alignment = 4 /
// Source file = D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_Port\sou /
// rce\usb_pwr.c /
// Command line = D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_Port\sou /
// rce\usb_pwr.c -D VECT_TAB_FLASH -D /
// USE_STM3210E_EVAL -lA D:\资料\ST\ST\usb\USBLib\demo /
// s\Virtual_COM_Port\project\EWARMv4\STM3210E-EVAL\Li /
// st\ -o D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_P /
// ort\project\EWARMv4\STM3210E-EVAL\Obj\ -z9 --debug /
// --cpu_mode thumb --endian little --cpu cortex-M3 /
// --stack_align 4 --require_prototypes --fpu None /
// --dlib_config "C:\Program Files\IAR /
// Systems\Embedded Workbench 4.0 /
// Evaluation\arm\LIB\dl7mptnnl8f.h" -I /
// D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_Port\pro /
// ject\EWARMv4\..\..\include\ -I /
// D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_Port\pro /
// ject\EWARMv4\..\..\..\..\library\inc\ -I /
// D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_Port\pro /
// ject\EWARMv4\..\..\..\..\..\FWLib\library\inc\ -I /
// "C:\Program Files\IAR Systems\Embedded Workbench /
// 4.0 Evaluation\arm\INC\" --inline_threshold=2 /
// List file = D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_Port\pro /
// ject\EWARMv4\STM3210E-EVAL\List\usb_pwr.s79 /
// /
// /
//////////////////////////////////////////////////////////////////////////////
NAME usb_pwr
RTMODEL "StackAlign4", "USED"
RTMODEL "__cpu_mode", "__pcs__thumb"
RTMODEL "__data_model", "absolute"
RTMODEL "__endian", "little"
RTMODEL "__rt_version", "6"
RSEG CSTACK:DATA:NOROOT(2)
PUBWEAK `?*?DATA_ID`
??DataTable0 EQU 0
??DataTable1 EQU 0
??DataTable2 EQU 0
??DataTable4 EQU 0
??DataTable5 EQU 0
MULTWEAK ??Enter_LowPowerMode??rT
MULTWEAK ??Leave_LowPowerMode??rT
MULTWEAK ??USB_Cable_Config??rT
PUBWEAK ?init?tab?DATA_I
PUBWEAK ?init?tab?DATA_Z
PUBLIC PowerOff
FUNCTION PowerOff,0203H
LOCFRAME CSTACK, 8, STACK
PUBLIC PowerOn
FUNCTION PowerOn,0203H
LOCFRAME CSTACK, 4, STACK
PUBLIC Resume
FUNCTION Resume,0203H
LOCFRAME CSTACK, 16, STACK
PUBLIC ResumeS
PUBLIC Resume_Init
FUNCTION Resume_Init,0203H
LOCFRAME CSTACK, 8, STACK
PUBLIC Suspend
FUNCTION Suspend,0203H
LOCFRAME CSTACK, 4, STACK
PUBLIC bDeviceState
PUBLIC fSuspendEnabled
CFI Names cfiNames0
CFI StackFrame CFA R13 HUGEDATA
CFI Resource R0:32, R1:32, R2:32, R3:32, R4:32, R5:32, R6:32, R7:32
CFI Resource R8:32, R9:32, R10:32, R11:32, R12:32, R13:32, R14:32
CFI VirtualResource ?RET:32
CFI EndNames cfiNames0
CFI Common cfiCommon0 Using cfiNames0
CFI CodeAlign 2
CFI DataAlign 4
CFI ReturnAddress ?RET CODE
CFI CFA R13+0
CFI R0 Undefined
CFI R1 Undefined
CFI R2 Undefined
CFI R3 Undefined
CFI R4 SameValue
CFI R5 SameValue
CFI R6 SameValue
CFI R7 SameValue
CFI R8 SameValue
CFI R9 SameValue
CFI R10 SameValue
CFI R11 SameValue
CFI R12 Undefined
CFI R14 Undefined
CFI ?RET R14
CFI EndCommon cfiCommon0
Enter_LowPowerMode SYMBOL "Enter_LowPowerMode"
Leave_LowPowerMode SYMBOL "Leave_LowPowerMode"
USB_Cable_Config SYMBOL "USB_Cable_Config"
??Enter_LowPowerMode??rT SYMBOL "??rT", Enter_LowPowerMode
??Leave_LowPowerMode??rT SYMBOL "??rT", Leave_LowPowerMode
??USB_Cable_Config??rT SYMBOL "??rT", USB_Cable_Config
EXTERN Enter_LowPowerMode
FUNCTION Enter_LowPowerMode,0202H
EXTERN Leave_LowPowerMode
FUNCTION Leave_LowPowerMode,0202H
EXTERN USB_Cable_Config
FUNCTION USB_Cable_Config,0202H
EXTERN wInterrupt_Mask
// D:\资料\ST\ST\usb\USBLib\demos\Virtual_COM_Port\source\usb_pwr.c
// 1 /******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
// 2 * File Name : usb_pwr.c
// 3 * Author : MCD Application Team
// 4 * Version : V2.2.0
// 5 * Date : 06/13/2008
// 6 * Description : Connection/disconnection & power management
// 7 ********************************************************************************
// 8 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
// 9 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
// 10 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
// 11 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
// 12 * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
// 13 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
// 14 *******************************************************************************/
// 15
// 16 /* Includes ------------------------------------------------------------------*/
// 17 #include "stm32f10x_lib.h"
// 18 #include "usb_lib.h"
// 19 #include "usb_conf.h"
// 20 #include "usb_pwr.h"
// 21 #include "hw_config.h"
// 22
// 23 /* Private typedef -----------------------------------------------------------*/
// 24 /* Private define ------------------------------------------------------------*/
// 25 /* Private macro -------------------------------------------------------------*/
// 26 /* Private variables ---------------------------------------------------------*/
RSEG DATA_Z:DATA:SORT:NOROOT(2)
// 27 vu32 bDeviceState = UNCONNECTED; /* USB device status */
bDeviceState:
DS8 4
RSEG DATA_I:DATA:SORT:NOROOT(0)
// 28 volatile bool fSuspendEnabled = TRUE; /* True when suspend is possible */
fSuspendEnabled:
DS8 1
REQUIRE `?<Initializer for fSuspendEnabled>`
// 29
// 30 struct
// 31 {
// 32 volatile RESUME_STATE eState;
// 33 volatile u8 bESOFcnt;
// 34 }
RSEG DATA_Z:DATA:SORT:NOROOT(0)
// 35 ResumeS;
ResumeS:
DS8 2
// 36
// 37 /* Extern variables ----------------------------------------------------------*/
// 38 /* Private function prototypes -----------------------------------------------*/
// 39 /* Extern function prototypes ------------------------------------------------*/
// 40 /* Private functions ---------------------------------------------------------*/
// 41
// 42 /*******************************************************************************
// 43 * Function Name : PowerOn
// 44 * Description : USB IP power ON Routine.
// 45 * Input : None.
// 46 * Output : None.
// 47 * Return : USB_SUCCESS.
// 48 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock0 Using cfiCommon0
CFI Function PowerOn
THUMB
// 49 RESULT PowerOn(void)
// 50 {
PowerOn:
PUSH {LR}
CFI ?RET Frame(CFA, -4)
CFI CFA R13+4
// 51 u16 wRegVal;
// 52
// 53 /*** cable plugged-in ? ***/
// 54 USB_Cable_Config(ENABLE);
MOVS R0,#+1
_BLF USB_Cable_Config,??USB_Cable_Config??rT
// 55
// 56 /*** CNTR_PWDN = 0 ***/
// 57 wRegVal = CNTR_FRES;
// 58 _SetCNTR(wRegVal);
LDR.N R0,??DataTable6 ;; 0x40005c40
// 59
// 60 /*** CNTR_FRES = 0 ***/
// 61 wInterrupt_Mask = 0;
// 62 _SetCNTR(wInterrupt_Mask);
// 63 /*** Clear pending interrupts ***/
// 64 _SetISTR(0);
LDR.N R2,??DataTable3 ;; 0x40005c44
MOVS R1,#+1
STR R1,[R0, #+0]
MOVS R1,#+0
STR R1,[R0, #+0]
STR R1,[R2, #+0]
// 65 /*** Set interrupt mask ***/
// 66 wInterrupt_Mask = CNTR_RESETM | CNTR_SUSPM | CNTR_WKUPM;
LDR.N R2,??PowerOn_0 ;; wInterrupt_Mask
MOVS R1,#+7168
STRH R1,[R2, #+0]
// 67 _SetCNTR(wInterrupt_Mask);
STR R1,[R0, #+0]
// 68
// 69 return USB_SUCCESS;
MOVS R0,#+0
POP {PC} ;; return
DATA
??PowerOn_0:
DC32 wInterrupt_Mask
CFI EndBlock cfiBlock0
// 70 }
// 71
// 72 /*******************************************************************************
// 73 * Function Name : PowerOff
// 74 * Description : Handles switch-off conditions
// 75 * Input : None.
// 76 * Output : None.
// 77 * Return : USB_SUCCESS.
// 78 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock1 Using cfiCommon0
CFI Function PowerOff
THUMB
// 79 RESULT PowerOff()
// 80 {
PowerOff:
PUSH {R4,LR}
CFI ?RET Frame(CFA, -4)
CFI R4 Frame(CFA, -8)
CFI CFA R13+8
// 81 /* disable all ints and force USB reset */
// 82 _SetCNTR(CNTR_FRES);
LDR.N R4,??DataTable6 ;; 0x40005c40
MOVS R0,#+1
// 83 /* clear interrupt status register */
// 84 _SetISTR(0);
MOVS R1,#+0
STR R0,[R4, #+0]
LDR.N R0,??DataTable3 ;; 0x40005c44
STR R1,[R0, #+0]
// 85 /* Disable the Pull-Up*/
// 86 USB_Cable_Config(DISABLE);
MOVS R0,#+0
_BLF USB_Cable_Config,??USB_Cable_Config??rT
// 87 /* switch-off device */
// 88 _SetCNTR(CNTR_FRES + CNTR_PDWN);
MOVS R0,#+3
STR R0,[R4, #+0]
// 89 /* sw variables reset */
// 90 /* ... */
// 91
// 92 return USB_SUCCESS;
MOVS R0,#+0
POP {R4,PC} ;; return
CFI EndBlock cfiBlock1
// 93 }
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable3:
DC32 0x40005c44
// 94
// 95 /*******************************************************************************
// 96 * Function Name : Suspend
// 97 * Description : sets suspend mode operating conditions
// 98 * Input : None.
// 99 * Output : None.
// 100 * Return : USB_SUCCESS.
// 101 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock2 Using cfiCommon0
CFI Function Suspend
THUMB
// 102 void Suspend(void)
// 103 {
// 104 u16 wCNTR;
// 105 /* suspend preparation */
// 106 /* ... */
// 107
// 108 /* macrocell enters suspend mode */
// 109 wCNTR = _GetCNTR();
Suspend:
LDR.N R0,??DataTable6 ;; 0x40005c40
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -